NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

即将到来的消费级 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

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2007-09-30 09:30761

评论

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

特种设备如何管理?不同岗位视角职责解析

PreMaint

设备管理 特种设备

HMS Core手语服务荣获2022中国互联网大会“特别推荐案例”:助力建设数字社会

HMS Core

手语 HMS Core

探知数字化研发4 - 底座篇

薛飞

数字化研发 数字化底座

千万级学生管理系统设计试卷存储方案

Geek_92ba6f

洞见科技姚明:隐私计算行业将会发展为多层级多领域的数据智能流通网络

洞见科技

有奖报名|StarRocks 获开源热力值增速第一,有你的贡献

StarRocks

数据库

张文歆:思维需碰撞,才有更大的“火花”|对话 Doris

SelectDB

开源 职场 成长 学习路线 开源治理

打开时空隧道,重演云栖72小时云世界

阿里云视频云

阿里云 云栖大会

房产|1-10月全国房地产开发投资数据解读

前嗅大数据

Awesome MegEngineer 英雄招募帖,开源社区专属权益等你来领

MegEngineBot

深度学习 开源 MegEngine 开发者福利

IM通讯协议专题学习(二):快速理解Protobuf的背景、原理、使用、优缺点

JackJiang

node.js的path路径模块和http模块

急需上岸的小谢

11月月更

软件测试 | 接口自动化你不懂?听HttpRunner的作者怎么说

测试人

软件测试 自动化测试 接口测试 接口自动化 HttpRunner

战略合作再升级!合合信息与腾讯云联合推出海外智能风控方案

科技热闻

视频清晰度优化指南

得物技术

深度学习 算法 H.265 视频质量 图像超分

加密算法是什么?有哪几种类型?有什么用?

行云管家

加密算法

初步探索GraalVM--云原生时代JVM黑科技

京东科技开发者

Java lua jdk 云原生 GraalVM

关于HTTPDNS,你知道多少?

移动研发平台EMAS

阿里云 网络 HTTP #EMAS

DTSE Tech Talk | 第11期:深入浅出畅谈华为云低时延直播技术

华为云开发者联盟

云计算 后端 华为云

EventBridge 生态实践:融合 SLS 构建一体化日志服务

阿里巴巴云原生

阿里云 云原生 EventBridge

StarRocks 与 DataPipeline 完成兼容性互认证,携手共建数据基础设施生态

StarRocks

数据库

精彩议程更新,从云原生到 Serverless 的思考和收获,邀你共同见证丨PingCAP DevCon 2022

PingCAP

TiDB

解析 RocketMQ 多样消费功能-消息过滤

阿里巴巴云原生

阿里云 RocketMQ 云原生

kubernetes下jenkins实战maven项目编译构建

程序员欣宸

DevOps jenkins 11月月更

一文带你回顾操作系统的内存知识点

华为云开发者联盟

操作系统 开发 内存 华为云

node.js的模块化与npm

急需上岸的小谢

11月月更

分布式锁

急需上岸的小谢

11月月更

Ernie-SimCSE对比学习在内容反作弊上应用

百度Geek说

人工智能 AI技术 企业号十月 PK 榜

【C语言】goto 关键字

謓泽

11月月更

软件测试校招面试题 | 实习生和应届生有什么区别?

测试人

面试 软件测试 自动化测试 测试开发 实习

HUAWEI DevEco Studio 3.1版本发布,配套ArkTS声明式开发全面升级

HarmonyOS开发者

HarmonyOS

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