本文是下一代Java Applet插件技术的第一部分,讲到了Java applet,插件技术的兼容性,需要注意的问题和结论。

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

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

兼容性

现在可更简略保护向后兼容性。你可创立运转在更早Java插件版别上的程序,但仅需供给一个与jnlp_href参数相同的格局完好的<Applet>标签就可运用这些新特性了。前期版别的JRE会疏忽jnlp_href参数,转而运用<applet>标签。新的Java插件技能将疏忽archive和code参数,而仅运用JNLP文件去发动Applet。

  World Wind Applet示例

由World Wind Java开发组创立的NASA World Wind Java Applet示例论述了假如发布像NASA World Wind Java这样的抢先类库。同样地,也用示例阐明了怎么运用JavaScript在Web页面中高效地整合HTML和Applet内容。

下一代Java Applet插件技能第二部分  Java Applet 插件 第1张

  Figure 2. NASA World Wind Applet

该Web页面包含了关于喀斯喀特山脉的信息(要感谢维基百科),而且将World Wind Java作为一个Applet嵌入其间,以图示该山脉中各山的方位。

  1. <appletid="wwjApplet"width=600height=380
  2. code="gov.nasa.worldwind.examples.applet.WWJApplet"
  3. archive="BackwardCompatibility.jar">
  4. <paramname="jnlp_href"value="WWJApplet.jnlp">
  5. </applet>

WWJApplet随规范的World Wind Java发行包发布。如下所述,你可选择编写你自己的Applet类并将World Wind嵌入其间:

下面是WWJApplet.jnlp文件中相关的部分:

  1. <jnlphref="WWJApplet.jnlp">
  2. <resourcesos="Windows">
  3. <propertyname="sun.java2d.noddraw"value="true"/>
  4. </resources>
  5. <resources>
  6. <j2sehref="http://java.sun.com/products/autodl/j2se"version="1.4+"/>
  7. <jarhref="worldwind.jar"main="true"/>
  8. <extensionname="jogl"
  9. href="http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jnlp"/>
  10. </resources>
  11. <applet-descname="WWJApplet"
  12. main-class="gov.nasa.worldwind.examples.applet.WWJApplet"
  13. <!--Overwrittenbythesurroundingwebpage-->
  14. width="100"
  15. height="100">
  16. </applet-desc>
  17. </jnlp>

留意几点:

在本例中,worldwind.jar作为主类运用。理想地,从NASA的网站引证它,将其作为一个JNLP扩展,这就使得许多不同的都嵌入了World Wind的运用程序或Applet同享相同的jar文件。详情请见下面的内容。

为了它的硬件加速的3D图形,World Wind Java运用了针对OpenGL API的Java绑定,JOGL。留意,JOGL JNLP扩展仅运用一行代码与运用程序进行结合。也要留意,在Windows渠道上,因为OpenGL API与DirectDraw/Direct3D API(该API用于Windows渠道默许的Java 2D完结)之间在驱动层面的抵触,需求指定体系参数-Dsun.Java2d.noddraw=true。Windows渠道上一切运用JOGL的运用程序与Applet程序都需求该体系参数。

Web页面中的HTML链接调用JavaScript函数,该函数会与Applet进行交互并将其导向适宜的山峰。下面是这些链接中的一个:

  1. <ahref="javascript:gotoLocation(MOUNT_RAINIER);">MountRainier</a>
  2. (southeastofTacoma,Washington)

当点击该链接后,将会调用JavaScript函数gotoLocation。该函数界说在同一个Web页面中:

  1. functiongotoLocation(locationString){
  2. varparams=locationString.split(';');
  3. if(params.length==3)//Lat/lon
  4. getWWJApplet().gotoLatLon(parseFloat(params[1]),
  5. parseFloat(params[2]));
  6. }

Web页面HTML中的山峰方位将被解码为JavaScript字符串。将从这些字符串中解分出纬度,经度及其它视觉信息,并将它们传递给Applet。 gotoLatLon办法是在WWJApplet类中界说的;上面的办法调用将起动一个JavaScript-to-Java调用,把参数从JavaScript引擎传给Java。World Wind Applet接纳该告诉,并将角度以动画的办法切换到恰当的当地。留意,gotoLatLon办法会迅速地回来,以便浏览器不用等候它的完结;该动画会在一个独自的Java线程中运转。

下一代Java Applet插件技能第二部分  Java Applet 插件 第2张

  Figure 3. World Wind Applet with Mount St. Helen's Clicked

如上所述,将World Wind Java集成到你的运用程序或Applet程序中的最好办法是将其作为一个JNLP扩展。这答应许多来自网络的集成了World Wind Java的运用程序或Applet程序可以同享World Wind代码资源。为了引证World Wind JNLP扩展,你需将下面的句子行参加到你的运用程序或Applet程序的JNLP文件中的<resources>部分:

<extension name="worldwind" href="http://worldwind.arc.nasa.gov/java/0.4.1/webstart/worldwind.jnlp"/>
<extension name="jogl"
href="http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jnlp"/>


留意,World Wind扩展JNLP是区别版别的,所以你需参阅World Wind文档或拜访论坛去找到你的JNLP会引证到的扩展的最新版别。World Wind Central是一个关于World Wind最新信息的有用资源。

class MyWWJApplet extends WWJApplet {}


将World Wind作为一个扩展运用就意味着你不能将WWJApplet直接作为你的main-class运用。因为JNLP文件格局的语义,主jar (main="true")有必要界说在主JNLP文件中。但很简略就能适应该约束,你可简略地创立你自己的WWJApplet子类(称之为MyWWJApplet),而它并不做任何事情:

将worldwind.jar置于classpath中,并编译上述类,然后将该类放入它自己的jar文件中。引进这个jar作为你的主jar,MyWWJApplet就成为了你的main-class,然后将其作为JNLP扩展引进到World Wind中。

定论

介绍了Java插件对JNLP的支撑,这为Applet的发布供给了许多新的或许,这对在浏览器表里发布Java内容的办法的一致又进了一大步。Applet自从它们开始已过了很长的时刻,现在跟着对JNLP的支撑,它们会比以往更快,也更易于定制。

【修改引荐】

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

发表评论

您需要后才能发表评论