进入Java web start

       最近看了些java web start的文章,写下体会,大家共享。

      

Java web start是一个与Web浏览器相关的应用。当用户点击指向一个特定启动文件(JNLP文件)的超级连接时,将促使Web浏览器启动Java Web Start,Java Web Start将自动下载、缓存以及运行给定基于Java技术的应用。这整个过程除了最初的点击以外,将不需要任何的用户干预。

从技术的角度来看,Java Web Start技术有多种关键优点,使之成为进行应用部署的平台。

1.       Java Web Start技术是专门用来启动J2SE(Java 2 SE platform)开发的应用。但个应用可以在一个Web服务器上开发,并且能配置在其他各种平台上,包括Windows 98/NT/2000/ME/XP, Linux, Solaris操作系统环境。Java平台已经被证实是高效,多用途的开发平台,通过最少化开发和测试成本来节省成本。

2.       Java Web Start支持J2SE(Java 2 platform, Standard Edition)的多个修正版本。这样的话,使得一个应用可以请求它所需平台的特定版本,例如J2SE1.4.0。多个应用可以同时运行不同平台版本下,而不会引起冲突,如果一个应用需要客户机系统上没有安装的平台版本的话,Java Web Start能够自动下载并安装相应平台版本。

3.       Java Web Start允许在浏览器环境之外启动应用。如果不方便或者不可能通过浏览器启动的条件下,能够对应用进行离线运行。应用程序也能够通过桌面快捷方式来启动,这样将使得启动一个基于Web部署的应用程序象启动本地应用程序一样简单。

4.       Java Web Start继承了Java平台的安全性的优点。Java Web Start技术下的应用在缺省情况下,将在一个保护环境下运行(即沙箱sandbox),严格限制了对本地磁盘系统和网络资源的访问。这将允许用户安全地运行来源于不可信区域的应用程序,而不用担心会破坏本地安全环境。

5.       用Java Web Start启动的应用程序将缓存在本地。这样的话,使得一个已经下载的应用程序等同于传统意义上的已安装应用程序。Java Web Start的支持技术是Java Network Launching Protocol & API (JNLP)-Java网络启动协议。此技术当前是通过Java Community Process (JCP)进行开发的。Java Web Start 是JNLP规范的参考实现(reference implementation,RI)。JNLP技术其中一点定义了描述怎样通过呼叫一个JNLP文件来启动一个应用程序的一个标准文件格式。

        基于web的解决方案已经成为交付客户机/服务器应用程序的标准,开发人员扩展web的技术边界,以寻找解决方案,applet看起来是最佳方案,因为他们交付非常强大的特性集,并且可以嵌入到java支持的web浏览器中。applet仍需要大量的下载时间。

 java web start基于java网络启动协议(Java Network Launch Protocol,JNLP)以及java2平台。java web start在java1.4中作为一个标准组件引入。由于这一唯一体系结构特性,因此只需单击一下,就可以从web浏览器中下载需要启动的应用程序。单击的链接就是JNLP文件。

    下面通过例子说明java web start。

             首先列出需要的文件: test.jar,test.html,test.jnlp需要部署到web服务器中.

              test.java需要编译并打包成jar文件。

            

  1. 要编译的文件Example7_21.java
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. class WindowList extends Frame 
  5. implements ItemListener,ActionListener
  6. {  List list1,list2;   
  7.    TextArea text1,text2; 
  8.    int index=0;
  9.    WindowList()
  10. {  setLayout(new FlowLayout());
  11.       list1=new List(3,false); 
  12.       list2=new List(3,false);
  13.       text1=new TextArea(2,20); 
  14.       text2=new TextArea(2,20);
  15.       list1.add("计算1+2+...");
  16.       list1.add("计算1*1+2*2+...");
  17.       list1.add("计算1*1*1+2*2*2+...");
  18.       for(int i=1;i<=100;i++)
  19.  {  list2.add("前"+i+"项和");
  20.        }
  21.       add(list1);
  22.       add(list2);
  23.       add(text1);
  24.       add(text2);
  25.       list1.addItemListener(this); 
  26.       list2.addActionListener(this);
  27.       setSize(400,200);
  28.       setVisible(true);
  29.       validate();
  30.    }
  31.    public void itemStateChanged(ItemEvent e)
  32. {  if(e.getItemSelectable()==list1)
  33. {  text1.setText(list1.getSelectedItem());
  34.          index=list1.getSelectedIndex();
  35.       }
  36.    }
  37.   public void actionPerformed(ActionEvent e)
  38. {   int n=list2.getSelectedIndex(),sum=0;
  39.       String name=list2.getSelectedItem();
  40.       switch(index) 
  41. case 0:
  42.                  for(int i=1;i<=n+1;i++)
  43. { sum=sum+i;
  44.                  }
  45.                  break;
  46.             case 1:
  47.                  for(int i=1;i<=n+1;i++)
  48.  { sum=sum+i*i;
  49.                  }
  50.                  break;
  51.              case 2:
  52.                  for(int i=1;i<=n+1;i++) 
  53. {  sum=sum+i*i*i;
  54.                  }
  55.                  break;
  56.               default :
  57.                  sum=-100;
  58.            } 
  59.        text2.setText(name+"等于"+sum); 
  60.    }
  61. public class Example7_21
  62. {  public static void main(String args[])
  63. {  new WindowList(); 
  64.     }
  65. }

    下面就要对其打包成jar文件,具体步骤如下:

            1.在NodePad下编写一个清单文件:

      文件名: Mymoon.mf

            Manifest-Version:1.0

            Main-Class:Example7_21

            2.生成jar文件:

          d:/test/jar cfm test.jar Mymoon.mf  Example7_21.class WindowList.class

             其中d:/test表示文件目录,test.jar表示要生成的jar文件名

    下面就要编写jnlp文件(test.jnlp)了:

             <?xml version="1.0" encoding="utf-8"?>
<jnlp
  spec="1.0+"
 codebase=http://localhost:8080/webstart
 href="test.jnlp">
  <information>
  <title>awt</title>
<vendor>zb</vendor>
<homepage href="http://localhost:8080/webstart/test.htm" />
<description>Gaem</description>
<offline-allowed/>
</information>
<security><all-permissions/>
</security>
<resources>
<j2se version="1.6"/>
<jar href="test.jar"/>
</resources>
<application-desc main-class="Example7_21"/>
</jnlp>

    解释一下该文件:<codebase>用作一个定位web服务器上资源的基本目录,href属性用来指向jnlp文件,提供应用程序的一般信息,<offline-allowed>属性表示应用程序可以离线使用,如果不提供此属性,那么必须先连接网络后才能启动该应用程序。

  java web start的安全性与applet相同,即它是受限制的,除非另行设置。

<resources>元素定义需要正确运行的属性,<j2se>表示运行的java平台,<jar>属性告诉java web start需要哪些类来运行程序。可以使用多个标签,

最后是<application-desc>,它指示java web start运行主类。    

  下面写出运行入口即test.html

  

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Language" content="en-us">
  4. <meta http-equiv="Content-Type" content="text/html;charset=windows-1252">
  5. <body topmargin="0" leftmargin="0" link="#000080" vlink="#000080">
  6. <center><a href="test.jnlp">Click Here to Launch</a></center>
  7. </body>
  8. </html>

  运行后,单击链接就看到了。

   注意:有时候需要进行安全认证,用jdk自带的keytool工具等,在网上搜一下就可以了,有时间我可以补上。   


注意:

Java Web Start 充分利用了已经存在的Internet技术,例如HTTP协议和Web服务器,这使得已存在的用于部署基于HTML内容的基础系统能够重用来使用Java Web Start部署基于Java技术的应用程序。为了在客户机上部署你的应用,你必须确保包含应用程序的所有文件能够通过Web服务器进行访问。这意味着你必须拷贝一个或者多个与JNLP文件相一致的jar文件到你的Web服务器目录中。使Web站点支持Java Web Start的设置类似于部署基于HTML的内容文件。唯一需要注意的是为Web服务器呗指一种新的MIME类型。

1.       配置Web服务器使之使用Java Web Start MIME类型

配置Web服务器,使所有的以.jnlp为扩展名的文件设置为application/x-java-jnlp-file MIME 类型。多数Web浏览器根据从Web服务器返回内容的MIME类型来决定怎样去处理特定的内容。为了让Web浏览器调用Java Web Start,必须让服务器对jnlp文件返回application/x-java-jnlp-file MIME 类型。每个Web服务器都有增加MIME类型的方法。对于Apache Web 服务器,必须增加以下行到.mime.types配置文件中:application/x-java-jnlp-file。JNLP对于器她服务器,请核对相关文档。如websphere


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值