科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道使用JWS部署全功能软件

使用JWS部署全功能软件

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Java Web Start(JWS)让你可以在网页浏览器上轻轻一点,立刻就调出一个功能全面的Java软件。

作者:techrepublic.com.com 2006年11月17日

关键字: JWS Java平台 浏览器 安全管理

  • 评论
  • 分享微博
  • 分享邮件
Java Web Start(JWS)让你可以在网页浏览器上轻轻一点,立刻就调出一个功能全面的Java软件。Sun在2001年3月介绍了framework 1.0。而自J2SE 1.4版本以来,它已经被作为默认配置包含在Java动态环境(JRE,Java Runtime Environment)之中,再也不用单独安装了。在本文中,我将回顾这项重要技术的主要要点。

技术
JWS是一个和网页浏览器联系在一起的帮助软件。当一个用户点击了一个指向JNLP(Java Network Launching Protocol,JAVA网络调用协议)文件的链接时,浏览器会调用JWS,然后自动下载、缓存并运行指定的基于Java技术的软件。

JWS之下的技术是JNLP以及API,通过Java通讯进程开发。JWS是参考JNLP的定义进行执行。JNLP技术定义了一个标准的文件格式,用于说明如何启动一个JNLP文件。

既然安装链接可以被作为一个普通的HTTP URL链接被提供,你的开发团队中可能有人想检查一下客户端的网页上是否已经安装了JWS。你可以在IE中使用下述代码进行这项检查:

<SCRIPT LANGUAGE="VBScript">
on error resume next
If isIE = "true" Then
If Not(IsObject(CreateObject("JavaWebStart.isInstalled"))) Then
javawsInstalled = 0
Else
javawsInstalled = 1
End If
If Not(IsObject(CreateObject("JavaWebStart.isInstalled.1.4.2.0"))) Then
javaws142Installed = 0
Else
javaws142Installed = 1
End If
If Not(IsObject(CreateObject("JavaWebStart.isInstalled.1.5.0.0"))) Then
javaws150Installed = 0
Else
javaws150Installed = 1
End If
End If
</SCRIPT>
开发
一般开发一个使用JWS进行部署的软件,和为Java 2平台开发一个标准的独立软件没什么不同。举例来说,软件的入口是标准的代码:

public static void main(String[] argv)

不过,为了支持网页部署的自动下载和自动调用软件,并确保软件运行在一个安全的沙箱之中,有一些其他的事项需要注意,包括有:

  • 一个程序必须以一组JAR文件来交付
  • 所有程序资源,比如文件和图片,必须保存在JAR文件之中。且必须被标明为使用Java 2平台的getResource机制(看下面)
  • 一个软件可以被允许使用System.exit调用
  • 需要对系统有无限制存取的程序需要以一组经签名的JAR文件交付。每个JAR文件的所有入口必须签名。

    如果一个软件被写成在一个安全沙箱中运行,它必须遵循下述限制:

  • 没有对本地磁盘的权限
  • 所有JAR文件必须从同一主机下载
  • 网络连接仅连通提供JAR文件下载的主机
  • 不能安装安全管理器
  • 对系统属性的有限访问。程序具有对在JNLP文件中定义的所有属性的读/写权限,而作为applet时对同一组属性仅具有只读权限。

    安全
    JWS建立在Java 2平台之上,而后者提供了全面的安全架构。JWS同时也具有Java 6.0的强壮安全性能,比如代码签名。

    使用JWS启动的程序在默认状态下是运行在一个受限的环境中(一个“沙箱”),其对本地计算资源(比如存储设备和本地网络)的权限会受到限制。在这个沙箱环境中,JWS可以保证所下载的潜在危险软件无法危及本地文件和本地网络的安全。

    一个程序可以请求对系统不经限制的权限。在这种状态下,当系统首次启动时,JWS将显示一个安全警告对话框。安全警告将显示开发此程序制造商的相关信息。

    如果一个被调用的软件是以一个或者多个签名JAR文件提交的,JWS将验证JAR文件的内容是否自从签名后从未被修改过。如果对数字签名的验证失败,JWS将不会运行该程序,因为它可能受到了第三方的危害。当在JNLP文件中包含下述设定后,一个程序可以请求完全权限。

    <security>
    <all-permissions/>
    </security>
    JNLP文件
    JNLP是一个完全近似JWS的概念;它常常和Web Start交替使用。它是一个协议(以XML文件格式定义),定义了如何开始一个JWS程序。JNLP文件包含了很多信息,诸如JAR包装文件的路径,以及程序主要类的名称,另外还有程序运行的其他参数。使用一个正确配置的浏览器,JNLP文件会被转到一个JRE,然后按次序下载程序到用户机器上,再开始执行程序。

    一个JNLP文件不包含任何的二进制代码;实际上,它含有指向所有二进制数据以及二进制代码资源的URL链接。这些文件也可以被用于其他JNLP文件,被称为扩展注释。一个扩展注释一般描述了程序运行必须的一个部件。在扩展注释中描述的资源是软件的类途径的一部分。这可以让那些常用功能被要素化,仅需描述一次即可。下面是一个典型的JNLP文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <jnlpcodebase="http://www.helloworld.com/hw_app">
    <information>
    <title>Hello world!</title>
    <vendor>My Web Company</vendor>
    <icon href="hello.jpg"/>
    <offline-allowed/>
    </information>
    <resources>
    <j2se version="1.3+"/>
    <jar href="hw.jar"/>
    </resources>
    <application-desc main-class="com.helloworld.Hello"/>
    </jnlp>
    这个JNLP文件描述了如何调用标题为Hello的示例程序。在JNLP文件中,需要指明到底是JAVA 2平台,版本1.3或者更高版本,将被需要用于运行该软件,同时提供一些普通的软件信息,可以在下载过程中显示给用户。

    结论
    JWS提供了一种和平台无关,安全而精力充沛的部署技术。它可以让开发者只要在一个标准网页服务器上提供该软件,即可向终端用户部署全功能的软件。不管使用何种浏览器,终端用户都可以调用该软件,并确信他们所获得的是最新版本。

    JWS比applet强的一个主要优点是,它解决了许多由于浏览器JAVA插件以及JVM版本不同所导致的兼容性问题。但另一方面,使用WEB启动的程序,也无法像applet那样轻松的和浏览器进行通讯。

    (责任编辑:陈毅东

    查看本文的国际来源

      • 评论
      • 分享微博
      • 分享邮件
      邮件订阅

      如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

      重磅专题
      往期文章
      最新文章