Trail: Deployment
Lesson: Deployment In-Depth
Section: Deployment Best Practices
Reducing the Download Time
Home Page > Deployment > Deployment In-Depth

Reducing the Download Time

Rich Internet applications (RIAs) are downloaded from a web site when the user tries to access them. (RIAs can be cached after the initial download to improve performance). The time taken to download a RIA depends on the size of the RIA's JAR file. Larger JAR files take longer to download.

You can reduce the download time of your RIA by applying the following techniques:

pack200 compression for signed and unsigned RIAs is discussed in greater detail in this topic.

Compressing the JAR File for an Unsigned RIA

The following steps describe how to create and deploy a compressed JAR file for an unsigned RIA.

  1. Compress the JAR file of your RIA.
    // compresses DynamicTreeDemo.jar to produce DynamicTreeDemo.jar.pack.gz
    pack200 DynamicTreeDemo.jar.pack.gz DynamicTreeDemo.jar
    
  2. Set the jnlp.packEnabled property to true in the RIA's JNLP file.
    <resources>    
        <j2se version="1.6+"
            href="http://java.sun.com/products/autodl/j2se"
                  max-heap-size="128m" />
        <jar href="DynamicTreeDemo.jar" main="true"/>
        <property name="jnlp.packEnabled" value="true"/>
        ...
        ...
    </resources>
    

Compressing and Signing RIA JAR File

The following steps describe how to create and deploy a compressed JAR file for a signed RIA. See the topic, Signing JAR Files Only When Necessary, to understand the impact of signing JAR files.

  1. Normalize the JAR file using the --repack option.

    This step ensures that the security certificate and JAR file will pass verification checks when the RIA is launched.

    pack200 --repack DynamicTreeDemo.jar
    
  2. Sign the normalized JAR file.
    jarsigner -keystore myKeyStore DynamicTreeDemo.jar me
    
    where myKeyStore is the name of the keystore and me is the alias for the keystore.
  3. Pack the signed JAR file
    pack200 DynamicTreeDemo.jar.pack.gz DynamicTreeDemo.jar    
    
  4. Set the jnlp.packEnabled property to true in the RIA's JNLP file.
    <resources>    
        <j2se version="1.6+"
            href="http://java.sun.com/products/autodl/j2se"
                  max-heap-size="128m" />
        <jar href="DynamicTreeDemo.jar" main="true"/>
        <property name="jnlp.packEnabled" value="true"/>
        ...
        ...
    </resources>
    

When the jnlp.packEnabled property is set in the JNLP file, the Java Plug-in software looks for the compressed JAR file with the .pack.gz extension (for example, DynamicTreeDemo.jar.pack.gz). If found, the Java Plug-in software automatically unpacks and loads the JAR file. If a file with the .pack.gz extension is not found, then the Java Plug-in software attempts to load the regular JAR file (for example, DynamicTreeDemo.jar).


Note: 

You need to deploy your RIA on a web server to test the jnlp.packEnabled property.



Problems with the examples? Try Compiling and Running the Examples: FAQs.
Complaints? Compliments? Suggestions? Give us your feedback.

Previous page: Deployment Best Practices
Next page: Avoiding Unnecessary Update Checks