Ähnlich wie bei Applets bietet auch Java WebStart ein webzentriertes Anwendungsmodell, das ohne Softwareverteilung auskommt und bei dem Updates transparent und inkrementell zur Verfügung stehen. Zusätzlich steht Nutzern der WebStart Technologie jedoch eine sinnvolle Standard-API zur Verfügung, die weit über die Möglichkeiten von Applets hinausgeht. Insgesamt bietet WebStart somit das Beste aus beiden Varianten – ein leichtgewichtiger Ausbringungsprozess, der trotzdem die Einschränkungen der Anwendung gering hält.

Obwohl WebStart-Applikationen im Regelfall über den Browser gestartet werden sind sie doch weit weniger stark mit diesem verwoben als Applets es sind. Dies reduziert Komplexität und Risiko, da eine (zumeist unberechenbare) Komponente wegfällt. Die API bietet darüber hinaus Möglichkeiten wie den SingleInstanceService, der es erlaubt, Dateien in eine laufende Instanz zu laden – auch aus dem Browser.

Das Auslieferungspaket enthält, wie in „Web-basierte Beispiele“ beschrieben, eine vollständige WebStart-Demo-Applikation. Diese startet im Hintergrund einen eingebetteten WebServer, der die benötigten JNLP Dateien auf Anfrage aus einer JNLP-Template-Datei erstellt. Zu diesem Zweck wird die FreeMarker Template Engine verwendet.

Im Folgenden wird das verwendete JNLP-Template abgedruckt. Anweisungen, die mit <# beginnen, werden durch die Engine verarbeitet und anhand der Template-Regeln durch konkrete Werte ersetzt. Gleiches gilt für Variablen, die durch ${Variablenname} gekennzeichnet werden. Auf diesem Weg erhält man die Möglichkeit, dynamische Werte, die erst zur Laufzeit bekannt sind (also zum Beispiel die URL eines zur Anzeige bestimmten Dokuments), in die JNLP-Datei zu injizieren. Genauere Informationen zur FreeMarker Template Engine finden sich im Internet unter http://freemarker.sourceforge.net/

<#-- this file is a template file to be used with the FreeMarker Template engine.
  Anything starting with "<#" is a freemarker template and will be replaced for
  real XML by the engine. As a special case, "<#--" represents a freemarker comment.
  It will be ignored during processing and will not make it into the resulting file.
  Any ${...} names are variables for FreeMarker.-->

<#-- ${codebase} is the URL from which jar files should be loaded -->
  <jnlp spec="1.0+" codebase="${codebase}">


	<information>
		<title>jadice document platform ${project.version}</title>
		<vendor>levigo holding gmbh</vendor>
		<description>jadice document platform webstart demonstration</description>

		<icon href="demo-resources/res/jip.png" />
		<offline-allowed />
	</information>

	<security>
		<all-permissions />
	</security>
	<resources>
	  <!-- specify Java VM Version to use, as well as Xmx value -->
		<j2se version="1.6.0+" max-heap-size="512m"/>
	  <!-- specify classpath elements -->
		<jar href="lib/jadice-documentplatform-all.jar"/>
		<jar href="lib/jadice-appbase.jar"/>
		<jar href="lib/jadice-demo-client.jar"/>
		<jar href="lib/jadice-demo-jnlp.jar"/>
		<jar href="lib/demo-license.jar"/>
	</resources>
	<application-desc main-class="JadiceJNLPDemoApplication">
	  <!-- using <argument>-tags, it is possible to supply args to the main method -->
	  <#-- If a document exists, add an argument. Running demo application
	  will check for such an argument and load document specified. -->
		<#if document??>
		<argument>documentURL=${codebase}/demo-docs/${document}</argument>
		</#if>
	</application-desc>
</jnlp>

[jadice document platform Version 5.4.2.13: Dokumentation für Entwickler. Veröffentlicht: 2020-04-08]
loading table of contents...