In computing, Java Web Start is a framework developed by Sun Microsystems that allows
users to start application software for the Java Platform directly from the Internet using
a web browser.
Some key benefits of this technology include seamless version updating for globally distributed
applications and greater control of memory allocation to the Java virtual machine.
Functionality Unlike Java applets, Web Start applications
do not run inside the browser.
However, by default they run in the same sandbox as applets, with several minor extensions
like allowing to load and save the file that is explicitly selected by the user through
the file selection dialog.
Only signed applications can be configured to have additional or even all permissions.
Web Start has an advantage over applets in that it overcomes many compatibility problems
with browsers' Java plugins and different JVM versions.
On the other hand, Web Start programs are no longer part of the web page.
They are independent applications that run in a separate frame.
Web Start can also launch unmodified applets that are packaged inside .jar files, by writing
the appropriate JNLP file.
This file can also pass the applet parameters.
Such applets also run in a separate frame.
Applet launcher may not support some specific cases like loading class as resource.
Like applets, Java Web Start is cross platform.
Implementation
The developer prepares a special XML file with JNLP extension.
This file describes the application requirements, code location, parameters and additional permissions.
The browser downloads this file as any other and opens it with Web Start tool.
Web Start tool downloads all necessary resources and launches the application.
Java Web Start provides a series of classes in the javax.jnlp package which provide various
services to the application.
Sun designed most of these services with the aim of allowing carefully controlled access
to resources while restricting the application to authorized operations.
Sun introduced version 1.0 of Web Start in March 2001, while 64-bit Windows support was
added only in Java 6.
Since J2SE 1.4 Web Start comes as a default part of Java Runtime Environment called javaws,
computer administrators no longer have to install it separately.
Java Network Launching Protocol Programmers often speak of the Java Network
Launching Protocol interchangeably with the term "Web Start".
The JNLP protocol, defined with an XML schema, specifies how to launch Java Web Start applications.
JNLP consists of a set of rules defining how exactly to implement the launching mechanism.
JNLP files include information such as the location of the jar package file and the name
of the main class for the application, in addition to any other parameters for the program.
A properly configured browser passes JNLP files to a Java Runtime Environment which
in turn downloads the application onto the user's machine and starts executing it.
The development of JNLP took place under the Java Community Process as JSR 56.
It includes the original 1.0 release, the subsequent 1.5 maintenance release, and as
of 2006, the pending 6.0 maintenance release.
Important Web Start features include the ability to automatically download and install a JRE
in the case where the user does not have Java installed, and for programmers to specify
which JRE version a given program needs in order to execute.
The user does not have to remain connected to the Internet to execute the downloaded
programs, because they execute from a locally maintained cache.
Updates of the software download from the Web and become available when the user has
a connection to the Internet, thus easing the burden of deployment.
Any computer user can use JNLP simply by installing a JNLP client.
The installation can occur automatically such that the end-user sees the client launcher
downloading and installing the Java application when first executed.
JNLP works in a similar fashion to how HTTP/HTML works for the web.
For rendering an HTML webpage, after the user clicks on a weblink, the browser submits a
URL to a webserver, which replies with an HTML file.
The browser then requests the resources referred to by this file, and finally renders the page
once it has received enough information.
Page rendering usually starts before all resources have downloaded; some resources not critical
to the layout of the page can follow on afterwards.
JNLP mirrors this process; in the same way that a Web browser renders a webpage, a JNLP
client "renders" a Java app.
After the user clicks on a weblink, the browser submits an URL to a webserver, which replies
with a JNLP file for the application.
The JNLP client parses this file, requests the resources specified, waits for the retrieval
of all required resources, and then launches the application.
The JNLP file can list resources as "lazy", which informs the JNLP client that the application
does not need those resources to start, but can retrieve them later on when/if the application
requests them.
Example The example below gives a simple JNLP file
to launch the applet, specifying code base, source, main class and window size.
Such file contains all necessary references and is self-sufficient to launch the application.
As no permissions are requested, the code will run in a sandbox.
JNLP also states that this application can run offline and should be updated as a background
process.
Pack200 compression To reduce the size of a Java Web Start application
Sun Microsystems introduced a compression system called Pack200 in Java 1.5.0.
It can compress a large jar file to one-ninth of its original size if it contains only Java
classes.
Java Web Start has supported Pack200 since it first appeared, but initially this feature
required server-side cooperation and a certain amount of expertise to set up.
When Sun introduced Java SE 6u10, Pack200 support became available without the need
for special server support.
Application designers can enable or disable this feature within JNLP files.
On slow connections Pack200 gives a performance boost in application startup time and download
time.
Signed Web Start applications By default, Java Web Start applications run
"restricted", which means that they do not have access to some system resources such
as local files.
But publishers can remove these restrictions by signing their Web Start applications with
the jarsigner tool that comes with the JDK.
Free alternatives Java Web Start is not part of OpenJDK and
is proprietary.
The open-source IcedTea project provides an alternative JNLP implementation in IcedTea-Web.
Well-known applications ArgoUML – an UML diagramming application.
CrossFTP – an FTP client and server.
Elluminate Live – a web conferencing / virtual classroom program.
Ganymede – a GPL-licensed network directory management system
Genie Workbench – a set of film production automation tools.
Genevestigator, access engine to the curated bioinformatical database.
Jake2 – A Java port of Quake 2.
JOSM – The Java OpenStreetMap editor.
JabRef a reference management software that uses BibTeX as its native format
muCommander A file Manager and Norton Commander clone with SSH and ftp features
PowerTeacher – a gradebook program for student scores: part of the PowerSchool student information
system used by schools.
PoxNora – a 3/4 perspective, turn-based strategy, collectible card game.
Wurm Online – a 3D Massively Multiplayer Online Fantasy Simulator.
See also
Java applets, another Java application deployment technology.
Zero Install, a similar system which works for non-Java applications.
ClickOnce, Microsoft .NET's similar framework.
RUNZ.
References
External links Java Web Start product page
Java Web Start and JNLP at DMOZ Deploying Software with JNLP and Java Web
Start Java Web Start Developer Guide
JSR 56: Java Network Launching Protocol and API
Startdirectory Connect and Work Java Web Start tutorial
Getting Started with Java Web Start JNLP implementations other than Sun's reference
implementation: Netx
IcedTea-Web OpenJNLP
xito