速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

云原生时代,Java 会走向末路吗?

  • 2023-04-18
    北京
  • 本文字数:2664 字

    阅读完需:约 9 分钟

云原生时代,Java会走向末路吗?

唱衰 Java 的声音由来已久。


尤其是近几年,云原生时代的到来,软件的交付方式发生了根本性变化,Java 遭受了诸多质疑。

传统领域的 Java 开发,交付的是 Java 应用本身,具体体现在以 “jar”“war” 的形式交付,而云原生最佳实践,则是基于微服务形式,以容器为基本交付单位,并在 K8S 中编排。云原生应用要求更快速地启动、强调资源按量消费,弹性扩展,以及可观测性等。就这一层面而言,在云原生时代,Java 的缺陷确实是天然存在的。


“事实上,Java 技术在云原生时代也在不停地进化。” 面对唱衰 Java 的诸多论调,龙蜥社区 Java 语言和虚拟机 SIG 成员、龙蜥社区 RISC-V SIG 成员、阿里云程序语言与编译器团队负责人、Java Champion 李三红选择理性看待。


“比如更多支持容器部署的特性已经加入到 OpenJDK 版本。一直被人诟病的 Java 启动慢的问题,目前基于 OpenJDK 技术的几个创新项目正在多个不同方向探索,包括 CRaC (Coordinated Restore at Checkpoint) 、Leyden,以及由阿里和 Google 作为主要贡献者的 Fast Startup Incubator 等项目。在资源弹性使用方面,由 Alibaba Dragonwell 提供的 ElasticHeap 功能,主要目的是解决云计算环境下 Java 内存资源使用的弹性问题。最后,OpenJDK 的 JFR 以及 JFR Streaming 技术为构建 Java 云原生可观测工具提供了重要的技术支撑。”

 

Java 面临的挑战,不仅仅是云原生。


李三红认为,从 1995 年 Java 1.0 发布算起, Java 技术这二十多年的发展,大致存在一明一暗两条线的驱动。“一条暗线,是指 Java 或者说支撑 Java 的底层 JVM 技术适配计算机架构的演进与发展。一条明线,是指 Java 作为一个开发者工具,本质是要面向业务领域解决业务问题的,所以自然而然地推动了 Java 在云原生,AI 等方向的演进,解决这些领域内碰到的问题与挑战。”


后摩尔时代,算力增长放缓,更多利用多核、SIMD(单指令多数据流)等并行计算技术,以及异构来释放更大的算力。相较于 C/C++ 这些传统编译型语言,Java 处在软件栈的更高抽象级别,自带 Java 标准库,以及运行时环境,这也给 Java 创新带来了更多的空间以及可能性。


李三红指出, Java 在多核、异构加速领域做了多方面的探索,适应与优化。比如,OpenJDK 孵化的 Vector API 项目,依赖 CPU 的 SIMD 指令,获得计算性能的成倍提升。即将发布的 OpenJDK 19 引入了 Virtual Threads (Preview),旨在帮助 Java 开发者高效处理并发 (尤其针对 IO 密集型场景) 。而在异构领域,早 2014 年 JVM 技术峰会,AMD 就分享了 Sumatra 项目,尝试实现 JVM 与 Heterogeneous System Architecture 目标硬件交互。由 The University of Manchester 发起的 TornadoVM 项目,目标是帮助 Java 开发者不需要了解 GPU 编程语言或者相关的 GPU 体系结构知识就可以编写面向异构的并行程序。


在 AI 方向上,Java 也在与时俱进。据李三红介绍,在企业计算领域,Java 是被使用最多的语言之一,但对于机器学习领域的开发,Java 一直缺乏标准支持,这个方向其实在 JCP-EC 讨论也比较多。

基于 Java SE 技术,在 JCP 流程内推动并最终在 2022 年定稿的 JSR 381 规范,其目标就是为不同领域的 Java 机器学习开发提供通用的可重用设计。JSR 381 定义了标准的 Java API,提供了基本机器学习、图像分类和对象识别方面的处理能力。“依赖于不同的机器学习平台,如 TensorFlow、MXNet 以及 DeepNett 等,JSR-381 提供了不同的实现。对于 Java 生态内的开发者来说,不必再去学习 Python, 可以依赖 JSR-381 VisRec API 去构建你的 AI 应用。”


现实中,Java 应用的版本升级是较为缓慢的。Java 11 (OpenJDK11)距离 2018 年发布已经过去四年多,目前国内大多数的用户仍然停留在 Java 8。李三红认为,动力不足是多方面的,对开发者来说最直接的原因可能是担心升级后兼容性带来的稳定性问题,会直接影响业务的连续性。


这种问题并不罕见。令人振奋的是,处于 Java 生态中的企业正在贡献自己的力量。阿里内部在大规模地往 Java 11、 Java 17 迁移的时候,总结了不少的经验,并且将这些经验通过工具的方式沉淀下来。最后阿里开源了 EMT4J (Eclipse Migration Toolkit for Java) ,能够帮助 Java 应用无缝升级最新版本 JDK, 主要支持从 Java 8 到 Java 11,以及 17 的升级。


李三红还补充道,对于 Java 版本的升级问题,还可以从另一个角度 ——Software Sustainability 来进一步探讨。


“由 Titus Winter 等编写的《Software Engineering at Google - Lessons Learned from Programming Over Time》一书中,谈到了组织的 Codebase Sustainability 概念,强调了两个核心理念:第一,无论应对的是技术需求,还是业务需求,软件代码应当可以做一切应该做的改变。第二,这些改变带来的影响是安全的


“回到 Java 版本升级这个问题,我们在开发 Java 应用的时候,建议应用架构师们把 Java 版本升级纳入到 Software Sustainability 这个维度下考量,对代码开发规范进行相关的约束。例如,不要让你的代码依赖 JDK 内部不公开的 API,不要让你的实现依赖特定的 JDK 版本行为,不要使用被 Deprecated 的 API 等等。架构的目标应当考虑 Code Sustainability,让你的 Java 应用可以在任何时候根据实际需要平滑升级到不同 JDK 版本,不应当因为代码缺乏 Sustainability 而导致的尽量少的版本升级。”


李三红对 Java 的未来充满信心,源于他在 JVM 领域耕耘多年,不仅深入了解 Java 特性,并且有能力进行创新性研究。


在加入阿里之前,李三红一直在 IBM Java 技术中心,参与 J9 虚拟机开发,期间领导了 JVM 多租户项目。目前就职于阿里云,领导程序语言与编译器团队,主要的工作是结合阿里、蚂蚁及云上各业务的需求,在编译器、语言运行时等基础领域进行研究创新。编程语言是基础软件的核心,也是龙蜥技术生态的八大方向之一,Dragonwell 是龙蜥社区 Java 语言和虚拟机 SIG 下的项目。目前,在语言工具链这块,已经形成 Alibaba Dragonwell (Java 生态),Alibaba Cloud Compiler (C++ 生态) 等多个产品来支撑其业务,语言工具链相关的开源技术也在为龙蜥社区的开发者提供支持


2020 年,李三红获得了 Java 技术领导者社区 Java Champions 推荐,被授予 Java Champion 荣誉。Java Champion 由 Java 社区成员提名,并且必须得到现有 Java Champions 成员的一致同意。唯有为 Java / JVM 生态系统做出重要贡献的专家才能获此荣誉。


去年,龙蜥社区理事长单位阿里云第三次入选 JCP 最高执行委员会 (JCP-EC),作为阿里云在 JCP-EC 的代表,李三红一直在参与 JCP-EC 领导下的相关 Java 标准讨论制定工作。

2023-04-18 15:336669

评论 2 条评论

发布
用户头像
C++如果不解决内存安全问题走向末路更容易成真。^-^
2023-04-18 23:02 · 湖南
回复
用户头像
阿里OpenJDK应该是国内最强的JDK了。Java自带虚拟机本身就代表了高性能的可能性,比如GraalVM这些。如果只是因为不适合当前流行的云原生就放弃积累的Java技术,转去新兴的语言,成本是很高的。谁也不能保证新语言到发展又会有什么限制,总不能用不同的语言反复开发相同的功能,没意义。
2023-04-18 18:01 · 广东
回复
没有更多了
发现更多内容

PingCode 性能测试之负载测试实践

PingCode研发中心

软件测试 PingCode

【Docker 那些事儿】容器为什么傲娇?全靠镜像撑腰

Albert Edison

7月月更

2022年中国移动阅读市场年度综合分析

易观分析

移动阅读

Helix Swarm中文包发布,Perforce进一步提升中国用户体验

龙智—DevSecOps解决方案

perforce Helix Core Helix Swarm

31年前的Beyond演唱会,是如何超清修复的?

字节跳动视频云技术团队

2022年国内云管平台厂商哪家好?为什么?

行云管家

云计算 云管平台 云管平台厂商

第十八届IET交直流输电国际会议(ACDC2022)于线上成功举办

E科讯

易周金融 | Q1保险行业活跃人数8688.67万人 19家支付机构牌照被注销

易观分析

金融 银行

洞见科技解决方案总监薛婧:联邦学习助力数据要素安全流通

洞见科技

数据安全 隐私计算 数据隐私计算

【一库】vueuse:我不许身为vuer,你的工具集只有lodash!

摸鱼的春哥

Vue 前端 Vue3 7月月更

一加10 Pro和iPhone 13怎么选?

Geek_8a195c

实战:fabric 用户证书吊销操作流程

BSN研习社

fabric

产品好不好,谁说了算?Sonar提出分析的性能指标,帮助您轻松判断产品性能及表现

龙智—DevSecOps解决方案

回顾V神 Rollups 神作,详解以太坊为何需要二层扩展方案

TinTinLand

区块链 科技

都在说DevOps,你真正了解它吗?

龙智—DevSecOps解决方案

DevOps 运维 开发

科普达人丨一文看懂阿里云的秘密武器“神龙架构”

阿里云弹性计算

云计算 虚拟化 资源管理 神龙架构

深入JS中几种数据类型的解构赋值细节

猪痞恶霸

前端 js ES6 7月月更

如何实现一个延时队列 ?

领创集团Advance Intelligence Group

延时队列 Redis 数据结构 redis 底层原理

太方便了,钉钉上就可完成代码发布审批啦!

阿里云云效

云计算 阿里云 钉钉 jenkins 代码

基于STM32+华为云IOT设计的酒驾监控系统

DS小龙哥

7月月更

室外LED屏幕防水吗?

Dylan

LED显示屏 室外显示屏

一个数据人对领域模型理解与深入

松子(李博源)

大数据 领域模型 模型设计

实时云交互如何助力教育行业发展

3DCAT实时渲染

实时云渲染 云交互

华为云数据库DDS产品深度赋能

程思扬

数据库 华为云 DDS

多年锤炼,迈向Kata 3.0 !走进开箱即用的安全容器体验之旅| 龙蜥技术

OpenAnolis小助手

开源 容器 云原生 龙蜥技术 Kata Containers

对话龙智高级咨询顾问、Atlassian认证专家叶燕秀:Atlassian产品进入后Server时代,中国用户应当何去何从?

龙智—DevSecOps解决方案

Server Atlassian Jira DC版

容器环境minor gc异常频繁分析

wgy

Java minor gc

浅识k8s中的准入控制器

火线安全

云安全 云安全技术 云安全攻防 云安全研究

Python|字符串操作

AXYZdong

7月月更

Lombok使用引发的血案

技术小生

7月月更

DataKit——真正的统一可观测性 Agent

观测云

云原生时代,Java会走向末路吗?_语言 & 开发_龙蜥社区_InfoQ精选文章