Java网络启动(Java Web Start (JWS) )可以实现在网络浏览器中运行具备全部特色的Java应用软件Sun公司在年三月发布的Java就已经具备了对JWS的支持自从JSE版本以来JWS就已经成为Java运行时环境(Java Runtime Environment (JRE) )的默认配置不必再单独安装了在这篇文章中我将向您介绍这一重要技术
技术
JWS是与网络浏览器相结合的应用软件当用户点击链接的时候就会指向一个Java网络启动协议(Java Network Launching Protocol (JNLP) )文件然后浏览器自动启动JWS接着下载缓存并运行基于Java技术的应用软件
在JWS背后的技术是JNLP及其API它们是在Java团体进程(Java Community Process)中开发的JWS实际上是JNLP规范的一个参考实现JNLP技术定义了一个标准的文件格式该格式描述了如何调用一个JNLP文件
既然安装链接可以作为普通的HTTP URL的链接那么您就可以通过网页来检查客户端是否安装了JWS您可以在IE中通过以下代码来检查
<SCRIPT LANGUAGE=VBScript>
on error resume next
If isIE = true Then
If Not(IsObject(CreateObject(JavaWebStartisInstalled))) Then
javawsInstalled =
Else
javawsInstalled =
End If
If Not(IsObject(CreateObject(JavaWebStartisInstalled))) Then
javawsInstalled =
Else
javawsInstalled =
End If
If Not(IsObject(CreateObject(JavaWebStartisInstalled))) Then
javawsInstalled =
Else
javawsInstalled =
End If
End If
</SCRIPT>
开发
开发部署在JWS上的软件和开发独立运行的软件在Java 平台上是基本相同的比如程序的起点都是以下的标准代码
public static void main(String[] argv)
然而为了支持网络部署也就是实现自动下载和调用软件并且保证软件在一个安全的沙盒中运行还需要一些额外的考虑包括
应用软件必需作为JAR文件集合来使用
所有的应用软件资源比如文件图片都必需存储在JAR文件中而且它们都必需使用Java 平台的getResource机制来引用
应用软件可以使用Systemexit调用
进行不受限制地访问系统的软件需要通过签名的JAR文件来使用而且JAR文件中所有的项目都必需经过签名
如果软件要运行在一个安全沙盒中那么它必需遵循以下的限制;
不能进行本地磁盘访问
所有的JAR文件都必须从同一个主机下载
只能和下载JAR文件的主机之间建立网络连接
不能安装安全管理器
不能使用本地类库
对系统属性的访问受到限制对于JNLP中定义了的系统属性应用软件可以进行读/写操作并且对于相同的属性集合具备和applet一样的只读权限
安全
JWS是构建于Java 平台之上的Java 平台提供了一个全面的安全架构在Java 版中JWS则提供了更加强大的安全特色比如代码签名
在默认状态下通过JWS调用的应用软件将运行在一个受到限制的环境中(一个沙盒)它们对本地计算资源的访问比如存储设备和本地网络是有限的这样JWS就保证了下载的潜在的不可信任的软件不会危及到本地文件或网络
当然应用程序也可以请求不受限制的本地系统访问在这种情况下当该软件第一次调用时JWS将显示安全警告对话框安全警告的内容包含软件开发者的信息
如果一个应用软件包含了一个或多个经过签名的JAR文件JWS将会验证这些JAR文件在签名后是否发生过变化如果数字签名的认证失败那么JWS就不会运行该软件因为它们已经被第三方修改过了通过在JNLP文件中添加以下的设置一个应用软件可以请求完整的权限
<security>
<allpermissions/>
</security>
JNLP文件
JNLP是一个和JWS紧密相关的概念它经常可以和术语网络启动相互替代使用实际上JNLP是一个规定了JWS应用软件如何启动的协议JNLP中的包含了诸如JAR包文件的位置应用软件主要类的名称以及程序的其它一些参数在适当配置的浏览器中JNLP文件是传递给JRE的然后JRE将会下载应用软件到用户的机器上并开始执行
一个JNLP文件不包含任何二进制数据实际上它包含的URL指向所有的二进制数据和二进制代码资源这些文件还可以指向其他的JNLP文件它们被称为扩展描述符一个扩展描述符通常描述了运行软件所必需的组件在扩展描述符中描述的资源将会成为应用软件类路径的一部分这样常用的功能只需要描述一次即可以下的例子是一个常见的JNLP文件
<?xml version= encoding=UTF?>
<jnlpcodebase=_app>
<information>
<title>Hello world!</title>
<vendor>My Web Company</vendor>
<icon />
<offlineallowed/>
</information>
<resources>
<jse version=+/>
<jar />
</resources>
<applicationdesc mainclass=comhelloworldHello/>
</jnlp>
这个JNLP文件描述了如何调用名为Hello的程序在JNLP文件中指定了需要或更高版本的Java来运行该程序同时还有一些与程序相关的信息这些信息都会在用户下载的过程中显示
如果您希望了解更详细的JNLP协议和文件格式可以参考这个官方规范
结论
JWS提供了一种与平台无关的安全的而且强大的部署技术开发者只需要将应用软件部署在网络服务器上就可以为最终用户提供全部的功能而最终用户也只需要使用网络浏览器就可以运行所需的应用软件而且永远是最新的版本
JWS的一个主要优点是它克服了Java插件和不同Java虚拟机的兼容性问题但是使用网络启动的程序却不能像applet一样简单地和浏览器进行通讯
查看本文国际来源