Java Deployment in J2SE 5.0
Java Deployment is a term that collectively represents the set of deployment technologies available in J2SE, including Java Web Start for JNLP application deployment, Java Plug-in for Java applet deployment, JDK/JRE installer, Java Update, and many others. Let's have a quick look to see what new features and enhancements are available in Java Deployment in J2SE 5.0 (aka Tiger) for your next deployment.
The common theme across all the new features and enhancements in various deployment technologies in Tiger is Ease-of-Deployment. Specifically, the primary motivation behind adding many new deployment features and enhancements is to simplify your life as a deployer.
For Java Web Start and Java Plug-in, developers told us that they wanted a more consistent deployment model between these products. Moreover, we received many feature requirements for enterprise deployment support, better networking support, security enhancements, desktop integration improvements, etc. Obviously, we must have a robust and extensible architecture if we are to continue evolving these deployment technologies, but we already reached saturated points in various subsystems that made feature extension difficult. Thus, we decided to rearchitecture Java Web Start and Java Plug-in in J2SE 5.0 to ensure there is a good foundation to evolve our deployment platforms going forwards. After the rearchitecture, ~70% of Java Web Start and Java Plug-in are supported by a common set of subsystems, including configuration, security, networking, download, etc. It does not only make many of the existing features behave more consistently across deployment platforms, but it also allows us to add features and enhancements in a rapid rate that has not been seen before.
Why does it matter to you? As a developer and a deployer, these changes will enable you to develop and deploy Java applets and JNLP applications more easily and avoid many deployment surprises. Let's take a more detailed look at some of the new deployment features and enhancements introduced in J2SE 5.0.
Configuration (for Java Web Start and Java Plug-in)
To make configuration customization easier, Java Web Start and Java Plug-in now share a configuration infrastructure. Users only need to customize their settings once, and the affected configuration would be applied to both products. We also provide a Java Control Panel to help users easily customize their configuration.
Moreover, to enable flexible configuration customization, Java Web Start and Java Plug-in expose a variety of configuration options, e.g. proxy settings, certificate stores, security policies, etc. These options allow users and administrators to have more controls over their deployments.
Futhermore, to make configuration deployment more manageable, Java Web Start and Java Plug-in support enterprise configuration and lock-down. The feature is very useful in enterprise deployment, because it enables administrators to provide default values of selected set of configuration settings for users in the enterprise, and it also allows administrators to lock-down selected set of configuration settings altogether to prevent users from customization.
Security Enhancements (for Java Web Start and Java Plug-in)
To allow web servers to determine the identification of the client, HTTPS client authentication is now fully supported by Java Web Start and Java Plug-in. If your applications connect to a server that requires client authentication, your users will be prompted to select a client certificate available on the system.
Many companies used the browser keystore as a way to distribute certificates and keys to be used by their internal applications. To make distribution of certificates and keys easier for Java applications, Java Web Start and Java Plug-in now support browser keystore in Internet Explorer and Mozilla. Certificates and keys in the browser keystore are used for signature signing verification, HTTPS server authentication, and HTTPS client authentication. If the certificates and keys are on the smartcards, they are also recognized by Java Web Start and Java Plug-in if they are exposed in the browser keystore.
To avoid deployment surprise due to expired certificate, Java Web Start and Java Plug-in now support signature timestamp. Consider the following situation: an application is signed without signature timestamp and is rolled out for mass deployment, and the certificate is expired afterwards. In this case, this application would be considered to be signed by an expired certificate, and your users may be present with security dialog that indicates the certificate has expired when your users try to run the application. On the other hand, with signature timestamp support, developers may generate a timestamp along with the signature when the applet or application is signed. Java Web Start and Java Plug-in will consider that the application is properly signed if it has a valid signature timestamp even though the certificate has expired at time-of-deployment.
Download Reduction (for Java Web Start and Java Plug-in)
Pack200 is a hyper-compression technology defined in JSR 200, and it achieves approximately 1-to-9 compression ratio for JAR. To minimize application download size, Java Web Start and Java Plug-in support HTTP compression and Pack200 compression for JAR download. If a server returns gzip-compressed or Pack200-compressed JAR during JAR download, Java Web Start and Java Plug-in will uncompress these files automatically.
Networking Improvements (for Java Web Start)
Java Web Start now supports SOCKSv4 and SOCKSv5, in additional to support for HTTP, HTTPS and FTP. Moreover, Java Web Start also fully support automatic proxy script on Windows.
To allow JNLP applications to take advantages of session management, Java Web Start now provides build-in cookie support in HTTP and HTTPS connections.
JNLP 1.5 and Desktop Integration (for Java Web Start)
We have added many enhancements in the JNLP 1.5 specification implemented by Java Web Start in J2SE 5.0. First, the version-id syntax has been extended, so developers have more flexibility in specifying version-range. Moreover, the "java-vm-args" has been added to support various "safe" VM options for your JNLP deployment.
To improve desktop integration support, developers now have more controls over how their JNLP applications are integrated through shortcuts creation, file extensions and MIME association, and related content integration in the start menu. On Windows, Java Web Start also automatically integrates downloaded JNLP applications with the "Add/Remove Programs" in the Windows Control Panel, so users may uninstall any JNLP application directly from the Windows Control Panel.
To allow JNLP application to run as a singleton, a new javax.jnlp.SingleInstanceService was introduced into the JNLP APIs. In addition, there are various minor API enhancements as well.
To allow JNLP application to be deployed from a different source, Java Web Start now contains an import facility. This can be used for CD installs, where code is initially loaded from one location and then updated from another. It can also be used to pre-install applications and libraries in either the user or system cache without running the applications.
User Experience (for Java Web Start)
The major change was the elimination of Java Web Start Application Manager. Having a separate application to manage downloaded JNLP applications is important, but we believe that the most natural way to launch JNLP applications is through either the desktop shortcut or JNLP link in the browsers. The majority of the functionality of the Application Manager is now contained in the Java Control Panel.
We have also beefed up the debugging support in Java Console in Java Web Start similar to the one already available in Java Plug-in, so developers may debug their applications more easily.
User Experience (for Java Plug-in)
We have added a new animation to provide better feedback to end users when the applet is loaded. If you run applets using Java Plug-in in Internet Explorer, Mozilla, or Firefox, you will see a new animation appear in the applet whitebox area during applet loading.
Improvements in JRE/JDK Installer and Java Update
The main improvements are better proxy support on Windows 2003 as well as authenticated proxy support for all Windows platforms. Also, we have further reduced the minimal download size of the JRE 5.0 online installer compared to 1.4.2, despite there are many new 5.0 feature.
As you could see, the list of improvements in deployment in J2SE 5.0 is very long, and there are still many features and enhancements I did not cover in this blog. Nonetheless, I hope I have given you a high level overview of the new deployment features and enhancements available in J2SE 5.0, so you may leverage these new features and enhancements in your next deployment.
o Which are the new deployment features in J2SE 5.0 you like?
o Which are the new deployment features in J2SE 5.0 you plan to use in your next deployment?
o How will these new deployment features improve your life as a deployer?
Let me know.
Note: Some of you may also be interested to know about what's coming in Mustang, and I will talk about "Java Deployment in J2SE 6.0" in an upcoming blog. Stay tuned.