Oracle 正式启动 “Leyden” 项目!在 Java 平台引入“静态映像”以解决运行缓慢等问题

简介: Oracle 正式启动 “Leyden” 项目!在 Java 平台引入“静态映像”以解决运行缓慢等问题

近日,Oracle Java 平台组首席架构师 Mark Reinhold 在社交媒体发文正式宣布启动 “Leyden”项目。据悉,该项目已获得批准,将通过在 Java 平台上引入“静态映像”来缓解启动和性能缓慢的问题,旨在加速 Java 业务的创建。

image.png

据了解,“Leyden”项目计划最早于 2020 年 5 月份左右提出,至今已经被讨论了 2 年多。

当时,Mark Reinhold 在一份 Java 邮件列表中发表了一篇关于他提议和领导的工作的帖子,他表示“这项工作被称为“Leyden”项目,将通过在 Java 平台和 Java 开发工具包(JDK)中引入“静态映像”的概念来解决这些痛点。

Leyden 项目引入“静态映像”

“Leyden”项目里引入的所谓的“静态映像”,是一款独立于应用程序的程序,它派生自一个运行该应用程序的应用程序,而非其他应用程序。

静态映像相对于它可以加载的类来说是一个“封闭的世界”:在运行时,不能从映像外部加载类,也不能动态创建类。封闭世界的约束严格限制了 Java 的自然动态性,特别是在运行时反射和加载类的功能方面,许多现有的 Java 框架和库都依赖这些功能。

以上两个约束不仅可以减少图像的大小及其启动时间,同时这些约束还“允许进行积极的提前编译(Ahead-of-time compilation),从而缩短图像达到峰值性能的时间,提前编译是将高级编程语言(如 C 或 C++)编译成本机机器代码,以便生成的二进制文件可以本机执行的行为。

Leyden 项目将加速 Java 的优化工作

据介绍,Leyden 是一个基于过去项目基础上新建立的项目,包括 GNU 编译器 for Java 和 GraalVM 的本机映像功能。GraalVM 是一种高性能运行时,针对各种语言(如 Java 和 JVM 语言、JavaScript、Ruby、Python 等)进行了性能优化,并针对多语言或多语言应用程序实现了互操作性。

image.png

由于 Leyden 项目的灵感来自 GraalVM,这两个项目有着共同的组成部分,它们可能会(也可能不会)进入主流 Java 规范。然而,由于目前缺乏进一步的信息,一些观察家认为这两个项目是交织在一起的。

早在 2020 年 Leyden 项目刚提出的时候,Longmeado Omdia 分析师 Bradley Shimmin 就评价称:“Leyden 项目似乎应该成为 GraalVM 项目的一部分,我相信作者希望这样做,因为它实现了 GraalVM 支持的相同目标,除了这里,他们提议创建一个针对单个应用程序的极其精简的运行时环境。”。

(Valhalla 项目是 Oracle 正在进行的一项工作,它引入了值类型,这是一种允许 Java 程序在运行时更高效地管理数据的机制。Oracle 表示,当 Valhalla 项目最终并入 JDK 时,整个性能格局将发生变化。)

此外,其他大型 Java 社区的成员也对该 Leyden 项目表示感兴趣且期待。早前,Red Hat 的产品管理高级总监 Rich Sharples 就提到,该项目“旨在从 OpenJDK 本身的 Graal/SubstrateVM 中提供我们所需的大部分内容”。

深入改进 Java 平台:正式开启第一步

当然,不是所有应用程序都能很好地适应“Leyden”项目“静态映像”的这这两个约束,也不是所有的开发人员都愿意接受这个约束。

但总而言之,Mark Reinhold 从一开始就没有采用封闭世界的约束,而是通过探索一系列约束,提出了一种渐进的方法,由此产生的优化可能比封闭世界的约束弱,但优化应该适用于更广泛的现有代码。

此次,Mark Reinhold 于 5 月 20 日在 OpenJDK 的一篇文章中正式宣布了 “Leyden” 项目的启动 —— “现在是采取第一步并开始该项目的时候了”,也是意在通过 “Leyden” 项目加速 Java 业务的创建。

Mark Reinhold 表示,“将沿着上述约束范围逐步工作,从小而简单的开始,以便能够深入了解 Java 平台规范所需的更改”。“在此过程中,也将努力保持 Java 的可读性、兼容性和通用性的核心价值”。

Mark Reinhold 还补充称,从长远来看, Leyden 项目开发人员可能会采用完全封闭世界的限制来生成完全静态的映像。同时,该项目还将在很大程度上支持现有的 JDK 组件,如 JVM 热点、C2 编译器、共享类和应用程序数据以及 JLink 代码工具。

参考链接:https://www.computerworld.es/...

相关文章
|
25天前
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
174 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
1月前
|
前端开发 JavaScript Java
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
119 13
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
|
1月前
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
89 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
27天前
|
SQL JavaScript 安全
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
77 11
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
|
1月前
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
97 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
26天前
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
62 7
|
2月前
|
前端开发 Java 程序员
菜鸟之路day02-04拼图小游戏开发一一JAVA基础综合项目
本项目基于黑马程序员教程,涵盖面向对象进阶、继承、多态等知识,历时约24小时完成。项目去除了登录和注册模块,专注于单机游戏体验。使用Git进行版本管理,代码托管于Gitee。项目包含窗体搭建、事件监听、图片加载与打乱、交互逻辑实现、菜单功能及美化界面等内容。通过此项目,巩固了Java基础并提升了实际开发能力。 仓库地址:[https://gitee.com/zhang-tenglan/puzzlegame.git](https://gitee.com/zhang-tenglan/puzzlegame.git)
46 6
|
5月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
369 64
|
3月前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
179 11
|
4月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。

热门文章

最新文章

推荐镜像

更多