BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

即将到来的消费级JRE鼎力放飞桌面Java

| 作者 Charles Humble 关注 903 他的粉丝 ,译者 岳立东 关注 0 他的粉丝 发布于 2007年10月1日. 估计阅读时间: 6 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

在JavaOne大会上,Sun公司不仅宣布了JavaFX,而且其旗下的Ethan Nicholas和Denis Gu还进行了一场演讲,展示了将于2008年投放的消费级JRE上的一些细节工作。关于这个话题,“Filthy Rich Clients”的作者Chet Haase写了一篇博客日志 。虽然细节上还不是完全清楚,但这是个很明确的信号,表明Sun内部关注点朝桌面和最终用户体验上发生了一个重大转移,特别是对Windows版的JRE正在下大力量。

针对初始下载问题,Windows版的消费级JRE将引入原本为Java 7规划的Java内核。其工作原理为先获取常用的Java运行时核心部分,比如虚拟机、垃圾回收器和类加载器,然后下载应用指定的其它依赖代码,下载加载时“找不到”的类代码,然后再并行下载JRE的剩余部分,直到全部发行内容都安装到用户系统上。为了支持这种方式,Sun对Java类库的组织方式已经做了一些调整,产生出一个小了很多的rt.jar,并把没包括进去的类和类库按通常的包边界划分组装成若干组件。结果是启动一个应用前必须下载的内容尺寸显著减小。比如Limewire,现在缩小到4MB以下。

通过减小组成Java运行时的各文件本身的物理尺寸,磁盘寻道(disk seek)时间也会减少一点,这有助于(减少)冷启动的时间,但是Sun有一个综合起来更激进的减少冷启动所需次数的方案。Java某些部分已经在磁盘缓存中时,也就是热启动的情况下,速度早就优化得不错了——典型的应用大约2-3秒就能启动。不过,有时候碰到一些Java类库非常大,而操作系统要在其中寻找所需的各种数据,这时候冷启动会慢得难受。对此有一种解决办法比较常见(像QuickTime和Internet Explorer等应用就是这样),就是启动时将虚拟机载入内存。然而如果不跑什么Java程序的话,这样对RAM就是一种浪费,并且会让人觉得装了 Java就会让机器运行得更慢。对于Windows版消费级JRE,Sun要追求的另一种方案,就是把Java核心文件置于磁盘缓存中。这通过执行一个后台服务定期动(touch)一下相关文件来实现。结果Java应用就可以获得和热启动相近的启动时间。该服务对机器整体性能影响很小,如果系统内存短缺时,操作系统会释放磁盘缓存而回收内存(不用像处理内存中的应用和数据那样,必须在回收之前把内存页内容写入磁盘)。在(内存)严重受限的机器上,该服务自行关闭,不影响系统。

为了帮助开发者给用户机安装正确版本的Java,Sun引入了一些新的JavaScript命令,开发者可以用来查明已经安装了哪些版本的JRE,并且按需要提示用户安装新版本。目前的清单如下:

  • getJREs() 返回已安装JRE版本的清单
  • versionCheck(pattern) 有已安装JRE版本与字符串模式(例如:“1.5*”,“1.6+”)匹配时返回true
  • installLatestJRE() 使用浏览器或者“适于平台的机制”安装最新JRE
  • writeAppletTag(attributes, parameters) 不再需要手工写Applet标签
  • runApplet(attributes, parameters, version) 确保合适的JRE版本已经安装,然后输出Applet标签
  • isWebStartInstalled() 检查WebStart是否已安装
  • createWebStartLaunchButton(jnlpURL) 输出一个按钮,点击时确保WebStart已安装然后启动特定的JNLP

例如下面的脚本会检查是否已安装JRE 1.5或更高版本。如果已经安装Applet就会启动,如果还没有,就会要求用户下载JRE:

<script>
deployJava.runApplet({code:"Applet.class", archive:"applet.jar", width:320, height:240}, null, "1.5");
</script>

这个脚本还是有些限制。具体说它只能检测已安装最高版本的JRE,并且只能检测家族版本(1.5而不是1.5.0_11),不过在Sun支持的所有平台上都可用。Windows版的消费级JRE还包括了浏览器插件,可以通过本地代码执行这些功能,也就是说可以获得更准确的信息。从开发者的视点来看这些都是无缝处理的——这些JavaScript函数发现有插件时就直接调用插件。

同时还有其他一些增强。开发了一个新的跨平台Swing外观(Look & Feel),Nimbus,InfoQ曾在这里加以报道。Sun完全重写了安装程序,让它看起来远没有早先版本那么吓人。如果你不想用Swing的FileChooser(文件选择对话框),将来会有办法使用平台本地的FileChooser,Sun同时暗示消费级JRE里还将会有新的媒体组件,虽然目前还没有具体细节透露出来。

查看英文原文:Upcoming Consumer JRE Seeks to Jumpstart Desktop Java
译者简介:岳立东,Ableverse创始人,技术推广大使。开源项目WoW(内含ToB对象数据库)和SecureJSH创建者。目前致力于东道组件接合(Hosting Based Interfacing)理论研究,在此基础上的软件并行分布架构及对象数据库应用,技术博客http://complystill.javaeye.com/。欲参与InfoQ中文站内容建设,请邮件至china-editorial[at]infoq.com

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT