Deploying a Java Web Start Application

To deploy your Java Web Start application, first compile the source code, package it as a JAR file, and sign the JAR file.

Java Web Start applications are launched by using the Java Network Launch Protocol (JNLP). Hence, you must create a JNLP file to deploy your application.

The Deployment Toolkit script contains useful JavaScript functions that can be used to deploy Java Web Start applications on a web page.

If you are unfamiliar with these deployment technologies, review the Deployment In-Depth lesson before proceeding.

Here are some step-by-step instructions to package and deploy your application. The Dynamic Tree Demo application is used to illustrate the deployment of Java Web Start applications. You might want to set up build scripts to execute some of the following steps.

Click the following Launch button to launch the Dynamic Tree Demo application.

A browser with JavaScript enabled is required for this page to operate properly.


If you don't see the example running, you might need to enable the JavaScript interpreter in your browser so that the Deployment Toolkit script can function properly.

  • Compile your application's Java code and make sure that all class files and resources such as images are in a separate directory.

In the Dynamic Tree Demo application, the compiled classes are placed in the build/classes/webstartComponentArch directory.

  • Create a text file that contains any JAR file manifest attributes that your applet needs.

For the DynamicTree Demo applet, create a file named mymanifest.txt in the build/classes directory, and add the Permissions , Codebase , and Application-Name attributes. The applet does not require access to the user's system resources, so use sandbox for the permissions. Use the domain from which you will load the sample for the code base, for example, . Add the following attributes to the mymanifest.txt file.

Permissions: sandbox
Application-Name: Dynamic Tree Demo

Other manifest attributes are available to restrict an applet to using only trusted code, and to provide security for applets that need to make calls between privileged Java code and sandbox Java code, or have JavaScript code that calls the applet. See the Enhancing Security with Manifest Attributes lesson to learn more about the manifest attributes that are available.

  • Create a JAR file containing your application's class files and resources. Include the manifest attributes in the mymanifest.txt file that you created in the previous step.

For example, the following command creates a JAR file with the class files in the build/classes/webstartComponentArch directory and the manifest file in the build/classes directory.

% cd build/classes
% jar cvfm  DynamicTreeDemo.jar  mymanifest.txt webstartComponentArch

See the Packaging Programs in JAR Files lesson to learn more about creating and using JAR files.

  • Sign the JAR file for your applet and time stamp the signature. Use a valid, current code signing certificate issued by a trusted certificate authority to provide your users with assurance that it is safe to run the applet.

See the Signing JAR Files lesson for more information.

If you want to use a signed JNLP file for security, create the JNLP file as described in the next step and include it in the JAR file before the JAR file is signed. See Signed JNLP Files in the Java Platform, Standard Edition Deployment Guide for information.

  • Create a JNLP file that describes how your application should be launched.

Here is the JNLP file that is used to launch the Dynamic Tree Demo application. Permissions are not requested for this application so it runs in the security sandbox. The source for dynamictree_webstart.jnlp follows:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase=
        <title>Dynamic Tree Demo</title>
        <vendor>Dynamic Team</vendor>
        <!-- Application Resources -->
        <j2se version="1.7+"
        <jar href="DynamicTreeDemo.jar"
            main="true" />

         name="Dynamic Tree Demo Application"
     <update check="background"/>

Structure of the JNLP File describes the JNLP file syntax and options.


The codebase and href attributes are optional when deploying Java Web Start applications that will run on at least the Java SE 6 update 18 release or later. You must specify the codebase and href attributes when deploying Java Web Start applications that will run with previous releases of the Java Runtime Environment software.

  • Create the HTML page from which your application will be launched. Invoke Deployment Toolkit functions to deploy the Java Web Start application.

In the example, the Dynamic Tree Demo application is deployed in JavaWebStartAppPage.html.

    <!-- ... -->
    <script src=
        // using JavaScript to get location of JNLP
        // file relative to HTML page
        var dir = location.href.substring(0,
        var url = dir + "dynamictree_webstart.jnlp";
        deployJava.createWebStartLaunchButton(url, '1.7.0');
    <!-- ... -->

If you are not sure whether your end users will have the JavaScript interpreter enabled in their browsers, you can deploy the Java Web Start application directly by creating a link to the JNLP file as follows:

<a href="/absolute path to JNLP file/dynamictree_webstart.jnlp">Launch Notepad Application</a>

If you deploy the Java Web Start application with a direct link, you cannot take advantage of the additional checks that the Deployment Toolkit functions provide. See Deploying a Java Web Start Application in the Deployment In-Depth lesson for details.

  • Place the application's JAR file, JNLP file, and HTML page in the appropriate folders.

For this example, place DynamicTreeDemo.jar , dynamictree_webstart.jnlp , and JavaWebStartAppPage.html in the same directory on the local machine or a web server. A web server is preferred. To run from the local machine, you must add your application to the exception site list, which is managed from the Security tab of the Java Control Panel.

  • Open the application's HTML page in a browser to view the application. Agree to run the application when prompted. Check the Java Console log for error and debugging messages.

Download source code for the Dynamic Tree Demo example to experiment further.