JNLP及Java Web Start

JNLPJavaWeb Start
虽然经过签名的applet功能强大,甚至能在有效地取代应用程序,但它还是得在Web浏览器上运行。这不仅使客户端增加了额外的运行浏览器的开销,而且常常使用户界面变得非常的单调和混乱。浏览器有它自己的菜单和工具条,而他们正好压在applet的上面。

Java
的网络启动协议(Java Network LaunchProtocol简称JNLP)能在不牺牲applet优点的前提下解决这个问题。你可以在客户端上下载并安装单独的JNLP应用程序。它可 以用命令行,桌面图标,或随JNLP一同分发的应用程序管理器启动。程序甚至可以从最初下载的那个网站上启动。
JNLP
程序运行的时候会动态地从Internet上下载资源,并且自动检查其版本(如果用户连着Internet的话)。也就是说它同时具备appletapplication的优点。
applet 一样,客户机在对待JNLP应用程序的时候也必须注意安全问题。JNLP应用程序是一种易于下载的,基于Web的应用程序,因此有可能会被恶意利用。有鉴 于此,JNLP应用程序应该和applet一样被放在沙箱里。同applet一样,它可以用带签名的JAR文件部署,这时用户可以选择是不是信任签发者。 和applet的不同之处在于,即便没有签名,它仍然可以通过JNLP API去访问客户系统的某些资源(这就需要用户在程序运行时认可这些请求了)
JNLP
是一个协议而非产品,因而得先把它实现了才能用。Java Web Start有称JAWS就是Sun提供的,能免费下载的,JNLP的官方样板实现。你只要下载安装就行了,如果要做开发,不要忘了把JAR文件放到 classpath里面。要想在网站上部署JNLP应用程序,只要确保服务器能认得application/x-java-jnlp-fileMIME 类型就行了。如果是用最新版的Tomcat服务器(http://jakarta.apache.org/tomcat),那它应该已经帮你配置好了。否 则就去查查服务器的用户手册。
创建JNLP应用程序并不难。先创建一个标准的应用程序,然后用JAR打包,最后再准备一个启动文件就行 了。启动文件是一个很简单的XML文件,它负责向客户端传递下载和安装应用程序的信息。如果你决定用不带签名的JAR文件来部署软件,那还得用JNLP API来访问客户端系统上的资源。
注意,FileOpenServiceFileCloseServicejavax.jnlp里的 类,要使用这两个服务,不但要用ServiceManager.lookup()提出请求,而且要用这个方法所返回的对象来访问客户端资源。如果你不想受 JNLP束缚,要直接使用这些类的话,那就必须使用签名的JAR文件。
这个启动文件的后缀名必须是.jnlp,此外它还必须和JAR文件呆在一个目录里。这是一个根节点为<jnlp>标记的XML文件。这个节点下面还包括了一些子元素,其中绝大部分是自解释的。
jnlp
元素的spec属性告诉客户端系统,这个应用程序需要哪个版本的JNLPcodebase属性告诉客户端到哪个目录去找启动文件和资源。通常它应该是一 个指向Web服务器的HTTP URL,但这里为了测试需要,我们把它指到本机的目录了。href属性表示文件的名字。
information
标记里有多个提供与程序相关的信息的子元素。它们是供Java WebStart的管理控制台或其它类似程序使用的。这些程序会把JNLP应用安装到客户端上,让后让用户通过命令行,快捷方式或者其它什么方法启动。
resource
标记的功能HTML文件里的applet标记相似。j2se子元素指明程序运行所需的j2se的版本,jar子元素告诉客户端class文件被打在哪个 JAR文件里。此外jar元素还有一个download属性,其值可以是"eager""lazy",它的作用是告诉JNLP是不是应该下载完这个 jar再开始运行程序。
application-desc
属性告诉客户端系统,可执行的class,也就是JAR文件的入口是哪个类。
jnlp
标记还有一个很有用的子元素,那就是这里没用到的security标记。下面我们来看看security标记长什么样子:
<security>
   <all-permissions/>
<security/>
只有在部署带签名的JAR文件时才能使用security标记。上面那段程序不需要这个标记,因为所有的本地资源都是通过JNLP服务来访问的。

此外还有一些其它标记,具体细节可以参考http://java.sun.com/products/javawebstart/download-spec.htm
现在.jnlp文件也写好了,接下来就是在网页里加超链接了。这个页面应该是个下载页面。页面上除了有复杂的格式和详细介之外,千万别忘了把这条加上
:
<a href="classname.jnlp">clickhere</a>
这样你就可以点击链接启动JNLP应用程序的安装进程了。你只要下载一次,以后就可以通过管理控制台来进行配置了。如果你用的是WindowsJava Web Start的话,那么第二次启动程序的时候,它会提示你,是不是创建一个快捷方式。这种东西是可以配置的。

我们这里只介绍了两个JNLP服务,而当前版本里有七种。它们都是为特定的任务所设计的,比如像打印,剪贴板操作等。
编程技巧
由于JavaGUI编程是一个还在不断改进的技术,Java 1.0/1.1Java 2Swing类库之间就有着非常重大的区别,与旧模式相比,Swing能让你用一种更好的方式编程。这里,我们会就其中一些问题做个介绍,同时检验一下这些编程技巧。
总结这 一章只是想跟你介绍一下Swing的强大功能然后领你入门,这样当你知道相对而言Swing有多简单之后,你就能自己去探路了。你看到的这些已经能大致满 足UI设计之需了。但是Swing不止于此;它的目标是要成为一种功能齐全的UI设计工具。只要你能想到,它都有办法能作到。 如果你在这里找不到你想要的,那么研究一下SunJDK文档吧,或者去搜Web,如果还不行,就去找一本Swing的专著。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值