﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Jiangshachina-随笔分类-Applet</title><link>http://www.blogjava.net/jiangshachina/category/32702.html</link><description>同是Java爱好者，相逢何必曾相识！&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;a cup of Java, cheers!</description><language>zh-cn</language><lastBuildDate>Wed, 14 Dec 2011 21:03:21 GMT</lastBuildDate><pubDate>Wed, 14 Dec 2011 21:03:21 GMT</pubDate><ttl>60</ttl><item><title>更好的Applet体验：海报帧(译)</title><link>http://www.blogjava.net/jiangshachina/archive/2008/11/02/237466.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Sun, 02 Nov 2008 02:57:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2008/11/02/237466.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/237466.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2008/11/02/237466.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/237466.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/237466.html</trackback:ping><description><![CDATA[<div align="center"><span style="font-size: 10pt;"><strong style="font-size: 14pt;">更好的Applet体验：海报帧</strong></span><br />
</div>
<span style="font-size: 10pt;">
本文是</span><a href="http://weblogs.java.net/blog/joshy"><span style="font-size: 10pt;">Joshua Marinacci</span></a><span style="font-size: 10pt;">的系列博客<em>A Better Applet Experience</em>中的</span><a href="http://weblogs.java.net/blog/joshy/archive/2008/08/a_better_applet_1.html"><span style="font-size: 10pt;">第二篇</span></a><span style="font-size: 10pt;">，介绍了如何使用海报帧去加快页面的加载。(2008.11.02最后更新)<br />
<br />
&nbsp;&nbsp;&nbsp; 在本系列文章的第一部分中，我向你展示了如何使用设置加载时图片，包括动态的GIF自旋体图片。这次，我将向展示如何使用屏幕截图或海报帧去加快页面的加载。<br />
&nbsp;&nbsp;&nbsp; Quicktime电影就有海报帧的思想。电影中的一帧(经常就是其中的第一帧)将会放到该电影出现的地方。当用户点击海报帧时，实现的电影才会通过网络被加载进来。这就能极大地加快该电影所在Web页面的加载速度。使用少许JavaScript，完全可以为Java Applet实现相同的功能。<br />
<br />
<strong><span style="font-size: 12pt;"><strong>Applet的海报帧</strong><br />
</span></strong>&nbsp;&nbsp;&nbsp; <strong>在研究这个Demo之前，我必须要提到，我个人尚未在IE浏览器中测试过这个Demo。如果你发现这个Demo不能在某个浏览器中运行，请向错误信息发送给我，以便我能更新这个JavaScript。</strong><br />
&nbsp;&nbsp;&nbsp; 基本思想非常的简单，创建一个div，它包含一个链接和一张屏幕截图。当用户点击该链接时，我们使用一个新的<code>applet</code>元素去替换页面中的<code>a</code>和<code>img</code>元素。一旦浏览器察觉到了这个新的<code>applet</code>元素，它将下载Java插件并启动这个Applet。<br />
&nbsp;&nbsp;&nbsp; 这就有一个例子：如果你点击了这张图片，一个Applet就会被加载到该图片所在的位置，并会说"applet loaded"。<br />
<br />
<strong style="font-size: 12pt;">JavaScript</strong><br />
&nbsp;&nbsp;&nbsp; 如下就是这个JavaScript脚本：<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="font-size: 10pt;"><span style="color: #000000;">&lt;</span><span style="color: #000000;">script</span><span style="color: #000000;">&gt;</span></span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;"><span style="font-size: 10pt;">function</span></span><span style="font-size: 10pt;"><span style="color: #000000;">&nbsp;generateInlineAppletTag(appletID,&nbsp;screenshotID)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;attributes&nbsp;</span><span style="color: #000000;">=</span></span><span style="font-size: 10pt;"><span style="color: #000000;">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;code:'animatedstartup.MainApplet',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:</span><span style="color: #000000;">100</span></span><span style="font-size: 10pt;"><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height:</span><span style="color: #000000;">100</span></span><span style="font-size: 10pt;"><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;archive:'http:</span><span style="color: #008000;">//</span><span style="color: #008000;">projects.joshy.org/demos/AnimatedStartup/AnimatedStartup.jar',</span></span><span style="color: #008000;"><br />
</span><span style="font-size: 10pt;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id:'fooApplet'<br />
&nbsp;&nbsp;&nbsp;&nbsp;};<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;parameters&nbsp;</span><span style="color: #000000;">=</span></span><span style="font-size: 10pt;"><span style="color: #000000;">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image:'http:</span><span style="color: #008000;">//</span><span style="color: #008000;">projects.joshy.org/demos/AnimatedStartup.gif',</span></span><span style="color: #008000;"><br />
</span><span style="font-size: 10pt;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;centerImage:'</span><span style="color: #0000ff;">true</span></span><span style="font-size: 10pt;"><span style="color: #000000;">'<br />
&nbsp;&nbsp;&nbsp;&nbsp;};<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;appletTag&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;document.createElement(</span><span style="color: #000000;">"</span><span style="color: #000000;">applet</span><span style="color: #000000;">"</span></span><span style="font-size: 10pt;"><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;attribute&nbsp;</span><span style="color: #0000ff;">in</span></span><span style="font-size: 10pt;"><span style="color: #000000;">&nbsp;attributes)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appletTag.setAttribute(attribute,attributes[attribute]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(parameters&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;'#ff0000'&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;parameters&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span></span><span style="font-size: 10pt;"><span style="color: #000000;">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;parameter&nbsp;</span><span style="color: #0000ff;">in</span></span><span style="font-size: 10pt;"><span style="color: #000000;">&nbsp;parameters)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;param&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;document.createElement(</span><span style="color: #000000;">"</span><span style="color: #000000;">PARAM</span><span style="color: #000000;">"</span></span><span style="font-size: 10pt;"><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;param.setAttribute(</span><span style="color: #000000;">"</span><span style="color: #000000;">name</span><span style="color: #000000;">"</span></span><span style="font-size: 10pt;"><span style="color: #000000;">,parameter);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;param.setAttribute(</span><span style="color: #000000;">"</span><span style="color: #000000;">value</span><span style="color: #000000;">"</span></span><span style="font-size: 10pt;"><span style="color: #000000;">,parameters[parameter]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appletTag.appendChild(param);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;bodyRef&nbsp;</span><span style="color: #000000;">=</span></span><span style="font-size: 10pt;"><span style="color: #000000;">&nbsp;document.getElementById(appletID);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;screenshot&nbsp;</span><span style="color: #000000;">=</span></span><span style="font-size: 10pt;"><span style="color: #000000;">&nbsp;document.getElementById(screenshotID);<br />
&nbsp;&nbsp;&nbsp;&nbsp;bodyRef.removeChild(screenshot);<br />
&nbsp;&nbsp;&nbsp;&nbsp;bodyRef.appendChild(appletTag);<br />
}<br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">script</span><span style="color: #000000;">&gt;</span></span></div>
<span style="font-size: 10pt;">该脚本的第一部分初始化了两个哈希表，它们包含了<code>applet</code>元素的属性与嵌套的param标签。然后，它会使用<code>document.createElement()</code>方法去创建这个applet，并配置其中的属性与<code>PARAM</code>元素。到目前为止，还很直接。真正地奇妙之事发生在<code>generateInlineAppletTag</code>函数的最后四行。它使用传入的<code>appletID</code>参数与包含着上述链接与图片的<code>div</code>元素相联在一起，然后它会找到并删除该链接，而用新的applet元素去替代这个链接。<br />
<br />
<strong style="font-size: 12pt;">HTML</strong><br />
要使用上述javascript函数，你只需将它放到页面的顶部，并通过那张屏幕截图链接的href去调用它。在本例中，我使用了：<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">div&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="appletDiv"</span><span style="color: #0000ff;">&gt;</span></span><span style="color: #000000;"><br />
</span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">a&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="screenshot1"</span><span style="color: #ff0000;">&nbsp;href</span><span style="color: #0000ff;">="javascript:generateInlineAppletTag('appletDiv','screenshot1');"</span><span style="color: #0000ff;">&gt;</span></span><span style="color: #000000;"><br />
</span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">img&nbsp;</span><span style="color: #ff0000;">src</span><span style="color: #0000ff;">="http://projects.joshy.org/demos/AnimatedStartup/applet_screenshot.png"</span><span style="color: #ff0000;">&nbsp;border</span><span style="color: #0000ff;">="0"</span></span><span style="color: #ff0000;"><br />
</span><span style="color: #0000ff;"><span style="font-size: 10pt;">/&gt;</span></span><span style="color: #000000;"><br />
</span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">a</span><span style="color: #0000ff;">&gt;</span></span><span style="color: #000000;"><br />
</span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">div</span><span style="color: #0000ff;">&gt;</span></span></div>
<span style="font-size: 10pt;">这个div被命名为<code>appletDiv</code>，链接被命名为<code>screenshot1</code>。该链接的<code>href</code>会调用上述javascript函数，并传入div与链接的名称。最后该图片就只是显示将要运行的Applet的一张屏幕截图，该图被一个播放按钮覆盖着。就这么简单，在</span><a href="http://projects.joshy.org/demos/AppletOverlay/image_replace.html"><span style="font-size: 10pt;">这里</span></a><span style="font-size: 10pt;">你可以看到完整的javascript和HTML语句。<br />
<br />
<strong style="font-size: 12pt;">结论</strong><br />
这个javascript只是一个开始。你还能很容易的扩展它，使图片上能展现关于这个Applet的更多信息。你也可以把这个javascript重写为一个更加可重用的形式，使它能够被你的整个站点所共享。<br />
下次我将向你展示如何使用新的发布工具包去侦测当前已安装的Java版本，并启动更新程序。<br />
<strong>重复一遍，如果你在某个平台或浏览器中发现了任何错误，请让我知道，以便更新这个脚本。</strong><br />
<br />
</span>
<img src ="http://www.blogjava.net/jiangshachina/aggbug/237466.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2008-11-02 10:57 <a href="http://www.blogjava.net/jiangshachina/archive/2008/11/02/237466.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>更好的Applet体验：定制加载时画面(译)</title><link>http://www.blogjava.net/jiangshachina/archive/2008/10/29/236954.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Tue, 28 Oct 2008 23:32:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2008/10/29/236954.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/236954.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2008/10/29/236954.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/236954.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/236954.html</trackback:ping><description><![CDATA[<div align="center"><strong><span style="font-size: 10pt;"><span style="font-size: 14pt;"><strong>更好的Applet体验：定制加载时画面</strong></span><br />
</span></strong></div>
<span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; 本文是</span><a href="http://weblogs.java.net/blog/joshy"><span style="font-size: 10pt;">Joshua Marinacci</span></a><span style="font-size: 10pt;">的系列博客<em>A Better Applet Experience</em>中的</span><a href="http://weblogs.java.net/blog/joshy/archive/2008/08/a_better_applet.html"><span style="font-size: 10pt;">第一篇</span></a><span style="font-size: 10pt;">，介绍了如何定制加载Applet时使用的画面。(2008.10.30最后更新)<br />
<br />
&nbsp;&nbsp;&nbsp; 你可能已经听说了Java SE 6 Update 10应当会改进Applet体验。你可能已经看过一些可在浏览器中拖拽的Applet示例，但还有比那更多的东西。在本博客系列中，我将向你展示如何在发布Applet时获得尽量多的东西，纵使你不使用Update 10。<br />
<br />
<strong><span style="font-size: 12pt;"><strong>摆脱咖啡杯图标</strong><br />
</span></strong>&nbsp;&nbsp;&nbsp; 很多人抱怨的第一件事情就是加载Java Applet时使用的咖啡杯图标。根据你具体使用的OS和JVM版本，这个图标是不同的，但它看起来总是像下图那样。<br />
<img alt="" src="http://weblogs.java.net/blog/campbell/archive/images/orangebox.png" /> <br />
&nbsp;&nbsp;&nbsp; 有很多理由可以认为这会困扰到应用程序开发者，包括不能为他们自己的软件标注品牌，破坏应用的视觉观感，滥用橘黄色。这些都是正确的批评。但在这儿我要告诉你，无须遵循这种方式。这个橘黄色的图标只是一种默认的方式罢了。你轻易就能，也应该将加载画面所使用的图片改成与你网站的其它部分相适应的图片。<br />
&nbsp;&nbsp;&nbsp; 在Java SE 6 Update 10出现的很长时间之前，Applet插件就已经支持在加载画面中使用定制图片了。只需设置Applet的<em>image</em>参数就可以了。就是这么简单!这儿就有一个例子：<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">applet&nbsp;</span><span style="color: #ff0000;">code</span><span style="color: #0000ff;">="animatedstartup.MainApplet"</span></span><span style="color: #ff0000;"><br />
<span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;archive</span></span><span style="color: #0000ff;"><span style="font-size: 10pt;">="AnimatedStartup.jar"</span></span><span style="color: #ff0000;"><br />
<span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">="100"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="100"</span></span><span style="color: #ff0000;"><br />
<span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="color: #0000ff;"><span style="font-size: 10pt;">&gt;</span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">PARAM&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="image"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="earth.gif"</span><span style="color: #0000ff;">/&gt;</span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">PARAM&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="boxmessage"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="loading<img alt="" src="http://www.blogjava.net/Images/dot.gif" />"</span><span style="color: #0000ff;">/&gt;</span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">PARAM&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="boxborder"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="false"</span><span style="color: #0000ff;">/&gt;</span></span><span style="color: #000000;"><br />
</span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">applet</span><span style="color: #0000ff;">&gt;</span></span></div>
<span style="font-size: 10pt;"><em>image</em>参数将设置一个加载时图片。Update 10还支持添加加载时信息，以及不绘制Applet的边框，但<em>image</em>是比较重要的一个参数。上面这个例子看起来就像下面这样：<br />
屏幕截图<sup>[1]</sup><br />
<br />
<strong style="font-size: 12pt;">制作加载时动画</strong><br />
&nbsp;&nbsp;&nbsp; Java 6目前支持使用动态图片以添加加载时动画。在前面例子中使用的earth.gif图片文件就正是一个动态GIF文件。如果你有最新的Applet插件，就会看到加载时画面是动态的。当然，你可能想要一个自旋体的图片，它更合适些，就如你在这里看到的那样：你也可以使用一个更具有指示性的GIF加载图片，就像</span><a href="http://www.command-tab.com/2007/01/21/aqua-spinners/"><span style="font-size: 10pt;">这里</span></a><span style="font-size: 10pt;">的图片那样<sup>[2]</sup>。<br />
&nbsp;&nbsp;&nbsp; 关于Applet加载时画面的更多内容请见发布文档的</span><a href="http://java.sun.com/javase/6/docs/technotes/guides/plugin/developer_guide/special_attributes.html"><span style="font-size: 10pt;">特别属性一节</span></a><span style="font-size: 10pt;">，以及</span><a href="https://jdk6.dev.java.net/plugin2/"><span style="font-size: 10pt;">关于这个新插件的说明</span></a><span style="font-size: 10pt;">。<br />
&nbsp;&nbsp;&nbsp; 本周就是这些了。在</span><a href="http://projects.joshy.org/demos/AnimatedStartup/applet.html"><span style="font-size: 10pt;">此处</span></a><span style="font-size: 10pt;">你可看到这个Demo的可运行版本。下次我将向你展示，在运行一个Applet之前，如何使用一个屏幕截图去替代这个真实的Applet。<br />
<br />
<strong style="font-size: 12pt;">译注<br />
</strong>[1]原文并未显示这张图片。<br />
[2]本句很有些奇怪，此处的两个"这里"应该指同一个地址。<br />
</span>
<img src ="http://www.blogjava.net/jiangshachina/aggbug/236954.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2008-10-29 07:32 <a href="http://www.blogjava.net/jiangshachina/archive/2008/10/29/236954.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java SE 6 Update 10发布了!(原)</title><link>http://www.blogjava.net/jiangshachina/archive/2008/10/17/234849.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Fri, 17 Oct 2008 13:37:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2008/10/17/234849.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/234849.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2008/10/17/234849.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/234849.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/234849.html</trackback:ping><description><![CDATA[<div align="center"><span style="font-size: 10pt;"><strong style="font-size: 14pt;">Java SE 6 Update 10发布了!</strong></span><br />
</div>
<span style="font-size: 10pt;">
&nbsp;&nbsp;&nbsp; 在经过了漫长的期待之后，<a href="http://java.sun.com/javase/downloads/index.jsp">Java SE 6 Update 10</a>终于正式发布了。本文主要简介了该版本在客户端应用方面的改进。(2008.10.18最后更新)<br />
<br />
Java SE 6本就加入了许多关于客户端应用的新特性，在<a href="http://blogs.sun.com/dannycoward/entry/java_se_6_top_ten">Java SE 6的十大新特性</a>中，直接关于客户端/桌面领域的新特性就有两处。此次Update 10更是集中地在该领域内做出了重大改进。此处，主要基于<a href="http://java.sun.com/javase/6/webnotes/6u10.html">Java SE 6 Update 10 Release Notes</a>的说明，简介了该版本在客户端应用方面的改进。<br />
<br />
<strong style="font-size: 12pt;">下一代Java Plug-in</strong><br />
&nbsp;&nbsp;&nbsp; 下一代Java插件包含了Applet和Java Web Start技术的最佳架构特性。它为在Web浏览器中发布Java和Java FX内容提供了健壮的平台。下一代Java插件为高级用户内容和企业级应用提供了许多强大的特性。<br />
&nbsp;&nbsp;&nbsp; * 允许为Applet申请更多的内存；可为每个Applet应用指定不同的命令行参数。<br />
&nbsp;&nbsp;&nbsp; * 为每个Applet应用选择不同的JRE。<br />
&nbsp;&nbsp;&nbsp; * 提高了可靠性。<br />
&nbsp;&nbsp;&nbsp; * 能在Java和JavaScript程序设计语言之间进行更好、更便捷的整合。<br />
&nbsp;&nbsp;&nbsp; * 增强了对访问Web页面中DOM的支持。<br />
&nbsp;&nbsp;&nbsp; * 增加了对Web Services的支持。<br />
内建支持JNLP，使得Applet应用可立即复用之前由Java Web Start应用使用的JNLP扩展，例如JavaFX运行时组件，对基于硬件加速的3D图形，视频回放等等。<br />
&nbsp;&nbsp;&nbsp; P.S. 在我较早前的一篇译文<strong><a href="http://www.blogjava.net/jiangshachina/archive/2008/07/14/214703.html">下一代Java Applet插件技术</a></strong>中，对这个新的插件有较详尽的描述。<br />
<br />
<strong style="font-size: 12pt;">Java Quick Starter</strong><br />
&nbsp;&nbsp;&nbsp; Java Quick Starter(JQS)为了提高Applet程序和Java应用程序的初始启动速度，会周期性预加载一些常用的JRE文件到内存(占用不多于20M的内存)。之后，当Java程序启动时，磁盘I/O将会显著减少，那么启动速度也就大大加快了。JQS会作为一个Windows服务启动，在任务管理器中会看到一个名为jqs.exe的进程。<br />
&nbsp;&nbsp;&nbsp; 注：JQS仅能用于x86架构下的Windows 2000和Windows XP系统；由于Windows Vista系统有其自己的预加载机制，JQS将不能使用。<br />
<br />
<strong style="font-size: 12pt;">Deployment Toolkit</strong><br />
&nbsp;&nbsp;&nbsp; 为了避免浏览器的兼容性问题，Deployment Toolkit提供了一组JavaScript方法，能够自动生成部署Applet和Java Web Start程序时所使用的HTML语句。<br />
<br />
<strong style="font-size: 12pt;">Nimbus</strong><br />
&nbsp;&nbsp;&nbsp; Nimbus是一个新的Java跨平台外观。在JDK 6 Update 10自带的demo中新加了一个SwingSet3应用，但与其它的demo应用(如SwingSet2)不同，这个demo应用没有包含源代码和可执行的jar文件，而需要通过Java Web Start运行(我猜想SwingSet3应该还处于开发阶段)。官方的介绍中有一张图片，大家可以看看，确实漂亮多了(此前，默认的Metal外观已经多年未更新了)。<br />
<img alt="" src="http://java.sun.com/javase/6/docs/technotes/guides/jweb/images/NimbusLAF.png" />&nbsp;<br />
<br />
</span><img src ="http://www.blogjava.net/jiangshachina/aggbug/234849.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2008-10-17 21:37 <a href="http://www.blogjava.net/jiangshachina/archive/2008/10/17/234849.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>下一代Java Applet插件技术(译)</title><link>http://www.blogjava.net/jiangshachina/archive/2008/07/14/214703.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Mon, 14 Jul 2008 11:56:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2008/07/14/214703.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/214703.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2008/07/14/214703.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/214703.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/214703.html</trackback:ping><description><![CDATA[<div align="center"><strong><span style="font-size: 14pt;">下一代Java Applet插件技术</span></strong><br />
</div>
&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt;">Java SE 6对Java桌面应用进行较大的升级，并启动了Java SE 6 Update N计划，该计划旨在简化JRE的大小，增进用户的安装体验，并提供了一个新的Applet浏览器插件，该插件将会随<a href="https://jdk6.dev.java.net/6u10ea.html">Java SE 6 Update 10</a>发布。<a href="http://java.sun.com/developer/technicalArticles/javase/newapplets/">本文</a>全面介绍了这个新插件的关键特性，并以<a href="http://www.nasa.gov/">NASA</a>的<a href="http://worldwind.arc.nasa.gov/java/">World Wind</a>为例介绍了该插件的应用。(2008.07.15最后更新)<br />
<br />
</span><span style="font-size: 10pt;">Applet回来了！<br />
为了在网络中传递你的程序，是时候再次考虑Java Applet技术了。<a href="http://jdk6.dev.java.net/6u10ea.html">下一代Java插件技术</a>以一种不同的，比过去更高效、更可靠的途径来运行Applet。现在你可以获得如下好处：<br />
</span>
<ul>
    <li><span style="font-size: 10pt;">
    增强的可靠性</span></li>
    <li><span style="font-size: 10pt;">
    改进的用户体验</span></li>
    <li><span style="font-size: 10pt;">
    在后台启动Applet</span></li>
    <li><span style="font-size: 10pt;">
    内建的JNLP支持</span></li>
    <li><span style="font-size: 10pt;">
    针对每个Applet的命令行参数</span></li>
    <li><span style="font-size: 10pt;">
    堆内存大小，Java 2D API加速选项</span></li>
    <li><span style="font-size: 10pt;">
    改进的Java/JavaScript程序设计语言集成</span></li>
    <li><span style="font-size: 10pt;">
    改进的Windows Vista支持</span></li>
    <li><span style="font-size: 10pt;">
    签名的Applet现在可以在Internet Explorer的保护模式中正常运行</span></li>
</ul>
<span style="font-size: 10pt;">
下一代Java插件提供了一种完全重新设计的架构，它将出现在<a href="http://jdk6.dev.java.net/6u10ea.html">Java SE 6 Update 10</a>中。该插件为运行在网络浏览器中的Applet提供了强大的新功能，它以向后兼容的方式改进了整个Applet的可靠性及功能。<br />
下一代Java插件最有意义的新特性是它内建支持通过JNLP文件启动Applet。使用JNLP文件格式作为Applet的描述符就能允许Applet马上复用之前为Java Web Start应用所写的JNLP扩展。<br />
<strong><br />
<span style="font-size: 12pt;">执行Applet的新途径</span></strong><br />
执行Applet的新途径在结构上与Java Web Start技术相似，但与浏览器整合的更为紧密。Applet不在运行于网络浏览器内的JVM中，而是会启动一个独立的JVM进程去运行Applet。默认地，只有一个JVM将被启动，但你也能启动多个JVM，并且可以为每个Applet都设置命令行参数，所以你能影响堆内存的大小或其它的要求。<br />
<img alt="" src="http://java.sun.com/developer/technicalArticles/javase/newapplets/images/architecture.jpg" width="424" height="320" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span style="font-size: 10pt;"><strong>Figure 1.</strong> <em>Applet Architecture</em></span><br />
<span style="font-size: 10pt;">
在上图中，云表示JVM实例。在浏览器内有一个小的，headless JVM被用于管理一个或多个客户端JVM之间的连接，这些JVM运行着Applet。在该图中，Duke表示Applet。其中，一个JVM实例运行着两个Applet，另一个运行着一个Applet。<br />
Applet直接从JNLP文件启动，它使用的JNLP文件与Java Web Start软件使用的描述符文件相同，并且允许使用比典型的"archive"，"code"和"cache_archive"更为强大的参数。<br />
新的插件提供了：<br />
</span>
<ul>
    <li><span style="font-size: 10pt;">
    能够访问之前仅由Java Web Start软件专用的高级JNLP扩展。之前有少部分参数能够使用，但有一些限制，现在这些限制则被去除。</span></li>
    <li><span style="font-size: 10pt;">
    通过Applet访问JNLP API。</span></li>
    <li><span style="font-size: 10pt;">
    支持PersistenceService和DownloadService。</span></li>
    <li><span style="font-size: 10pt;">
    能够控制堆内存大小，命令行参数，JRE版本选择和自动下载。你具有Java Web Start软件所拥有的相同功能。</span></li>
</ul>
<span style="font-size: 10pt;">
现在你就可以在Web页面中使用像下面这样的语句了：<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">applet&nbsp;width</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8221;</span><span style="color: #000000;">500</span><span style="color: #000000;">&#8221;&nbsp;height</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8221;</span><span style="color: #000000;">500</span><span style="color: #000000;">&#8221;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">param&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8221;jnlp_href&#8221;&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8221;my_applet.jnlp&#8221;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">applet</span><span style="color: #000000;">&gt;</span></div>
<span style="font-size: 10pt;">调用Applet生命周期方法init，start，stop和destroy会更为确定，并且已经改进了跨浏览器行为。完全支持Applet类装载器缓存，遗留的Applet生命周期及对向后兼容性的需求，并且这些行为都已得到了改进。<br />
Applet运行的就像一个由Java Web Start启动的应用。参数jnlp_href在Web页面和Applet的JNLP描述之间起到了桥接的作用。在如宽度与高度这样的特定方面，Applet标签与JNLP文件具有重叠的机制。<br />
一般地，你应该使用<a href="https://jdk6.dev.java.net/testDT.html">Deployment Toolkit</a>，这也是一个出现在Java SE 6 Update 10中的新工具，它能自动地为Applet标签生成HTML。<a href="https://jdk6.dev.java.net/deployment_advice.html">部署建议</a>指南展示了如何使用Deployment Toolkit简便地发布Applet。<br />
<br />
<strong><span style="font-size: 12pt;">配置Applet</span></strong><br />
现在也能更为简单地在多个方面来配置Applet，包括堆内存大小，需要被使用的Java版本，类加载器缓存，边界，及其它。<br />
&lt;applet&gt;与JNLP文件在针对某些参数时有重叠的机制。这些冲突可以用如下方法解决：<br />
</span>
<ul>
    <li><span style="font-size: 10pt;"><strong>width and height</strong>：这些属性将总是从&lt;applet&gt;，而不是JNLP文件，中获取。这是假设浏览器知道Applet在Web页面上应该显示多大，也只有浏览器才能支持相对于页面的宽度与高度(例如，width="50%")。</span></li>
    <li><span style="font-size: 10pt;">
    <strong>codebase</strong>：如果JNLP文件在&lt;jnlp&gt;标签中指定了一个绝对的codebase，那么就使用它。否则，将使用在<a href="https://jdk6.dev.java.net/plugin2/jnlp/#CODEBASE">codebase handling</a>一节中描述的规则进行组织。</span></li>
    <li><span style="font-size: 10pt;">
    <strong>code</strong>：当指定了jnlp_href参数，Applet的主类名将从main-class参数换成JNLP文件中的applet-desc标签，并且code属性会被忽略。注意，该特性允许你为经典Java插件写一个拥有反馈的Applet标签，但在新的Java插件中，该标签可使用更高级的功能。请见下面的"兼容性"一节。</span></li>
    <li><span style="font-size: 10pt;">
    任何一个由&lt;param&gt;标签指定的Applet参数将与JNLP文件中指定的参数进行合并。如果&lt;applet&gt;标签和JNLP文件都指定了同一个参数，&lt;applet&gt;标签中的版本将覆盖JNLP文件中的版本，除了参数java_arguments和java_version。</span></li>
    <li><span style="font-size: 10pt;">
    新的java_arguments和java_version参数在JNLP Applet中是不必要的。会替换为通过JNLP文件请求JRE版本或向JVM传递参数的机制。所以，命令行参数和JNLP文件请求的JRE版本将会覆盖HTML中为Applet指定的这些值。</span></li>
    <li><span style="font-size: 10pt;">
    特定的参数，例如image，boxbgcolor等等，在Applet的启动过程中是有用的。在HTML而不是JNLP文件中指定这些参数可能更好些，以便于在加载Web页面时就可立即获取它们，而不用再等到单独下载JNLP文件之后。</span></li>
</ul>
<span style="font-size: 10pt;">
过去，通过Java控制面板设置最大堆内存是有限制的。在新的Java插件中，这些限制被取消。现在Applet可以像命令行应用那样使用大量堆空间。<br />
指定一个比默认值大的堆空间：<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">APPLET&nbsp;archive</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">my_applet.jar</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;code</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">MyApplet</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;width</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">300</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;height</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">300</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">PARAM&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">java_arguments</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">-Xmx128m</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;<br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">APPLET</span><span style="color: #000000;">&gt;</span></div>
<span style="font-size: 10pt;">指定一个非默认大小的堆内存以及一个Java 2D硬件加速器选项，该选项常通过JOGL使用OpenGL应用于Applet。<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">APPLET&nbsp;archive</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">my_applet.jar</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;code</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">MyApplet</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;width</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">300</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;height</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">300</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">PARAM&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">java_arguments</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">-Xmx256m&nbsp;-Dsun.java2d.noddraw=true</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;<br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">APPLET</span><span style="color: #000000;">&gt;</span></div>
<span style="font-size: 10pt;">如果你喜欢，一个Applet可强制进入一个属于它自己的JVM实例，而与所有其它的Applet隔离开：<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">param&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8221;separate_jvm&#8221;&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8221;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">&#8221;&nbsp;</span><span style="color: #000000;">/&gt;</span></div>
<span style="font-size: 10pt;">当把某些桌面应用移植到Web浏览器时，这就有用了。<br />
你也能使特定的Applet运行在特定版本的JRE上，如下所示：<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">j2se&nbsp;version</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8221;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">+</span><span style="color: #000000;">&#8221;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" /></span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">j2se&nbsp;version</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8221;</span><span style="color: #000000;">1.5</span><span style="color: #000000;">*</span><span style="color: #000000;">&#8221;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" /></span><span style="color: #000000;">&gt;</span></div>
<span style="font-size: 10pt;">当想针对特定版本的JRE，或Applet取代早期版本的选择机制(如同IE浏览器中的CLSID)，进行质量测评时，该方法就很有用了。如果请求了一个非常老的JRE版本，就会强制执行限制；如果Applet试图加载未签名的代码，将会提示用户。<br />
注意，因为支持JNLP的Java插件是在Java SE 6 Update 10中才首次出现的，所以指定像&#8220;1.4+&#8221;这样的版本基本上没有意义的。当需要&#8220;1.7+&#8221;时，这才有意义。<br />
另外，你可以在JNLP文件中使用&lt;update&gt;标签来显著降低第二次及接下来各次启动的时间。<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">update&nbsp;check</span><span style="color: #000000;">=</span><span style="color: #000000;">&#8221;background&#8221;</span><span style="color: #000000;">&gt;</span></div>
<span style="font-size: 10pt;">在这种情况下，将使用缓存中已有的Applet程序，并且在后台下载该应用的更新版本。在下次启动时，就会使用新版本。<br />
新的插件也能更好地对图像进行定制，在Applet被加载之前会展示该图像。image参数会以支持动画GIF文件作为目标，<a href="http://java.sun.com/javase/6/docs/technotes/guides/plugin/developer_guide/contents.html">Java Plug-in Developers' Guide</a>的<a href="http://java.sun.com/javase/6/docs/technotes/guides/plugin/developer_guide/special_attributes.html">Special Attributes</a>一节对此有描述。此外，现也支持如下新的参数：<br />
<strong>boxborder</strong><br />
一个布尔型参数，用于指定在Applet被加载之前是否在Applet区域的边缘绘制一个宽度一象素的边框。默认为true。我们建议将该值设置为false，特别是将一个动画GIF用作加载期图像时，以避免可能的闪烁。<br />
<strong>centerimage</strong><br />
一个布尔型参数，用于指定是否将加载期图像在Applet区域内居中显示，而不是从左上角起始。默认为false。<br />
使用参数boxborder和centerimage的例子：<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">APPLET&nbsp;archive</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">large_archive.jar</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;code</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">MyApplet</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;width</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">300</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;height</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">300</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;!--</span><span style="color: #000000;">&nbsp;Use&nbsp;an&nbsp;animated&nbsp;GIF&nbsp;as&nbsp;an&nbsp;indeterminate&nbsp;progress&nbsp;bar<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;the&nbsp;applet&nbsp;is&nbsp;loading&nbsp;</span><span style="color: #000000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">PARAM&nbsp;NAME</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">image</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;VALUE</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">animated_gif.gif</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;!--</span><span style="color: #000000;">&nbsp;Turn&nbsp;off&nbsp;the&nbsp;box&nbsp;border&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;better&nbsp;blending&nbsp;</span><span style="color: #0000ff;">with</span><span style="color: #000000;">&nbsp;the<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;surrounding&nbsp;web&nbsp;page&nbsp;</span><span style="color: #000000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">PARAM&nbsp;NAME</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">boxborder</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;VALUE</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">false</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;!--</span><span style="color: #000000;">&nbsp;Center&nbsp;the&nbsp;image&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;the&nbsp;applet's&nbsp;area&nbsp;</span><span style="color: #000000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">PARAM&nbsp;NAME</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">centerimage</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;VALUE</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">true</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">APPLET</span><span style="color: #000000;">&gt;</span></div>
<span style="font-size: 10pt;"><br />
<strong><span style="font-size: 12pt;">兼容性</span></strong><br />
现在可更容易维护向后兼容性。你可创建运行在更早Java插件版本上的程序，但仅需提供一个与jnlp_href参数一样的格式完整的&lt;applet&gt;标签就可使用这些新特性了。早期版本的JRE会忽略jnlp_href参数，转而使用&lt;applet&gt;标签。新的Java插件技术将忽略archive和code参数，而仅使用JNLP文件去启动Applet。<br />
<br />
<strong><span style="font-size: 12pt;">World Wind Applet示例</span></strong><br />
由World Wind Java开发组创建的<a href="http://download.java.net/javadesktop/plugin2/wwj/">NASA World Wind Java</a> Applet示例阐述了如果发布像NASA World Wind Java这样的领先类库。同样地，也用示例说明了如何使用JavaScript在Web页面中高效地整合HTML和Applet内容。<br />
<img alt="" src="http://java.sun.com/developer/technicalArticles/javase/newapplets/images/nasaapplet.jpg" width="450" height="283" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
</span><span style="font-size: 10pt;"><strong>Figure 2.</strong> </span><em><span style="font-size: 10pt;">NASA World Wind Applet</span></em><br />
<span style="font-size: 10pt;">该Web页面包含了关于喀斯喀特山脉的信息(要感谢维基百科)，并且将World Wind Java作为一个Applet嵌入其中，以图示该山脉中各山的位置。<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">applet&nbsp;id</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">wwjApplet</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;width</span><span style="color: #000000;">=</span><span style="color: #000000;">600</span><span style="color: #000000;">&nbsp;height</span><span style="color: #000000;">=</span><span style="color: #000000;">380</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;code</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">gov.nasa.worldwind.examples.applet.WWJApplet</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;archive</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">BackwardCompatibility.jar</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">param&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">jnlp_href</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">WWJApplet.jnlp</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">applet</span><span style="color: #000000;">&gt;</span></div>
<span style="font-size: 10pt;">WWJApplet随标准的<a href="http://worldwind.arc.nasa.gov/java/">World Wind Java发行包</a>发布。如下所述，你可选择编写你自己的Applet类并将World Wind嵌入其中：<br />
下面是WWJApplet.jnlp文件中相关的部分：<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">jnlp&nbsp;href</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">WWJApplet.jnlp</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">resources&nbsp;os</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">Windows</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">property&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">sun.java2d.noddraw</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">true</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">resources</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">resources</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">j2se&nbsp;href</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://java.sun.com/products/autodl/j2se</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;version</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">1.4+</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">jar&nbsp;href</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">worldwind.jar</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;main</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">true</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">extension&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">jogl</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;href</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jnlp</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">resources</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">applet</span><span style="color: #000000;">-</span><span style="color: #000000;">descname</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">WWJ&nbsp;Applet</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;main</span><span style="color: #000000;">-</span><span style="color: #000000;">class</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">gov.nasa.worldwind.examples.applet.WWJApplet</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;!--</span><span style="color: #000000;">&nbsp;Overwritten&nbsp;by&nbsp;the&nbsp;surrounding&nbsp;web&nbsp;page&nbsp;</span><span style="color: #000000;">--&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;width</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">100</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;height</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">100</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">applet</span><span style="color: #000000;">-</span><span style="color: #000000;">desc</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">jnlp</span><span style="color: #000000;">&gt;</span></div>
<span style="font-size: 10pt;">注意几点：<br />
</span>
<ul>
    <li><span style="font-size: 10pt;">
    在本例中，worldwind.jar作为主类使用。理想地，从NASA的网站引用它，将其作为一个JNLP扩展，这就使得许多不同的都嵌入了World Wind的应用程序或Applet共享相同的jar文件。详情请见下面的内容。</span></li>
    <li><span style="font-size: 10pt;">
    为了它的硬件加速的3D图形，World Wind Java使用了针对OpenGL API的Java绑定，<a href="http://jogl.dev.java.net/">JOGL</a>。注意，JOGL JNLP扩展仅使用一行代码与应用程序进行结合。也要注意，在Windows平台上，由于OpenGL API与DirectDraw/Direct3D API(该API用于Windows平台默认的Java 2D实现)之间在驱动层面的冲突，需要指定系统参数-Dsun.java2d.noddraw=true。Windows平台上所有使用JOGL的应用程序与Applet程序都需要该系统参数。</span></li>
</ul>
<span style="font-size: 10pt;">
Web页面中的HTML链接调用JavaScript函数，该函数会与Applet进行交互并将其导向合适的山峰。下面是这些链接中的一个：<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">a&nbsp;href</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">javascript:gotoLocation(MOUNT_RAINIER);</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">Mount&nbsp;Rainier</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">a</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;(southeast&nbsp;of&nbsp;Tacoma,&nbsp;Washington)&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" /></span></div>
<span style="font-size: 10pt;">当点击该链接后，将会调用JavaScript函数gotoLocation。该函数定义在同一个Web页面中：<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;gotoLocation(locationString)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;params&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;locationString.split(';');<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(params.length&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">)&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Lat/lon</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;getWWJApplet().gotoLatLon(parseFloat(params[</span><span style="color: #000000;">1</span><span style="color: #000000;">]),<br />
&nbsp;&nbsp;&nbsp;&nbsp;parseFloat(params[</span><span style="color: #000000;">2</span><span style="color: #000000;">]));<br />
&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
}</span></div>
<span style="font-size: 10pt;">Web页面HTML中的山峰位置将被解码为JavaScript字符串。将从这些字符串中解析出纬度，经度及其它视觉信息，并将它们传递给Applet。 gotoLatLon方法是在WWJApplet类中定义的；上面的方法调用将起动一个JavaScript-to-Java调用，把参数从JavaScript引擎传给Java。World Wind Applet接收该通知，并将视点以动画的方式切换到适当的地方。注意，gotoLatLon方法会迅速地返回，以便浏览器不必等待它的完成；该动画会在一个单独的Java线程中运行。<br />
<img alt="" src="http://java.sun.com/developer/technicalArticles/javase/newapplets/images/mtsthelens.jpg" /><br />
&nbsp;&nbsp;
</span><span style="font-size: 10pt;"><strong>Figure 3.</strong> <em>World Wind Applet with Mount St. Helen's Clicked</em><br />
</span>
<span style="font-size: 10pt;">如上所述，将World Wind Java集成到你的应用程序或Applet程序中的最好方法是将其作为一个JNLP扩展。这允许很多来自网络的集成了World Wind Java的应用程序或Applet程序能够共享World Wind代码资源。为了引用World Wind JNLP扩展，你需将下面的语句行加入到你的应用程序或Applet程序的JNLP文件中的&lt;resources&gt;部分：<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">extension&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">worldwind</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;href</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://worldwind.arc.nasa.gov/java/0.4.1/webstart/worldwind.jnlp</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">extension&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">jogl</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;href</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jnlp</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span></div>
<span style="font-size: 10pt;">注意，World Wind扩展JNLP是区分版本的，所以你需参考World Wind文档或访问<a href="http://forum.worldwindcentral.com/forumdisplay.php?f=37">论坛</a>去找到你的JNLP会引用到的扩展的最新版本。<a href="http://worldwindcentral.com/">World Wind Central</a>是一个关于World Wind最新信息的有用资源。<br />
将World Wind作为一个扩展使用就意味着你不能将WWJApplet直接作为你的main-class使用。由于JNLP文件格式的语义，主jar (main="true")必须定义在主JNLP文件中。但很容易就能适应该限制，你可简单地创建你自己的WWJApplet子类(称之为MyWWJApplet)，而它并不做任何事情：<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">class&nbsp;MyWWJApplet&nbsp;extends&nbsp;WWJApplet&nbsp;{}</span></div>
<span style="font-size: 10pt;">将worldwind.jar置于classpath中，并编译上述类，然后将该类放入它自己的jar文件中。引入这个jar作为你的主jar，MyWWJApplet就成为了你的main-class，然后将其作为JNLP扩展引入到World Wind中。<br />
<br />
<strong><span style="font-size: 12pt;">结论</span></strong><br />
介绍了Java插件对JNLP的支持，这为Applet的发布提供了很多新的可能，这对在浏览器内外发布Java内容的方法的统一又进了一大步。Applet自从它们起始已过了很长的时间，现在随着对JNLP的支持，它们会比以往更快，也更易于定制。<br />
<br />
</span>
<img src ="http://www.blogjava.net/jiangshachina/aggbug/214703.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2008-07-14 19:56 <a href="http://www.blogjava.net/jiangshachina/archive/2008/07/14/214703.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java Applet不适用于这样的应用？(译)</title><link>http://www.blogjava.net/jiangshachina/archive/2008/02/26/182208.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Tue, 26 Feb 2008 06:07:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2008/02/26/182208.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/182208.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2008/02/26/182208.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/182208.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/182208.html</trackback:ping><description><![CDATA[<div align="center"><strong><span style="font-size: 10pt;"><span style="font-size: 14pt;">Java Applet不适用于这样的应用？</span></span></strong><br />
</div>
<span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt;">在基于浏览器的应用中，为何Flash大大流行于Java Applet?Java Applet是否真的不适用于这样的应用场景？<a href="http://weblogs.java.net/blog/joconner/archive/2008/02/java_applets_no.html">John O'Conner有话要说</a>...(2008.03.29最后更新)</span></span><br />
<span style="font-size: 10pt;"><br />
&nbsp;&nbsp;&nbsp; 我已正与一个公司一起创建一个聊天系统，以帮助该公司能够在线地销售出它们更多的产品。后端全是Java，还有Spring，Servlet，...都是些好东西。前端是...好吧，是Flash。<br />
&nbsp;&nbsp;&nbsp; 当有可能时，我更喜欢在每个地方都使用Java，故我就这个面向客户的应用--一个真实的聊天客户端程序选择使用Flash而提出了一些问题。这个谈话进行起来就像这样：<br />
&nbsp;&nbsp;&nbsp; <strong><em>John</em></strong>：哇，这个产品在每处都使用了Java，但前端除外，而这正是客户与之实际交互的地方。为什么在那儿选择Flash？<br />
&nbsp;&nbsp;&nbsp; <strong><em>Dev mgr</em></strong>：是的，Flash很容易。使用这样一个简单的UI也是很容易的。<br />
&nbsp;&nbsp;&nbsp; <strong><em>John</em></strong>：我明白，但使用Java也可十分简单地做出这个聊天UI。现在，Swing的布局管理器已很容易使用，特别是当你使用像NetBeans这样的IED来布局UI时。<br />
&nbsp;&nbsp;&nbsp; <strong><em>Dev mgr</em></strong>：那可能是对的，但这种选择不仅仅是基于简易地创建UI。<br />
&nbsp;&nbsp;&nbsp; <strong><em>John</em></strong>：哦？那是什么呢？<br />
&nbsp;&nbsp;&nbsp; <strong><em>Dev mgr</em></strong>：每个客户端浏览器中都有Flash。我们不必再安装一个运行时程序了。<br />
&nbsp;&nbsp;&nbsp; <strong><em>John</em></strong>：Java也将会那样，不是吗？大部分的PC制造商都包含它了。<br />
&nbsp;&nbsp;&nbsp; <strong><em>Dev mgr</em></strong>：也许，但我们知道Flash肯定是那样的。Flash遍及网络，而且很可能客户已经有了Flash的运行时程序。如里没有的话，下载与安装这个运行时程序也是很快、很容易的。<br />
&nbsp;&nbsp;&nbsp; <strong><em>John</em></strong>：是的，但Java也将易于安装。<br />
&nbsp;&nbsp;&nbsp; <strong><em>Dev mgr</em></strong>：但是Java会花费很长的安装时间。它太大了。<br />
&nbsp;&nbsp;&nbsp; <strong><em>John</em></strong>：我不知道现在是否还是那样。为了使运行时程序更小也更加的模块化，已经做了很多工作。所以你仅需要下载你所需要的部分。<br />
&nbsp;&nbsp;&nbsp; <strong><em>Dev mgr</em></strong>：我们所需要的就是非常、非常的简单。一个非常简单的UI，它有着非常简单的功能去中转聊天文本。Flash可以做得很好。<br />
&nbsp;&nbsp;&nbsp; 交谈继续着，但我不想弄得太长。可能Flash做小应用时会比Java做的更好？在Sun工作了如此长的时间，我就很自然地想像Java无处不在，而且其它的每个人也都喜欢它。我一直都能把事情做好...但很显然，不是每个人都能做到。下载文件的大小从未烦扰过我...但它确实烦扰到了其它的一些人。<br />
&nbsp;&nbsp;&nbsp; 另外，我发现感觉与现实一样重要。所以，如果Java现在更快，更轻巧，而且在浏览器中工作得极好，那将会怎样呢？不知何故，这还是没有用。旧有的感觉仍就在那儿--Java很慢，很大，而且很难在浏览器中工作。更令人惊讶的是，你会发现有些人在那种情况下就再也不把Java当作他们的解决方案了。<br />
&nbsp;&nbsp;&nbsp; 我联系了一些朋友，他们一起搭建面向客户的网站。他们也是使用Flash。那么Java呢？当然...都是在后端的业务逻辑中。那么对于客户将会使用到的应用呢？如果这些应用是嵌入到浏览器中的，它们就会使用Flash。哇!<br />
&nbsp;&nbsp;&nbsp; 这样，你如何对待这种感觉呢？Java需要做些什么以反击这些旧有的感觉？为什么Flash在基于浏览器的应用中更为流行？我们如何才能使那些应用转而使用Java？<br />
<br />
</span>
<img src ="http://www.blogjava.net/jiangshachina/aggbug/182208.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2008-02-26 14:07 <a href="http://www.blogjava.net/jiangshachina/archive/2008/02/26/182208.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>