`

使用Java网络启动部署软件

阅读更多

-转载http://www.knowsky.com


java网络启动(Java Web Start (JWS) )可以实现在网络浏览器中运行具备全部特色的Java应用软件。Sun公司在2001年三月发布的Java1.0就已经具备了对JWS的支持,自从J2SE1.4版本以来,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("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平台之上的,Java 2平台提供了一个全面的安全架构,在Java 6.0版中,JWS则提供了更加强大的安全特色,比如代码签名。


在默认状态下,通过JWS调用的应用软件将运行在一个受到限制的环境中(一个“沙盒”),它们对本地计算资源的访问,比如存储设备和本地网络,是有限的。这样,JWS就保证了下载的潜在的不可信任的软件不会危及到本地文件或网络。


当然,应用程序也可以请求不受限制的本地系统访问,在这种情况下,当该软件第一次调用时,JWS将显示安全警告对话框,安全警告的内容包含软件开发者的信息。


如果一个应用软件包含了一个或多个经过签名的JAR文件,JWS将会验证这些JAR文件在签名后是否发生过变化,如果数字签名的认证失败,那么JWS就不会运行该软件,因为它们已经被第三方修改过了。通过在JNLP文件中添加以下的设置,一个应用软件可以请求完整的权限。


< security>


< all-permissions/>


< /security>


JNLP文件


JNLP是一个和JWS紧密相关的概念,它经常可以和术语“网络启动”相互替代使用,实际上,JNLP是一个规定了JWS应用软件如何启动的协议。JNLP中的包含了诸如JAR包文件的位置、应用软件主要类的名称,以及程序的其它一些参数。在适当配置的浏览器中,JNLP文件是传递给JRE的,然后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文件中指定了需要1.3或更高版本的Java来运行该程序,同时还有一些与程序相关的信息,这些信息都会在用户下载的过程中显示。


如果您希望了解更详细的JNLP协议和文件格式,可以参考这个官方规范。


结论


JWS提供了一种与平台无关的、安全的而且强大的部署技术,开发者只需要将应用软件部署在网络服务器上就可以为最终用户提供全部的功能,而最终用户也只需要使用网络浏览器就可以运行所需的应用软件,而且永远是最新的版本。


JWS的一个主要优点是它克服了Java插件和不同Java虚拟机的兼容性问题,但是,使用网络启动的程序却不能像applet一样简单地和浏览器进行通讯。

资料引用:http://www.knowsky.com/397336.html

分享到:
评论

相关推荐

    如何使用Java网络启动部署软件

    JWS是与网络浏览器相结合的应用软件,当用户点击链接的时候就会指向一个Java网络启动协议(Java Network Launching Protocol (JNLP) )文件,然后浏览器自动启动JWS,接着下载、缓存并运行基于Java技术的应用软件。...

    嵌入式系统/ARM技术中的如何使用Java网络启动部署软件

     JWS是与网络浏览器相结合的应用软件,当用户点击链接的时候就会指向一个Java网络启动协议(Java Network Launching Protocol (JNLP) )文件,然后浏览器自动启动JWS,接着下载、缓存并运行基于Java技术的应用软件。...

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA上百实例源码以及开源项目源代码

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    Java开发技术大全(500个源代码).

    errorCompoundVariable.java 错误使用局部变量示例 factorial.java 求阶乘 Fibonacci.java 求Fiblnacci数列 GcdAndGcm.java 求最大公约数和最小公倍数 errorInit.java 演示变量初始化错误的程序 integer...

    Java运行环境 Java SE Runtime Environment 8.0.172.x64官方多语言正式版

    无论是部署在手机、嵌入式设备、游戏机、笔记本电脑还是数据中心,Java 都提供了当今网络应用所需要的丰富的用户界面、性能、多功能性、可移植性和安全性。Java 平台标准版软件是快速开发和部署安全、便携式应用程序...

    Java运行环境 Java SE Runtime Environment 8.0.172.x86官方多语言正式版

    无论是部署在手机、嵌入式设备、游戏机、笔记本电脑还是数据中心,Java 都提供了当今网络应用所需要的丰富的用户界面、性能、多功能性、可移植性和安全性。Java 平台标准版软件是快速开发和部署安全、便携式应用程序...

    java应用软件程序设计

    114 实例39 读取配置文件 115 实例40 流操作 117 实例41 管道操作 118 实例42 标准I/O重定向 121 实例43 文件过滤器 122 实例44 获取文件信息 123 第4章 Java网络编程 125 实例45 选择字体 ...

    Java项目开发与毕业设计指导

    使用Eclipse导入项目ch09, 在src/config.properties中配置数据库连接信息, 然后部署项目、启动tomcat。 访问http://localhost:8080/ajax即可启动本程序。 Ch10:一个简单的编译器实现 安装JDK、配置环境变量,...

    java基础案例与开发详解案例源码全

    19.2 Java网络类和接口497 19.3 InetAddress类498 19.4 URL和URLConnection类499 19.5 Scoket套接字505 19.6 Datagram套接字509 19.7 综合示例512 19.8 本章习题520 第20章 20.1 网络版五子棋522 20.1.1 需求描述522...

    docker-compose 一键启动服务端,史上最简单的内网穿透软件,部署简单,使用简单,传输稳定

    最简单的方式把内网映射到外网,一行命令启动内网穿透,支持linux,windows,树莓派等。eznat 在个人使用的情况下,稳定性还是很好,可放心使用

    java 面试题 总结

    JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...

    Java核心技术II(第8版)

    第三章 网络 3.1 连接到服务器 3.1.1 套接字超时 3.1.2 因特网地址 3.2 实现服务器 3.2.1 为多个客户端服务 3.2.2 半关闭 3.3 可中断套接字 3.4 发送E-Mail 3.5 建立URL连接 3.5.1 URL和URI 3.5.2 使用URLConnection...

    h_JAVA 2应用编程150例.rar

    第4章 Java网络编程 125 实例45 选择字体 126 实例46 UDP与TCP/IP的简单应用 129 实例47 聊天室 131 实例48 浏览FTP 136 实例49 局域网广播 147 实例50 建立HTTP连接 151 实例51 迷你浏览器 152 实例52 扫描应用端口...

    Java开发技术大全 电子版

    Java开发技术大全 电子版 第1篇Java基础知识入门. 第1章Java的开发运行环境2 1.1Java的运行环境与虚拟机2 1.2Java的开发环境4 1.2.1JDK的安装4 1.2.2如何设置系统环境变量6 1.2.3编译命令的使用8 1.2.4解释...

    深入java虚拟机源码-gsn:全球传感器网络

    是一种软件中间件,旨在促进传感器网络的部署和编程。 在线文档 您可以在项目中找到最新的 GSN 文档,包括部署、安装和编程指南。 此 README 文件仅包含基本设置说明,具体取决于您的目标: 运行和部署 GSN 使用 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    8.1.3 jdbc网络纯java驱动程序 255 8.1.4 本地协议的纯java驱动程序 256 8.2 安装数据库 256 8.3 jdbc api 260 8.3.1 加载并注册数据库驱动 261 8.3.2 建立到数据库的连接 263 8.3.3 访问数据库 264 8.3.4 ...

    IS-213-Gruppe1:神经网络用Java打乒乓球

    乒乓球与神经网络内容:该软件这是一个大学项目,我们试图更好地了解机器学习和神经网络。 我们已经用Java制作了一个基本的pong游戏。 我们将尝试使用神经网络来学习和玩游戏。 更多信息。 入门这些说明将为您提供在...

Global site tag (gtag.js) - Google Analytics