JNLP : Java Glossary
home J words local find no local find frame, full screen Google search web for topic jump to footer translate with Babelfish 2007-07-22 by Roedy Green ©1996-2008 Canadian Mind Products
Go to : punctuation 0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z (all)
JNLP
Java Network Launching Protocol. A protocol for installing the JVM and Java apps. Sun has written a specific implementation of it called Java Web Start.

The Java Web Start entry will explain how to set up the *.jnlp to javaws.exe association in your browser and desktop.

JNLP Versions JNLP Validation
Sample JNLP 1.5 The XSD Schemas
Sample JNLP 1.6 The Validator Program
Icons DTD for JNLP
Off/line Snooping
JVM Versions Learning More
Multiple JNLP Files Links

JNLP Versions

JNLP comes in three versions. 1.0, 1.5 and 6.0.

New in version 1.5, JDK 1.5+:

New in Version 6.0, JDK 1.6+:

Sample JNLP 1.5

JNLP (Java Network Launching Protocol) is the specification. You create an XML specification file, e.g. esper.jnlp that looks like this:

Sample JNLP 1.6

Here is a sample JNLP 1.6 file:
Note the use of <java instead of <j2se and <update check="always" policy="always" />.

The ordering of the sections matters. You must do them in the order jnlp, information, security, update, resources, application-desc, applet-desc, component-desc, installer-desc.

Within the resources sections, order is again important: java, j2se, jar, nativelib, extension, property, package.

You nest <java inside <resources. However, you can nest another <resources inside the <java to describe the resources to use for that JVM only.

Icons

Unfortunately Java Web Start, prior to version 1.6, does not support *.png files for the jnlp <icon image, just *.gif and *.jpg. *.pngs are supported in JDK 1.6. It is best to use a 64x64 icon. Unlike *.ico files, you may not specify multiple resolutions. If you used the *.png feature, it would cut off the many users still on Java 1.5. There is no support for *.ico files since they are Windows proprietary, and JWS apps are multi-platform. Note that this image is not in the jar. It has to be downloadable separately before the jar is.

Off/line

If the app needs to be on-line to execute, remove the <offline-allowed/> from the information section. Beware, some websites erroneously document the parameter as <allow-offline/>.

JVM Versions

<j2se version="1.3+" /> Does not mean that JDK version 1.3 or higher will be just fine. It means that any 1.3 version will do except a beta or ea. It does not imply a 1.4 will do. Others claim it does. I have not performed the experiments. To be safe, I insert multiple lines like this:

Every time Sun releases a new JRE, you need to add it to all your JNLP files if you want your clients to be able to access your web start apps with it.

Multiple JNLP files

There are at least two situation where you might use two JNLP files for a single application:
  1. When you have an installer. It needs its own separate JNLP file.
  2. When some jars are signed with one certificate and others with another. You need an JNLP file for each different certificate and its jars.
You chain the secondary JNLP off the main JNLP with a line after the <jar:
<!-- chaining off an auxiliary jnlp file from the main one -->
<extension name="Installer" href="esperinstaller.jnlp"/>

JNLP Validation

You can check that your JNLP file is correctly formed using an XSD Schema originally from Vampqh. You must copy the JNLP 1.0 XSD schema posted below into the current directory as file jnlp1.xsd or jnlp6.xsd then run the Java validation posted below with:
rem Validate a JNLP file
java.exe ValidateJNLP jnlp6.xsd C:\mydir\myapp.jnlp

The XSD Schemas

This JNLP 1.0 schema originaly came from Vampqh. I have modified in slightly.
This JNLP 1.5 schema was mechanically generated by Stylus Studio from the Sun JNLP DTD. I modified it slightly to allow both an application and installer.
This JNLP 1.6 schema was mechanically generated by Stylus Studio from the Sun JNLP DTD. I modified it slightly to correct two syntax errors in the DTD and to allow both an application and installer.

The Validator Program

The above validator is not user friendly. You can get a good idea what it is looking for by reading the XSD file. You would be surprised how many errors you will find.

Unfortunately, Vampqh’s fancier validator, Vanessa, is no longer available.

DTD for JNLP

Sun has posted a and According to Piotr Kobzdaemail Piotr Kobzda there are errors in Sun’s posted JNLP 6.0 DTD, and Andrew Thompsonemail Andrew Thompson concurs.
<!ELEMENT update>
should be:
<!ELEMENT update EMPTY>
and
<!ELEMENT shortcut (desktop? menu?)>
should be:
<!ELEMENT shortcut (desktop?, menu?)>
view

Snooping

One way to learn JNLP tricks is to snoop on the JNLP files of other people’s applications. You can do that most easily by typing at the command prompt:
rem jnlpview.bat viewing a JNLP file.
javaws.exe -viewer
rem then right click on the installed JWS app and click show JNLP file.

Learning More

Sun’s JDK Technote Guide on JNLP syntax : available:
cooktop
DTD
Java Web Start
Validating JNLP with a DTD
XML: JNLP is a type of XML and thus uses XML editing and validation tools
XSD

CMP_homejump to top
CMP logo
feedback Please email your feedback for publication, errors, omissions, broken/redirected link reports
and suggestions to improve this page to Roedy Green : feedback email
made with CSS
HTML Checked!
ICRA ratings logo
mindprod.com IP:[65.110.21.43]
Your face IP:[38.103.63.16] The information on this page is for non-military use only.
You are visitor number 13,175. Military use includes use by defence contractors.
You can get a fresh copy of this page from: or possibly from your local J: drive (Java virtual drive/Mindprod website mirror)
http://mindprod.com/jgloss/jnlp.html J:\mindprod\jgloss\jnlp.html