您的位置:网站首页 > Java软件 > 正文

20 多年历史的 Java 正在焕发第二春

类别:Java软件 日期:2023-10-15 13:03:56 人气: 来源:

  从 1995 年第一个版本诞生到现在,Java 已经走过了 20 多个年头。本文主要从 JavaSE 开源现状、OpenJDK 版本生态到 OpenJDK 技术趋势三个方面讲述当前基础 Java 技术的发展,进一步讨论在云原生、AI、多语言生态领域支撑 Java 应用的基石——Java Virtual Machine (JVM) 技术,面向未来的演进趋势。构建于这些技术之上的微服务框架、编程模型等 Java 前沿技术方向的实践分享可关注 QCon 全球软件开发大会(站)2020 获悉。

  1991 年,James Gosling 带领团队开始了一个叫Oak的项目,这个就是 Java 的前身。1995 年,Java1.0 发布。“Write once, run anywhere这句 Java 口号想必大家耳熟能详。Java 刚开始出现的时候主要面向 Interactive Television 领域,直至后来几年的发展,当时的 SUN(后来在 2010 年被 Oracle 收购)一度想用 Java 来打造桌面的网络操作系统,取代当时如日中天的 Windows。不过 Java 后来的发展,不曾想虽未在桌面领域内取得多大的建树,出乎意料地,却在企业级应用领域开花结果,占据了如今几乎的地位。失之東隅,却收之桑榆。

  云 + 开源结合在一起,使得普通开发者以较低的门槛获得一流工具 (链) 的使用和体验,任何一家企业都可以像任何大型组织一样,使用的相同技术 (democratizing),这是开发者的黄金时代。

  企业在选择使用那个 Java Vendor 的 JDK 版本时,几个方面的考虑因素可以参考:

  性能与效率:是否可以在问题诊断,性能调优方面提供有效的工具支持,帮助一线的开发同学高效地解决 Java 问题。在 JVM,到 JDK (Class library) 层面,是否有面向企业业务场景的优化特性,可以帮助提升资源的利用率,生产系统的稳定性等等。

  同时,Alibaba Dragonwell 作为 OpenJDK 的下游,每个发行版都会同步上游最新更新,包括安全更新,问题修复等,并经过阿里内部大规模的应用集群测试。

  如果从 JVM 视角来总结梳理下目前 OpenJDK 社区正在发生,孵化的相关技术,主要从工具,GC,编译器,以及 Runtime 四个方面进行一个主要概括:

  Oracle 从 Java 11 开源了其之前一直作为商业功能的 JFR,JFR 是功能强大的 Java 应用问题诊断与性能剖析工具。阿里巴巴也是作为主要的贡献者,与社区包括 RedHat 等,一起将 JFR 移植到了 OpenJDK 8, 预计 2020 年 7 月即将发布的 OpenJDK 8u262 (Java8) 将会默认带有 JFR 功能,这样 Java 8 的用户可以基于这个版本免费使用 JFR 功能。

  2020,站在一个全新的节点上,本文也从三个大的方面 Cloud Native, AI,以及多语言生态三个方面展望下未来的发展,有些讨论本身是超越 Java 本身的。

  云原生时代,软件的交付方式发生的根本性变化。以 Java 为例,在之前 Java 开发者交付的是应用本身,具体体现在以 jar, war 的形式交付, 而云原生则是以 Container 为交付单位的:

  Java 语言作为企业计算,互联网领域的王者,拥有一致性,丰富的构建在 Java 语言之上的生态系统, 丰富的三方库,多样的 Serviceability 支持等,随着云时代应用微服务化,Serverless,这些新的架构逐渐触及到了 Java 程序速度提升的天花板 —— Java 自身的启动运行开销。

  在 Java for Cloud Native 方向,我们也开展了相关研发工作。Java 是静态语言,但是包含了大量的动态特性,包括反射,Class Loading,Bytecode Instrument (BCI) 等等,这些动态特性本质上都是违反 GraalVM/SVM 所要求的 Closed-World Assumption (CWA) 原则,这也是导致传统跑在 JVM 的 Java 应用不容易在 SVM 编译运行的主要原因。阿里巴巴 JVM 团队对 AJDK 做了静态化裁剪,务求在 Java 静 / 动态特性之间找到一个确定的边界,从 JDK 的层面为 Java 静态编译提供可能性。同时向上,与蚂蚁中间团队合作,定义面向静态编译的 Java 编程模型,通过编程框架来约束 - Java 应用的开发是面向静态编译友好的。我们静态编译了基于蚂蚁开源中间件 SOFAStack 构建的服务注册中心 Meta 节点应用,相较于传统 的运行在 JVM 上,性能有量级的提升:服务启动时间降低了 17 倍,可执行文件大小降低了 3.4 倍,运行时内存降低了一半。详见 [6]。

  而在 Parallel Languages 层面,对 C&C++ 开发人员,CUDA 的出现降低了 GPU 的编程门槛,但 GPU 和 CPU 两种硬件模型本质区别,导致过高的开发成本,需要学习和了解更多底层硬件细节,还更不用说更高级语言的开发语言像 Java 等所面临的底层硬件模型与高级语言之间巨大的 GAP。

  回到 AJDK, Graal 已经在 AJDK 8 开始支持, JS/Graal 这样成熟的技术,已经在阿里内部业务上线。

  Java 是一项二十多年前被发明出来的技术,她历经,几易其主,但却历久弥新。这篇文章旨在为 Java 的开发者们梳理下目前的 Java 技术现状,以及讨论在云、AI 等重要领域内 Java 技术的演进趋势。在介绍的相关部分,我们也穿插了阿里的一些工程实践。作为世界上最大的 Java 用户之一,我们也一直在探索把前沿的 Java 技术,通过在阿里丰富的业务场景的试验,真正把这些技术应用于真实的生产。我们也非常乐于分享和贡献 Java 领域的经验、实践与技术洞见,共同促进 Java 的发展。

  

关键词:以前 java软件
0
0
0
0
0
0
0
0
下一篇:没有资料

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

郑重声明:本站资源来源网络 如果侵犯了你的利益请联系站长删除

CopyRight 2010-2012 技术支持 FXT All Rights Reserved