最近看了些java web start的文章,写下体会,大家共享。
Java web start是一个与Web浏览器相关的应用。当用户点击指向一个特定启动文件(JNLP文件)的超级连接时,将促使Web浏览器启动Java Web Start,Java Web Start将自动下载、缓存以及运行给定基于Java技术的应用。这整个过程除了最初的点击以外,将不需要任何的用户干预。
从技术的角度来看,Java Web Start技术有多种关键优点,使之成为进行应用部署的平台。
1. Java Web Start技术是专门用来启动J2SE(Java 2 SE platform)开发的应用。但个应用可以在一个Web服务器上开发,并且能配置在其他各种平台上,包括Windows 98/NT/2000/ME/XP, Linux, Solaris操作系统环境。Java平台已经被证实是高效,多用途的开发平台,通过最少化开发和测试成本来节省成本。
2. Java Web Start支持J2SE(Java 2 platform, Standard Edition)的多个修正版本。这样的话,使得一个应用可以请求它所需平台的特定版本,例如J2SE1.4.0。多个应用可以同时运行不同平台版本下,而不会引起冲突,如果一个应用需要客户机系统上没有安装的平台版本的话,Java Web Start能够自动下载并安装相应平台版本。
3. Java Web Start允许在浏览器环境之外启动应用。如果不方便或者不可能通过浏览器启动的条件下,能够对应用进行离线运行。应用程序也能够通过桌面快捷方式来启动,这样将使得启动一个基于Web部署的应用程序象启动本地应用程序一样简单。
4. Java Web Start继承了Java平台的安全性的优点。Java Web Start技术下的应用在缺省情况下,将在一个保护环境下运行(即沙箱sandbox),严格限制了对本地磁盘系统和网络资源的访问。这将允许用户安全地运行来源于不可信区域的应用程序,而不用担心会破坏本地安全环境。
5. 用Java Web Start启动的应用程序将缓存在本地。这样的话,使得一个已经下载的应用程序等同于传统意义上的已安装应用程序。Java Web Start的支持技术是Java Network Launching Protocol & API (JNLP)-Java网络启动协议。此技术当前是通过Java Community Process (JCP)进行开发的。Java Web Start 是JNLP规范的参考实现(reference implementation,RI)。JNLP技术其中一点定义了描述怎样通过呼叫一个JNLP文件来启动一个应用程序的一个标准文件格式。
基于web的解决方案已经成为交付客户机/服务器应用程序的标准,开发人员扩展web的技术边界,以寻找解决方案,applet看起来是最佳方案,因为他们交付非常强大的特性集,并且可以嵌入到java支持的web浏览器中。applet仍需要大量的下载时间。
java web start基于java网络启动协议(Java Network Launch Protocol,JNLP)以及java2平台。java web start在java1.4中作为一个标准组件引入。由于这一唯一体系结构特性,因此只需单击一下,就可以从web浏览器中下载需要启动的应用程序。单击的链接就是JNLP文件。
下面通过例子说明java web start。
首先列出需要的文件: test.jar,test.html,test.jnlp需要部署到web服务器中.
test.java需要编译并打包成jar文件。
下面就要对其打包成jar文件,具体步骤如下:
1.在NodePad下编写一个清单文件:
文件名: Mymoon.mf
Manifest-Version:1.0
Main-Class:Example7_21
2.生成jar文件:
d:/test/jar cfm test.jar Mymoon.mf Example7_21.class WindowList.class
其中d:/test表示文件目录,test.jar表示要生成的jar文件名
下面就要编写jnlp文件(test.jnlp)了:
<?xml version="1.0" encoding="utf-8"?>
<jnlp
spec="1.0+"
codebase=http://localhost:8080/webstart
href="test.jnlp">
<information>
<title>awt</title>
<vendor>zb</vendor>
<homepage href="http://localhost:8080/webstart/test.htm" />
<description>Gaem</description>
<offline-allowed/>
</information>
<security><all-permissions/>
</security>
<resources>
<j2se version="1.6"/>
<jar href="test.jar"/>
</resources>
<application-desc main-class="Example7_21"/>
</jnlp>
解释一下该文件:<codebase>用作一个定位web服务器上资源的基本目录,href属性用来指向jnlp文件,提供应用程序的一般信息,<offline-allowed>属性表示应用程序可以离线使用,如果不提供此属性,那么必须先连接网络后才能启动该应用程序。
java web start的安全性与applet相同,即它是受限制的,除非另行设置。
<resources>元素定义需要正确运行的属性,<j2se>表示运行的java平台,<jar>属性告诉java web start需要哪些类来运行程序。可以使用多个标签,
最后是<application-desc>,它指示java web start运行主类。
下面写出运行入口即test.html
运行后,单击链接就看到了。
注意:有时候需要进行安全认证,用jdk自带的keytool工具等,在网上搜一下就可以了,有时间我可以补上。
注意:
Java Web Start 充分利用了已经存在的Internet技术,例如HTTP协议和Web服务器,这使得已存在的用于部署基于HTML内容的基础系统能够重用来使用Java Web Start部署基于Java技术的应用程序。为了在客户机上部署你的应用,你必须确保包含应用程序的所有文件能够通过Web服务器进行访问。这意味着你必须拷贝一个或者多个与JNLP文件相一致的jar文件到你的Web服务器目录中。使Web站点支持Java Web Start的设置类似于部署基于HTML的内容文件。唯一需要注意的是为Web服务器呗指一种新的MIME类型。
1. 配置Web服务器使之使用Java Web Start MIME类型
配置Web服务器,使所有的以.jnlp为扩展名的文件设置为application/x-java-jnlp-file MIME 类型。多数Web浏览器根据从Web服务器返回内容的MIME类型来决定怎样去处理特定的内容。为了让Web浏览器调用Java Web Start,必须让服务器对jnlp文件返回application/x-java-jnlp-file MIME 类型。每个Web服务器都有增加MIME类型的方法。对于Apache Web 服务器,必须增加以下行到.mime.types配置文件中:application/x-java-jnlp-file。JNLP对于器她服务器,请核对相关文档。如websphere