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/...

相关文章
|
3天前
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
39 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
21小时前
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
34 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
17天前
|
前端开发 Java 程序员
菜鸟之路day02-04拼图小游戏开发一一JAVA基础综合项目
本项目基于黑马程序员教程,涵盖面向对象进阶、继承、多态等知识,历时约24小时完成。项目去除了登录和注册模块,专注于单机游戏体验。使用Git进行版本管理,代码托管于Gitee。项目包含窗体搭建、事件监听、图片加载与打乱、交互逻辑实现、菜单功能及美化界面等内容。通过此项目,巩固了Java基础并提升了实际开发能力。 仓库地址:[https://gitee.com/zhang-tenglan/puzzlegame.git](https://gitee.com/zhang-tenglan/puzzlegame.git)
36 6
|
2月前
|
Java Maven
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
在Java项目中,启动jar包时遇到“no main manifest attribute”错误,且打包大小明显偏小。常见原因包括:1) Maven配置中跳过主程序打包;2) 缺少Manifest文件或Main-Class属性。解决方案如下:
536 8
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
|
20天前
|
算法 搜索推荐 Java
【潜意识Java】深度解析黑马项目《苍穹外卖》与蓝桥杯算法的结合问题
本文探讨了如何将算法学习与实际项目相结合,以提升编程竞赛中的解题能力。通过《苍穹外卖》项目,介绍了订单配送路径规划(基于动态规划解决旅行商问题)和商品推荐系统(基于贪心算法)。这些实例不仅展示了算法在实际业务中的应用,还帮助读者更好地准备蓝桥杯等编程竞赛。结合具体代码实现和解析,文章详细说明了如何运用算法优化项目功能,提高解决问题的能力。
54 6
|
20天前
|
Java 数据库连接 数据库
【潜意识Java】深度分析黑马项目《苍穹外卖》在Java学习中的重要性
《苍穹外卖》项目对Java学习至关重要。它涵盖了用户管理、商品查询、订单处理等模块,涉及Spring Boot、MyBatis、Redis等技术栈。
52 4
|
1月前
|
存储 Java BI
java怎么统计每个项目下的每个类别的数据
通过本文,我们详细介绍了如何在Java中统计每个项目下的每个类别的数据,包括数据模型设计、数据存储和统计方法。通过定义 `Category`和 `Project`类,并使用 `ProjectManager`类进行管理,可以轻松实现项目和类别的数据统计。希望本文能够帮助您理解和实现类似的统计需求。
83 17
|
1月前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
1月前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
95 17

推荐镜像

更多