写点什么

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

  • 2007-09-30
  • 本文字数:1992 字

    阅读完需:约 7 分钟

在 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,并且按需要提示用户安装新版本。目前的清单如下:

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

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

<script><br></br>deployJava.runApplet({code:"Applet.class", archive:"applet.jar", width:320, height:240}, null, "1.5");<br></br></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

2007-09-30 09:301040

评论

发布
暂无评论
发现更多内容

通过一个实际例子理解Kubernetes里pod的自动scale - 水平自动伸缩

汪子熙

Kubernetes k8s 28天写作 docker build 12月日更

☕【权限设计系列】「认证授权专题」微服务架构的登陆认证问题

码界西柚

微服务架构 12月日更 权限认证机制 授权设计

梦想起航

向往

盘点2021

在线JSON转PHP Array工具

入门小站

工具

Spring框架基础知识(03)

海拥(haiyong.site)

28天写作 12月日更

助车企升级,旺链科技与南方电网、联想等名企同斩获「创新案例奖」

旺链科技

区块链 产业区块链 供应链金融

域名基本信息查询小技巧

喀拉峻

网络安全 安全 信息安全

How old are you | 尚硅谷大数据之Canal视频教程

编程江湖

大数据 canal

实现一键部署与高效集群管理,SphereEx-Boot 正式上线

SphereEx

开源 开源社区 SphereEx ShadingSphere 一键安装

填问卷抽大奖,中奖绝缘体的跨年福利快来领取!

InfoQ写作社区官方

热门活动

HDFS源码解析:教你用HDFS客户端写数据

华为云开发者联盟

hdfs block appendChunk

带你认识三种kafka消息发送模式

华为云开发者联盟

kafka 时间 异步 消息发送 producer

面试官:方法重写时需要注意哪些问题?

王磊

QCon-oCPX多目标多场景联合建模在OPPO的实践

安第斯智能云

算法

【转】大数据开发之Spark面试八股文

@零度

大数据 spark

Dubbo 框架学习笔记十七

风翱

dubbo 12月日更

一次完整的渗透测试&仅供学习研究

H

黑客 网络安全 渗透测试·

使用亚马逊云科技DevOps 工具构建 InnerSource 生态系统

亚马逊云科技 (Amazon Web Services)

开源 InnerSource

固定资产管理平台系统解决方案

低代码小观

企业管理 资产管理 CRM 企业管理系统 CRM系统

Linux之atime,ctime,mtime的区别

入门小站

Linux

2021 优秀开源项目公布,Apache APISIX 位列其中!

API7.ai 技术团队

api 网关 Apache APISIX 优秀开源项目

基于磁盘量身定制,十亿规模高效向量检索方案

Zilliz

向量检索 anns 向量计算

60 K8S之EFK日志管理系统

穿过生命散发芬芳

k8s 28天写作 12月日更

兄弟要盘吗?

为自己带盐

爬虫 dotnet 28天写作 12月日更

架构训练营模块三作业

zhongwy

架构实战营 「架构实战营」

千万级日志回放引擎设计稿

FunTester

性能测试 测试框架 FunTester 流量回放 GOREPLAY

揭秘字节跳动基于Hudi的实时数据湖平台

字节跳动数据平台

大数据 实时数据湖

前端React 开发中必须知道的5个技巧

@零度

前端开发 React

尚硅谷大数据之Canal视频教程发布!

@零度

大数据

技术“开源”对于金融业软件发展的影响

Speedoooo

安全 ios开发 APP开发 Andriod开发 小程序容器

人工智能(NLP)|社交网络中的网络表示学习技术研究

索信达控股

人工智能 算法 网络结构

即将到来的消费级JRE鼎力放飞桌面Java_Java_Charles Humble_InfoQ精选文章