- 浏览: 8319 次
- 性别:
- 来自: 深圳
-
最近访客 更多访客>>
文章分类
- 全部博客 (6)
- Java (2)
- JavaScript (2)
- Oracle (0)
- 线程与Java并发工具包 (0)
- Java RMI (0)
- JBOSS (0)
- WebLogic (0)
- Dojo (0)
- DWR (0)
- JSON (0)
- JSONP (0)
- AjaxTags (0)
- jQuery (0)
- Prototype (0)
- PL/SQL (0)
- Java 正则表达式 (0)
- Struts2 (0)
- Java与设计模式 (0)
- JAAS (0)
- HtmlUtil (1)
- CSS (0)
- FreeMarker (0)
- JFree_Chart (0)
- JSP (0)
- Servlet (0)
- Spring (0)
- Swing (0)
- JMS (0)
- Java Service (0)
- 生活 (1)
最新评论
-
Heppy:
向楼主的无私奉献致敬
利用HtmlUtil 从网页提取数据 -
gowhere:
问一下,jre1.6这个java web start.dll ...
掌握 Java Web Start 技术 一
Java Web Start 是一个helper应用程序,它和WEB浏览器关联在一起。当用户点击指向一个特定的launch文件(JNLP文件)时,会促使浏览器装载Java Web Start, JAWS然后自动下载、缓冲、运行给定的基于JAVA技术的应用程序。整个过程无需和用户进行交互。
JNLP URLs也可以从JAWS应用程序管理直接打开并且能制成书签,此外,它们也可以是.html或者.jnlp文件。
从技术的观点来看,JAWS有许多关键的好处使得它在部署应用程序方面成为一个有吸引的平台:
ØJAWS专用于装入运行基于Java 2 SE平台编写的应用程序。因此,应用程序可以置于WEB SERVER中且能被部署在各种平台中包括WINDOWS系列、Linux、Unix等。
ØJAWS支持J2SE的不同版本,因此,应用程序可以请求它所需要的特定版本。比如J2SE1.4.0.几个基于不同J2SE版本的应用程序能同时运行而不会造成冲突。并且在客户端操作系统未安装应用程序所需的J2SE版本时,JAWS能自动下载且安装它。
ØJAWS允许应用不依赖于WEB浏览器进行装载和运行。应用程序也可以通过桌面快捷方式启动运行。
ØJAWS充分利用了平台内置的安全特性。应用程序默认情况下是运行在沙袋中,限制对本地磁盘以及网络资源进行访问.它允许用户安全的运行来自不受信任的源头的应用程序。
Ø用JAWS装载运行的应用程序,会在本地被缓存起来,因此,运行一个已下载的应用程序和运行一个传统的安装了的应用程序是一样的。
Java Web Start所基于的技术是 Java Network Launching Protocol & API(JNLP).它目前正由Java Community Proces(JCP)进行开发。Java Web Start是JNLP规格的参考实现。JNLP技术定义了一个标准的文件格式以描述怎样通过调用JNLP文件来装载运行一个应用程序。
客户端机器需要支持JRE1.2.2及以后版本。服务器方面来说,由于应用程序能被部署在任何标准的Web Server上,所以只要求Web Server配置以支持新的MIME type.
1.1 配置WebSite
为了在客户端运行应用程序,必须确保应用程序所需的的文件可以通过Web Server进行访问。典型的做法就是把应用程序所需的所有JAR文件以及JNLP文件放入Web Server特定的目录中,同普通的基于Html内容的部署没有什么区别,唯一需要注意的就是在Web Server中配置一个新的MIME type.
基本步骤
1.对所有以.jnlp扩展名结尾的文件,设置它的MIME type为application/x-java-jnlp-file
大多数WEB浏览器会根据从Web Server随同内容一同返回的MIME type来决定怎样对内容进行处理。Server针对JNLP文件则必须返回application/x-java-jnlp-file形式的MIME type,以便浏览器调用Java Web Start.
不同的Web Server指定MIME type的方式可能不同。比如Apache Web Server必须在.mime.types配置文件中增加如下行:application/x-java-jnlp-file JNLP
2.为应用程序创建JNLP文件,语法参见后续章节。
3.确保应用程序的JAR文件以及JNLP文件是可访问的(通过JNLP文件中列出的URLs的方式)
4.创建WEB PAGE来装载运行应用程序。见后续章节。
1.2 编写装载Application的WebPage
比如希望能从Web站点http://www.yyy.zzz 装载app.jnlp。则需要在Web Page中应包含如下链接:
<a href=http://www.yyy.zzz/app.jnlp>Launch the application</a>
在许多情况下,用户的机器上没有安装JAWS,因此,WEB 页还必须包含教本以已考虑JAWS没有安装的情况,其逻辑如下:
Ø 如果检测到JAWS安装了,则装载运行程序
Ø 如果检测到没有安装JAWS,再检测是否是再在WINDOWS上的IE运行
n 是,提供一个能自动安装JRE 的WEB页面
n 不是,提供一个下载SDK/JRE的通用下载页面。
后面有讨论相关的脚本以及自动安装的HTML。
Detecting if JAWS is installed on Netscape
<SCRIPT LANGUAGE="JavaScript"> var javawsInstalled = 0; var javaws12Installed = 0; var javaws142Installed=0; isIE = "false"; if (navigator.mimeTypes && navigator.mimeTypes.length) { x = navigator.mimeTypes['application/x-java-jnlp-file']; if (x) { javawsInstalled = 1; javaws12Installed=1; javaws142Installed=1; } }else { isIE = "true"; } </SCRIPT>
上述代码查看navigator.mimeTypes对象和navigator.mimeTypes.length变量,以决定浏览器是IE还是Netscape.对IE来说,尽管定义了navigator.mimeTypes但其长度为0;而对于Netscape来说,其长度不为0,而且,在Netscape中无法决定哪个JAWS的版本安装了。所以三个变量都设为1。
Detecting if JavaWeb Start is installed on IE, and if so, the version
<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.2"))) Then
javaws12Installed = 0
Else
javaws12Installed = 1
End If
If Not(IsObject(CreateObject("JavaWebStart.isInstalled.3"))) Then
javaws142Installed = 0
Else
javaws142Installed = 1
End If
End If
</SCRIPT>
上面脚本用来检测IE中安装的是哪个版本。脚本实例化一个JavaWebStart.dll中的isInstalled COM对象。这个对象决定几件事情:
l 客户端机器是否有任何的JAWS安装了
l 客户端机器是否安装了JAWS 1.2
l 客户端机器是否安装了JAWS 1.4.2
Launching the application if JAWS is Installed or providing a link for auto-install or general download page
可以编写另外的脚本用来决定是否:
l 提供一个链接给应用程序的jnlp文件(在JAWS安装了情况下)
l 初始化JRE1.4.2的自动下载,它包含了JAWS(在JAWS没有安装且用户用的是IE)
l 或者提供一个下载1.4.2 SDK/JRE的通用下载页面(JAWS没有安装且用户不是使用IE)
下面的代码处理这种场景:
<SCRIPT LANGUAGE="JavaScript"> /* Note that the logic below always launches the JNLP application *if the browser is Gecko based. This is because it is not possible *to detect MIME type application/x-java-jnlp-file on Gecko-based browsers. */ if (javawsInstalled || (navigator.userAgent.indexOf("Gecko") !=-1)) { document.write("<a href=http://www.yyy.zzz/app.jnlp>Launch the application</a>"); } else { document.write("Click "); document.write("<a href=http://dlres.java.sun.com/PluginBrowserCheck? pass=http://www.yyy.zzz/download.html& fail=http://java.sun.com/j2se/1.4.2/download.html>here</a> "); document.write("to download and install JRE 1.4.2 and the application."); } </SCRIPT>
Java.sun.com站点提供的PluginBrowserCheck程序的作用是检查客户端微软Windows平台上使用的是否是IE浏览器。如果是用IE浏览器,则把用户引向自动安装页面 http://www.yyy.zzz/download.html(下段描述怎样创建自动安装页面)。如果PluginBrowserCheck程序检测到客户WINDOWS平台上用的不是IE浏览器,则用户会被重定向到 java.sun.com站点上1.4.2 JRE通用的下载页面。
Creating an auto-install page
<HTML> <BODY> <OBJECT codebase="http://java.sun.com/update/1.5.0/jinstall-1_5_0-windows-i586.cab" classid="clsid:5852F5ED-8BF4-11D4-A245-0080C6F74284" height=0 width=0> <PARAM name="app" value="http://www.MySite.com/app.jnlp"> <PARAM name="back" value="true"> <!-- Alternate HTML for browsers which cannot instantiate the object --> <A href="http://java.sun.com/j2se/1.5.0/download.html">Download Java Web Start</A> </OBJECT> </BODY> </HTML>
和Java Web Start一起,一个ActiveX控件也会被下载到客户端,这个ActiveX控件将使用新安装的Java Web Start装载启动应用程序。PARAM标签指明了应用程序jnlp的位置,以便在JRE安装完成之后,可以被自动装载运行。
JRE 版本 |
.cab File for codebase attribute for Autodownload |
1.4.0 |
http://java.sun.com/products/plugin/autodl/jinstall-1_4_0-win.cab |
1.4.0_01 |
http://java.sun.com/products/plugin/autodl/jinstall-1_4_0_01-win.cab |
1.4.0_02 |
http://java.sun.com/products/plugin/autodl/jinstall-1_4_0_02-win.cab |
1.4.0_03 |
http://java.sun.com/products/plugin/autodl/jinstall-1_4_0_03-win.cab |
1.4.0_04 |
http://java.sun.com/products/plugin/autodl/jinstall-1_4_0_04-win.cab |
1.4.1 |
http://java.sun.com/products/plugin/autodl/jinstall-1_4_1-windows-i586.cab |
1.4.1_01 |
http://java.sun.com/products/plugin/autodl/jinstall-1_4_1_01-windows-i586.cab |
1.4.1_02 |
http://java.sun.com/products/plugin/autodl/jinstall-1_4_1_02-windows-i586.cab |
1.4.1_03 |
http://java.sun.com/products/plugin/autodl/jinstall-1_4_1_03-windows-i586.cab |
1.4.2 |
http://java.sun.com/products/plugin/autodl/jinstall-1_4_2-windows-i586.cab |
1.4.2_01 |
http://java.sun.com/update/1.4.2/jinstall-1_4_2_01-windows-i586.cab |
1.4.2_02 |
http://java.sun.com/update/1.4.2/jinstall-1_4_2_02-windows-i586.cab |
1.4.2_03 |
http://java.sun.com/update/1.4.2/jinstall-1_4_2_03-windows-i586.cab |
1.5.0 |
http://java.sun.com/update/1.5.0/jinstall-1_5_0-windows-i586.cab |
1.5.0_01 |
http://java.sun.com/update/1.5.0/jinstall-1_5_0_01-windows-i586.cab |
1.5.0_02 |
http://java.sun.com/update/1.5.0/jinstall-1_5_0_02-windows-i586.cab |
1.5.0_03 |
http://java.sun.com/update/1.5.0/jinstall-1_5_0_03-windows-i586.cab |
1.3 应用程序开发应考虑的几点
开发基于Java Web Start部署技术的应用程序和普通的应用程序几乎没有什么差别,入口依然是
public static void main(String[] argv).然而,为支持WEB部署-自动下载且启动应用程序-且确保应用程序能在安全的沙袋中运行,有几个额外需要考虑的地方:
1. 应用程序必须由一系列JAR文件组成。
2. 应用程序的所有资源,比如文件以及图像必须打包成JAR文件。而且他们必须使用getResource(。。。)方法来进行引用。
3. 如果所写的应用程序在安全的沙袋里面运行,必须遵循下面的约束:
a) 不能访问本地磁盘
b) 所有JAR文件必须从同一台主机上下载
c) 只允许建立到所下载的JAR文件所在的主机的网络连接
d) 不能安装安全管理器
e) 不能使用本地库(native libraries)
f) 只能访问部分系统属性(system properties),应用程序有权读写JNLP文件中定义的所有系统属性。有权读Applet能访问(access)的属性。
g) 应用程序允许调用System.exit
h) 如果希望应用程序能无限制的访问系统资源,就必须对JAR进行签名。每个JAR文件里面的所有项都必须签名。
Ø Retrieving Resources from JAR files
Java Web Start 仅从Web Server上传输JAR文件到客户端机器上,JAWS来决定把JAR文件在本地机器上的存储位置。因此,应用程序无法使用与本地磁盘相关的路径来访问资源,比如图像或者配置文件。
所用应用的资源必须从JAR文件中获取,它们在JNLP文件中由resource段进行描述指定,或者也可以显示地使用一个到Web Server 的HTTP request来获取。但建议还是把资源存储在JAR文件中,因为会被缓存在本地机器上。
ClassLoader cl = this.getClass().getClassLoader();
Icon saveIcon = new ImageIcon(cl.getResource("images/save.gif"));
Icon cutIcon = new ImageIcon(cl.getResource("images/cut.gif"));
假定JAR文件中存在项目images/save.gif和images/cut.gif
Ø Security and Code Signing
1. 保护用户免受恶意代码影响本地文件
2. 保护企业免使代码尝试访问或者破坏网络上的数据。
如果应用程序的JAR经过了签名,那么,在JNLP文件中包含如下脚本,就可以允许应用程序任意访问客户系统了。
<security>
<all-permissions/>
</security>
Java 2 SE JRE 1.4.2 支持SHA1withDSA and MD5withRSA 算法进行代码签名。Java 2 SE JRE 1.4.2提供了的标准工具 jarsigner用来进行代码签名以及创建证书。
用一个测试用的证书来签名JAR 文件的步骤如下:
1. 确认有keytool和jarsigner工具(在JDK的bin目录下)
2. 在keystore里创建一个新的key
keytool -genkey –keystore myKeystore –alias myself
工具会提示输入一些关于key的一些其它信息,比如密码和名称等。这个命令将在磁盘上创建myKeystore文件。
3.创建一个自签名的用来测试用的证书:
keytool -selfcert -alias myself -keystore myKeystore
会提示你输入建立key时输入的密码。
4. 检查是否正确:
keytool -list -keystore myKeystore
显示如下信息:
Keystore type: jks
Keystore provider: SUN
Your keystore contains 1 entry:
myself, Tue Jan 23 19:29:32 PST 2001, keyEntry,
Certificate fingerprint (MD5):
C2:E9:BF:F9:D3:DF:4C:8F:3C:5F:22:9E:AF:0B:42:9D
5. 最后,用测试证书来签名JAR文件
jarsigner -keystore myKeystore test.jar myself
针对所有的JAR文件重复这个步骤。
Ø How to Encode JNLP Files
为了编码(encode)一个JNLP文件,在XML prolog中指定encoding:
<?xml version="1.0" encoding="utf-16"?>
注意:这个XML prolog本身必须是UTF-8-encoded的
Ø Dynamic Download of HTTPS Certificates
未完!
相关推荐
2. **构建webstart目录结构**: - `images`:存放jnlp文件中定义的图标文件。 - `jar`:存放已打包的JAR文件。 - `jnlp`:存放描述文件(*.jnlp)。 - `src`:存放源代码。 - `WEB-INF/classes`:存放编译后的...
Java Web Start(简称 JWS)是 Sun Microsystems(现 Oracle)为解决 Java 应用程序部署和更新问题而开发的一项技术。它是 JSR-56 规范的一部分,旨在提供一种简便的方法来发布和维护在客户端 JVM 上运行的 Java ...
Java Web Start,也称为Java Network Launch Protocol(JNLP),是Oracle提供的一种技术,用于从Web上启动和自动更新Java应用程序。它允许用户通过一个Web链接启动富客户端Java应用程序,同时确保应用程序始终保持...
【描述】:WebStart是一种Java技术,它允许用户通过浏览器启动和运行Java应用程序,无需进行安装过程。这项技术强调了“点击即用”的概念,使得用户能够轻松地下载、运行和更新Java应用。本文将深入探讨WebStart的...
在描述中提到,此项目并不依赖于Internet Explorer(IE)的打印功能,这意味着它可能使用了Java Applet或者Java Web Start技术,这些技术可以让Java代码在用户的浏览器中运行,从而直接控制本地打印机。 接着,我们...
无论你选择哪种方式,了解和掌握Java Web服务器的搭建对于开发和维护Java Web应用至关重要。熟练的搭建技巧能够帮助你在开发过程中节省时间,提高工作效率。在实际操作中,可能还会遇到如防火墙设置、端口冲突等问题...
JavaWebStart是Java平台上一种基于浏览器的Web应用程序部署技术,由Oracle公司开发,它允许用户通过点击网页上的链接来启动和运行本地的Java应用程序。这个技术的核心理念是提供了一种安全、便捷的方式,使得用户...
虽然这项技术在Java中已经存在了一段时间,但是使用Jython来编写Web Start应用程序可以简化开发流程,使开发者能够更容易地创建和部署这类应用。 #### Jython与Web Start 使用Jython编写Web Start应用的优点包括:...
反射机制是 Java 高级开发技术的另一个重要组成部分。反射机制是指在程序运行过程中可以动态地获取和修改类的信息,例如获取类的成员变量、方法等。 在 Java 中,反射机制可以通过 java.lang.reflect 包来实现。...
- Java Web Start:一种通过网络启动和运行Java应用程序的技术,可自动下载并安装所需JAR包。 - Applet Viewer:Java SDK附带的工具,用于离线测试Applet。 - 浏览器支持:早期的浏览器(如Netscape Navigator和...
JavaFX提供了丰富的用户界面工具包,用于构建桌面、移动和Web应用,而Java Web Start则是Oracle公司提供的一个技术,它允许用户通过浏览器下载并运行Java应用程序。这两个技术都依赖于Java运行时环境(JRE),使得...
Java Servlet和JSP是Web开发中的核心技术,它们在构建动态网站和企业级应用程序中起着至关重要的作用。...通过深入学习和实践,你将能够掌握Java Web开发的基础,为构建自己的Web应用打下坚实基础。
例如,Java Web Start(JWS)是Oracle提供的一个技术,它允许用户通过Web浏览器下载并运行Java应用程序,这些应用程序可以直接在用户的桌面上运行,如同本地应用一样。 第二部分可能涉及到Java的Swing或JavaFX库,...
Java网页嵌套游戏是一种在网页中集成Java游戏的技术,它利用了Java Applet或Java Web Start等技术。Java Applet是早期实现网页嵌入游戏的主要方式,它允许开发者编写Java程序,然后通过浏览器插件在用户端运行。而...
Java Web Start则通过JNLP(Java Network Launch Protocol)技术,允许用户只需点击一个链接即可下载并运行Java应用程序。 在JavaFX中,关键知识点包括: 1. **Scenes和Nodes**:JavaFX的界面由场景(Scenes)和...
学习Applet有助于开发者掌握Java GUI编程,以及如何在Web环境下实现交互性内容。对于初学者来说,理解并实践Applet编程,可以避免在学习其他Java GUI技术时走弯路,从而更好地构建基于Java的Web应用程序。
综上所述,Java对声音技术的支持是多维度的,无论是Web环境下的Applet还是独立的Java应用程序,甚至是专业的声音处理需求,Java都提供了相应的工具和框架。掌握这些技术,可以使开发者在创建多媒体应用时更加...
14. **Java Applets和WebStart**:虽然随着技术发展,这两部分的重要性有所下降,但书中仍可能包含关于创建和部署Java小应用程序(Applet)及使用WebStart技术的介绍。 15. **Java模块系统**:讲解Java 9引入的模块...
1. **Java Web Start**:Java Web Start技术允许用户通过浏览器下载和运行桌面应用程序。开发者需要配置JNLP(Java Network Launch Protocol)文件,指定应用的JAR、依赖和启动参数。 2. **可执行JAR**:通过工具如...