进击的 Java !

news2024/11/15 22:32:11

编者按:近几年,随着云原生时代的到来,Java 遭受了诸多质疑。国际形势和行业格局的变化,大家一定充分感受到了云原生这个话题的热度,难道 Java 真的已过巅峰时期,要走向末路了吗?龙蜥社区 Java 语言和虚拟机 SIG 成员、龙蜥社区 RISC-V SIG 成员李三红就这个问题发表了他的看法。本文转自 OSCHINA,以下为原文,欢迎阅读:

(图 / 李三红)

唱衰 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 标准讨论制定工作。

活动预告

全球开源技术峰会(Global Open-source Technology Conference),简称 GOTC,是由开放原子开源基金会、 Linux 基金会亚太区、上海浦东软件园和开源中国联合发起的,面向全球开发者的一场盛大开源技术盛宴。5 月 27 日至 28 日,GOTC 2023 将于上海举办为期 2 天的开源行业盛会。大会将以行业展览、主题发言、特别论坛、分论坛的形式展现,与会者将一起探讨元宇宙、3D 与游戏、eBPF、Web3.0、区块链等热门技术主题,以及开源社区、AIGC、汽车软件、开源商业化、开源教育培训、云原生等热门话题,探讨开源未来,助力开源发展。

此次大会,龙蜥社区 Java 语言和虚拟机 SIG 成员、龙蜥社区 RISC-V SIG 成员李三红受邀担任 “基础设施与软件架构” 分论坛的出品人。该分论坛入选的议题,是经过了李三红和大会组委会深入讨论,精心安排的。希望从多个维度,最大程度覆盖了基础软件各领域的介绍分享。既有最底层芯片技术 (RISC-V) 的话题,也包括了像 C++、Java 语言运行时的内容,还包含了应用最广泛的中间件 Dubbo、RocketMQ、 Kafka 等内容的分享。

2023 年 5 月 28 日(周日),GOTC 2023 “基础设施与软件架构” 分论坛将为开发者们提供基础架构领域最丰富、最前沿、以及最具技术性的内容分享。期待各位的莅临。

GOTC 2023 报名通道现已开启,欢迎点击链接报名参会:https://www.bagevent.com/event/8387611

进入官网了解更多信息,请访问: https://gotc.oschina.net/

—— 完 ——

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/456287.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Auto-GPT】会自主完成任务的 AI!安整的安装&使用教学

ChatGPT 需要我们不停的输入指令,引导 AI 的回答方向才能得到期待的结果;而 Auto-GPT 之所以爆红,就是因为他能够“自我反思”,只要给他任务,他就会不停地自问自答,不需要人为插手。 听起来是不是棒呆了?就让笔者透过这篇文章带大家了解如何安装 Auto-GPT,以及如何使用…

深入 Pinia:从代码出发探索 Vue 状态管理的奥秘

目录 一、 🏞️创建源码分析环境1. 创建一个 vue 项目2. Pinia 源码入口3. 复制 Pinia 源码 & 在 main.ts 中初始化 Pinia 插件4. 添加必要仓库依赖5. 添加必要环境变量6. 环境测试 二、🧐源码分析(1)——执行流程三、&#x…

图像修复(Image Restoration)前沿

背景与现状 图像修复是一个长期存在的低层次视觉问题,旨在从损坏的输入图像中获取高质量图像,例如去模糊、去噪、去雾、去雨以及超分辨等。 L D ( H ) γ \mathbf{L} \mathbf{D}(\mathbf{H}) \gamma LD(H)γ 其中,L是低质量图像&#x…

电脑突然变成绿屏错误代码无法使用怎么办?

电脑突然变成绿屏错误代码无法使用怎么办?有用户使用电脑的时候,电脑桌面变成了绿屏的显示,所有的操作无法继续进行。遇到这个问题要怎么去进行解决呢?来看看详细的解决方法教学吧。 准备工作: 1、U盘一个(…

Unity打包google play最新要求的aab文件的方法

很久不搞打包了,没想到google又整出新的花活了,apk变成了aab,这里分享一下。 首先有几个网址很重要,这里说一下: GitHub - google/play-unity-plugins: The Google Play Plugins for Unity provide C# APIs for acce…

第八届中国航天日 数字文创助推航天新国潮

2023年,正值中国空间站应用与发展新阶段开局之年,距离地球400公里外的天宫见证我国载人航天工程“三步走”发展战略从构想成为现实,中国空间站常态化运行之旅正式起航。 回首半个世纪前的酒泉戈壁,中国首枚运载火箭托举东方红一号…

MyBatisPlus代码生成器使用

MybatisPlus特点 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD 操作:内置通用 Mappe…

使用FME 批量OSGB转FBX(OBJ) (亲测)

首先感谢这个UP主:OSGB单体模型批量转FBX,并保留原有文件目录_哔哩哔哩_bilibili 吐槽:刚开始使用了OpenSceneGraph 去转换,发现贴图有黑斑。而且没有找到批量转换的方法。于是花费几个小时时间去查阅相关资料,最后确定…

“上海升级”后 以太坊抛压为何没来?

关联加密资产市场的Web3重新进入市场上升期,而被普遍视作Web3主流基建的以太坊区块链也在近日经历了一场重要升级。 此次升级被命名为“上海升级”,源于社区期望以太坊能够如上海一般多元化地发展和繁荣。上海升级带来的最大改变是,验证者可…

操作指南|如何在Moonriver上使用Polkassembly参与OpenGov

Polkassembly是一个开源平台,任何人都可以探索并参与Moonbeam的链上治理。Polkassembly完全支持OpenGov(也称为Gov2)。OpenGov目前在Moonriver上运行,并很快就会在Moonbeam上运行。 Polkassembly让参与治理变得容易。您可以打开讨…

一次「找回」TraceId的问题分析与过程思考

用好中间件是每一个开发人员的基本功,一个专业的开发人员,追求的不仅是中间件的日常使用,还要探究这背后的设计初衷和底层逻辑,进而保证我们的系统运行更加稳定,让开发工作更加高效。 结合这一主题,本文从一…

掌握这些移动测试技巧,棘手的问题也能游刃有余解决了

目录:导读 引言 一、测试的程序 二、功能测试点 三、移动端安卓环境变量 性能测试 四、实操通过USB连接到手机设备 五、adb操作命令 写在最后 引言 你是否曾经遇到过打开一个移动应用后出现各种问题,比如卡顿、闪退等? 这些问题可能会…

【HDCTF2023】wp

【HDCTF2023】wp 文章目录 【HDCTF2023】wpwebWelcome To HDCTF 2023SearchMasterYamiYamiLoginMaster mischardMiscMasterMiscExtremeMiscSuperMisc web Welcome To HDCTF 2023 在源码的 game.js中找到了flag 在控制台输出 console.log(seeeeeeeecret)得flag SearchMaster …

一文解析:低代码开发平台和零代码平台有什么区别?以及如何选?

随着数字化转型的加速,企业和组织对于快速开发和部署应用程序的需求也越来越迫切。 为了满足这一需求,低代码和零代码平台应运而生。这两种平台都提供了快速构建应用程序的方法,但它们之间的区别是什么呢?本篇就来为大家解答一下…

Linux常用命令(二)

目录 VI/VIM编辑器 Linux的root用户 用户和用户组管理 getent命令 查看权限控制信息 修改权限控制 chmod 修改权限控制 chown VI/VIM编辑器 vim是vi的加强版,兼容vi的所有指令。可编辑文本、shell程序,能以不同颜色字体来辨别语法正确性。3种工作…

软件研发的项目经理都在用哪些好的设计和管理的软件工具?

软件研发是一个复杂而又有趣的过程,它涉及到多个阶段,如需求分析、设计、编码、测试、部署、维护等。在这个过程中,我们需要使用各种工具来帮助我们提高效率、保证质量、协作沟通、解决问题等。工具化是指将一些重复性或者困难的任务封装成可…

Python-pyppeteer解决微软Microsoft的登录机器人验证(8)

前言 本文是该专栏的第8篇,结合优质项目案例,让你精通使用Pyppeteer,后面会持续分享Pyppeteer的干货知识,记得关注。 在注册微软Microsoft账号或者注册outlook邮箱账号的时候,会遇到如下机器人验证: 是的,你可能第一眼看到这个验证页面,首先会想到是定位它的页面元素N…

《C++PrimerPlus》第六章 分支语句和逻辑运算符

本篇文章将对《CPrimerPlus》第3章进行勾画 以我个人习惯来勾画 C和C不同点将用红色高亮表示 关于C的额外补充知识用蓝色高亮表示 对C的注意点以及总结部分用绿色高亮表示 正常情况本专栏2周更新一次 文章目录 6.1 if语句![在这里插入图片描述](https://img-blog.csdnimg.cn/…

Qt音视频开发40-ffmpeg采集桌面并录制

一、前言 之前用ffmpeg打通了各种视频文件和视频流以及本地摄像头设备的采集,近期有个客户需求要求将整个桌面屏幕采集下来,并可以录制保存成MP4文件,以前也遇到过类似的需求,由于没有搞过,也没有精力去摸索和测试&am…

研报精选230424

目录 【行业230424华福证券】功率半导体行业深度报告:能源变革大时代,功率器件大市场 【行业230424华西证券】海外锂资源企业近况总结之锂辉石篇:2023年海外锂资源供应量同比增长45%,H2比H1增加13万吨LCE供应 【行业230424东吴证券…