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

相关文章
|
1月前
|
SQL 监控 数据可视化
完全开源!国内首个完全开源JAVA企业级低代码平台
JeeLowCode 是一款专为企业打造的 Java 企业级低代码开发平台,通过五大核心引擎(SQL、功能、模板、图表、切面)和四大服务体系(开发、设计、图表、模版),简化开发流程,降低技术门槛,提高研发效率。平台支持多端适配、国际化、事件绑定与动态交互等功能,广泛适用于 OA、ERP、IoT 等多种管理信息系统,帮助企业加速数字化转型。
|
17天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
94 26
|
29天前
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
48 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
28天前
|
Java
Java项目中高精度数值计算:为何BigDecimal优于Double
在Java项目开发中,涉及金额计算、面积计算等高精度数值操作时,应选择 `BigDecimal` 而非 `Double`。`BigDecimal` 提供任意精度的小数运算、多种舍入模式和良好的可读性,确保计算结果的准确性和可靠性。例如,在金额计算中,`BigDecimal` 可以精确到小数点后两位,而 `Double` 可能因精度问题导致结果不准确。
|
29天前
|
SQL 安全 Java
JavaSecLab 一款综合Java漏洞平台
JavaSecLab是一款综合型Java漏洞学习平台,涵盖多种漏洞场景,提供漏洞代码、修复示例、安全编码规范及友好UI。适用于安全服务、甲方安全培训、安全研究等领域,助于理解漏洞原理与修复方法。支持跨站脚本、SQL注入等多种漏洞类型……
|
1月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
1月前
|
Java Android开发
Eclipse 创建 Java 项目
Eclipse 创建 Java 项目
44 4
|
1月前
|
监控 Oracle 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第8天】在 Linux 平台设置 Oracle 开机自启动有多种方法,本文以 CentOS 为例,介绍了两种常见方法:使用 `rc.local` 文件(较简单但不推荐用于生产环境)和使用 `systemd` 服务(推荐)。具体步骤包括编写启动脚本、赋予执行权限、配置 `rc.local` 或创建 `systemd` 服务单元文件,并设置开机自启动。通过 `systemd` 方式可以更好地与系统启动过程集成,更规范和可靠。
120 2
|
1月前
|
人工智能 监控 数据可视化
Java智慧工地信息管理平台源码 智慧工地信息化解决方案SaaS源码 支持二次开发
智慧工地系统是依托物联网、互联网、AI、可视化建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三大体系为基础应用,实现全面高效的工程管理需求,满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效,为监管平台提供数据支撑。
45 3
|
1月前
|
SQL Java 数据库连接
从理论到实践:Hibernate与JPA在Java项目中的实际应用
本文介绍了Java持久层框架Hibernate和JPA的基本概念及其在具体项目中的应用。通过一个在线书店系统的实例,展示了如何使用@Entity注解定义实体类、通过Spring Data JPA定义仓库接口、在服务层调用方法进行数据库操作,以及使用JPQL编写自定义查询和管理事务。这些技术不仅简化了数据库操作,还显著提升了开发效率。
45 3

推荐镜像

更多