本文是下一代Java Applet插件技术的第一部分,讲到了Java applet,执行Applet的新途径以及配置Applet的相关知识。

Java SE 6对Java桌面运用进行较大的晋级,并发动了Java SE 6 Update N方案,该方案旨在简化JRE的巨细,增进用户的装置体会,并供给了一个新的Applet浏览器插件,该插件将会随Java SE 6 Update 10发布。本文全面介绍了这个新插件的要害特性,并以NASA的World Wind为例介绍了该插件的运用。

Java Applet回来了!

为了在网络中传递你的程序,是时分再次考虑Java Applet技能了。下一代Java插件技能以一种不同的,比曩昔更高效、更牢靠的途径来运转Applet。现在你能够获得如下优点:

增强的牢靠性

改善的用户体会

在后台发动Applet

内建的JNLP支撑

针对每个Applet的命令行参数

堆内存巨细,Java 2D API加快选项

改善的Java/JavaScript程序规划语言集成

改善的Windows Vista支撑

签名的Applet现在能够在Internet Explorer的保护模式中正常运转

下一代Java插件供给了一种彻底从头规划的架构,它将呈现在Java SE 6 Update 10中。该插件为运转在网络浏览器中的Applet供给了强壮的新功用,它以向后兼容的办法改善了整个Applet的牢靠性及功用。

下一代Java插件最有含义的新特性是它内建支撑经过JNLP文件发动Applet。运用JNLP文件格局作为Applet的描绘符就能答应Applet立刻复用之前为Java Web Start运用所写的JNLP扩展。

履行Applet的新途径

履行Applet的新途径在结构上与Java Web Start技能类似,但与浏览器整合的更为严密。 Applet不在运转于网络浏览器内的JVM中,而是会发动一个独立的JVM进程去运转Applet。默许地,只要一个JVM将被发动,但你也能发动多个JVM,而且能够为每个Applet都设置命令行参数,所以你能影响堆内存的巨细或其它的要求。

下一代Java Applet插件技能榜首部分  Java applet 插件 第1张

  Figure 1. Applet Architecture

在上图中,云表明JVM实例。在浏览器内有一个小的,headless JVM被用于办理一个或多个客户端JVM之间的衔接,这些JVM运转着Applet。在该图中,Duke表明Applet。其间,一个JVM实例运转着两个Applet,另一个运转着一个Applet。

Applet直接从JNLP文件发动,它运用的JNLP文件与Java Web Start软件运用的描绘符文件相同,而且答应运用比典型的"archive","code"和"cache_archive"更为强壮的参数。

新的插件供给了:

能够拜访之前仅由Java Web Start软件专用的高档JNLP扩展。之前有少部分参数能够运用,但有一些约束,现在这些约束则被去除。

经过Applet拜访JNLP API。

支撑PersistenceService和DownloadService。

能够操控堆内存巨细,命令行参数,JRE版别挑选和主动下载。你具有Java Web Start软件所具有的相同功用。

现在你就能够在Web页面中运用像下面这样的句子了:

  1. <appletwidth=”500”height=”500”>
  2. <paramname=”jnlp_href”value=”my_applet.jnlp”>
  3. </applet>

调用Applet生命周期办法init,start,stop和destroy会更为确认,而且现已改善了跨浏览器行为。彻底支撑Applet类装载器缓存,留传的Applet生命周期及对向后兼容性的需求,而且这些行为都已得到了改善。

Applet运转的就像一个由Java Web Start发动的运用。参数jnlp_href在Web页面和Applet的JNLP描绘之间起到了桥接的效果。在如宽度与高度这样的特定方面,Applet标签与JNLP文件具有堆叠的机制。

一般地,你应该运用Deployment Toolkit,这也是一个呈现在Java SE 6 Update 10中的新东西,它能主动地为Applet标签生成HTML。布置主张攻略展现了怎么运用Deployment Toolkit简洁地发布Applet。

装备Applet:

现在也能更为简略地在多个方面来装备Applet,包含堆内存巨细,需求被运用的Java版别,类加载器缓存,鸿沟,及其它。
<applet>与JNLP文件在针对某些参数时有堆叠的机制。这些抵触能够用如下办法处理:

width and height:这些特点将总是从<applet>,而不是JNLP文件,中获取。这是假定浏览器知道Applet在Web页面上应该显现多大,也只要浏览器才干支撑相对于页面的宽度与高度(例如,width="50%")。

codebase:假如JNLP文件在<jnlp>标签中指定了一个肯定的codebase,那么就运用它。不然,将运用在codebase handling一节中描绘的规矩进行安排。

code:当指定了jnlp_href参数,Applet的主类名将从main-class参数换成JNLP文件中的applet-desc标签,而且code特点会被疏忽。留意,该特性答应你为经典Java插件写一个具有反应的Applet标签,但在新的Java插件中,该标签可运用更高档的功用。请见下面的"兼容性"一节。

任何一个由<param> 标签指定的Applet参数将与JNLP文件中指定的参数进行兼并。假如<applet>标签和JNLP文件都指定了同一个参数,<applet>标签中的版别将掩盖JNLP文件中的版别,除了参数Java_arguments和java_version。

新的java_arguments和java_version参数在JNLP Applet中是不必要的。会替换为经过JNLP文件恳求JRE版别或向JVM传递参数的机制。所以,命令行参数和JNLP文件恳求的JRE版别将会掩盖HTML中为Applet指定的这些值。

特定的参数,例如image,boxbgcolor等等,在Applet的发动过程中是有用的。在HTML而不是JNLP文件中指定这些参数或许更好些,以便于在加载Web页面时就可当即获取它们,而不必再比及独自下载JNLP文件之后。

曩昔,经过Java操控面板设置***堆内存是有约束的。在新的Java插件中,这些约束被撤销。现在Applet能够像命令行运用那样运用很多堆空间。

指定一个比默许值大的堆空间:

  1. <APPLETarchive="my_applet.jar"code="MyApplet"width="300"height="300">
  2. <PARAMname="java_arguments"value="-Xmx128m">
  3. </APPLET>

指定一个非默许巨细的堆内存以及一个Java 2D硬件加快器选项,该选项常经过JOGL运用OpenGL运用于Applet。

  1. <APPLETarchive="my_applet.jar"code="MyApplet"width="300"height="300">
  2. <PARAMname="java_arguments"value="-Xmx256m-Dsun.java2d.noddraw=true">
  3. </APPLET>

假如你喜爱,一个Applet可强制进入一个归于它自己的JVM实例,而与一切其它的Applet隔脱离:

  1. <paramname=”separate_jvm”value=”true”/>

当把某些桌面运用移植到Web浏览器时,这就有用了。

你也能使特定的Applet运转在特定版别的JRE上,如下所示:

  1. <j2seversion=”1.4+”>
  2. <j2seversion=”1.5*”>

当想针对特定版别的JRE,或Applet替代前期版别的挑选机制(好像IE浏览器中的CLSID),进行质量测评时,该办法就很有用了。假如恳求了一个十分老的JRE版别,就会强制履行约束;假如Applet企图加载未签名的代码,将会提示用户。

留意,由于支撑JNLP的Java插件是在Java SE 6 Update 10中才***呈现的,所以指定像“1.4+”这样的版别基本上没有含义的。当需求“1.7+”时,这才有含义。

别的,你能够在JNLP文件中运用<update>标签来明显下降第2次及接下来各次发动的时刻。

  1. <updatecheck=”background”>

在这种情况下,将运用缓存中已有的Applet程序,而且在后台下载该运用的更新版别。在下次发动时,就会运用新版别。

新的插件也能更好地对图画进行定制,在Applet被加载之前会展现该图画。image参数会以支撑动画GIF文件作为方针,Java Plug-in Developers' Guide的Special Attributes一节对此有描绘。此外,现也支撑如下新的参数:

  boxborder

一个布尔型参数,用于指定在Applet被加载之前是否在Applet区域的边际制作一个宽度一象素的边框。默许为true。咱们主张将该值设置为false,特别是将一个动画GIF用作加载期图画时,以防止或许的闪耀。

  centerimage

一个布尔型参数,用于指定是否将加载期图画在Applet区域内居中显现,而不是从左上角开始。默许为false。

运用参数boxborder和centerimage的比如:

  1. <APPLETarchive="large_archive.jar"
  2. code="MyApplet"
  3. width="300"height="300">
  4. <!--UseananimatedGIFasanindeterminateprogressbar
  5. whiletheappletisloading-->
  6. <PARAMNAME="image"VALUE="animated_gif.gif">
  7. <!--Turnofftheboxborderforbetterblendingwiththe
  8. surroundingwebpage-->
  9. <PARAMNAME="boxborder"VALUE="false">
  10. <!--Centertheimageintheapplet'sarea-->
  11. <PARAMNAME="centerimage"VALUE="true">
  12. </APPLET>

【修改引荐】

  1. 20个开发人员十分有用的Java功用代码
  2. 走进Java 7中的模块体系
  3. JavaFX 1.2 现已发布 首要新功用一览
  4. 2009年十大Java技能处理方案
  5. 2008最值得学习的五种JAVA技能
转载请说明出处
知优网 » 下一代Java Applet插件技能榜首部分

发表评论

您需要后才能发表评论