百摩网
当前位置: 首页 生活百科

java调试源码方法(静态Java现状)

时间:2023-08-01 作者: 小编 阅读量: 2 栏目名: 生活百科

主要的好处是可以从一个可执行的小部署包快速启动。静态Java的要求之一是限制动态特性,需要在构建时明确选择。目前为止,对于静态Java,除了框架使采用路线更加平滑之外,入手还是比较难。需要静态Java特性的用户则刚刚开始意识到这些特性对他们的部署有多重要。但是,Leyden项目的实施可能会加速它的采用。另外,GraalVM社区在这段时间里也在继续改进SubstrateVM。她是TransylvaniaJUG协调人,Voxxed罗马尼亚项目委员会成员,并有望在不久的将来成为发言人。

静态 Java 生成静态编译的本地可执行文件(目标是加快启动速度和减少空间占用),磁盘占用和运行时的元数据开销都减少。InfoQ 采访了 Red Hat 首席软件工程师Dan Heidinga——他是静态 Java 相关工作的长期贡献者——以了解静态 Java 离广泛应用还有多远。

参与静态 Java 相关工作是因为他认识到,Java 需要演进,从而满足由云相关的新实践所驱动的不断变化的生态系统。目前,除了参与CRiU(用户空间的检查点/恢复)(包括 OpenJDK 的CRaC项目和 OpenJ9 的CRiU项目),为OpenJ9 JVM、Java Lambdas做贡献,将方法句柄引入 Java,参与Valhalla项目,他在静态 Java 之旅中也走在了前列。

InfoQ:您好,Dan。感谢您抽时间来回答我们读者的多个问题。能否请您简单介绍一下自己,说明下您的日常职责以及您参与静态 Java 相关工作的情况?

Dan Heidinga:长期以来,我既是 JVM 开发者又是 Java 用户。我的日常工作是开发 Hotspot JVM(同时也是 OpenJ9 JVM 的项目负责人)和qbicc项目:一个实验性的 Java 程序静态编译器,可以作为尝试不同静态 Java 方法的游乐场,帮助探索整个设计空间,为 OpenJDK 的 Leyden 项目做准备。

我还积极参与了CRiU(用户空间的检查点/恢复)审查,包括 OpenJDK 的 CRaC 项目和 OpenJ9 的 CRiU 项目,因为我看到,检查点/恢复和静态 Java 的需求存在很多重叠。

InfoQ:静态 Java 有什么优势?最适合什么场景?

Heidinga:静态 Java 生成静态编译的本地可执行文件,旨在加快启动速度,减少空间占用,磁盘占用和运行时的元数据开销都减少。尽管它潜在的应用场景有很多,但微服务、CLI 应用和无服务器部署是最佳候选场景。

它提供以下几项能力:

1. 应用程序的所有 Java 代码均为本地编译。

2. 能够“关闭世界”防止其他类被加载。这可以消除死代码,去除不使用的方法和字段,从而使二进制文件更小。

3. 能够在构建时初始化应用程序的某些部分,以便进一步优化,避免在随后的启动中进行多余的工作。

主要的好处是可以从一个可执行的小部署包快速启动。启动速度加快是因为避免了 Java 的动态行为,如加载和验证类,并在第一次使用时解析每个字段和方法。还有就是利用构建时初始化将操作(如类的初始化)从运行时转移到构建时。

对于堆不大的应用程序来说,运行时空间占用改进最为明显,因为堆大小决定了类元数据所需的内存。

InfoQ:从 Java 经典的“动态虚拟机”模型迁移到静态 Java,对开发者有什么要求?

Heidinga:即使有了指南和工具,开发者也应该有个预期,就是将他们的应用程序转化为静态应用是一项需要花费相当精力的挑战。

静态 Java,顾名思义,比普通 Java 的动态性要低得多。因此,Java 的许多动态特性在使用时都会导致问题,如 Reflection、MethodHandles、类加载、字节码生成和 JVMTI 代理。一个比较好的选择是,从 GraalVM 的跟踪代理入手,创建支持在运行时使用这些动态特性所需的配置文件。静态 Java 的要求之一是限制动态特性,需要在构建时明确选择。

选择一个使用静态 Java 的框架(如 Quarkus、Micronaut)将使你能够利用它所带来的好处,而且可以避免许多采用静态 Java 的障碍。

InfoQ:静态 Java 已经在生产系统中应用了吗?

Heidinga:早期采用者在生产环境中使用了,但主要是在新开项目或非关键用例中使用,这可以帮助建立信心和积累知识。我觉得 OpenJDK Leyden 项目所做的模型标准化会有助于采用。目前为止,对于静态 Java,除了框架使采用路线更加平滑之外,入手还是比较难。

虽然据我估计,随着云端实践在行业中日益广泛,用户对其云部署的成本意识增强,静态 Java 的采用率将继续增长,但会比较缓慢,因为有很多软件将永远无法适应静态 Java 的要求(这也没关系!)。需要静态 Java 特性的用户则刚刚开始意识到这些特性对他们的部署有多重要。

为了真正推动主流的采用,Java 需要意识到当前正在发生的阶段性变化(构建时与运行时,检查点与恢复),为开发者提供工具,让他们可以使用这门语言表达自己的意思。我认为这即将到来,但考虑到现有 OpenJDK 项目的时间跨度,这可能需要一年多的时间。

Heidinga 认为,随着云计算的不断发展,以及人们对缩短启动时间和降低空间占用的需求,静态 Java 的旅程才刚刚开始。但是,Leyden项目的实施可能会加速它的采用。不过现阶段,他建议对其进行实验,并提到 Red Hat 杰出工程师Andrew Dinn所领导的实验。Heidinga 还表示,很难说 Leyden 项目在2020年审批通过后取得了多少进展,但是:

OpenJDK 项目及其周边社区正在进行大量的研究和探索,希望我们在不久的将来可以看到这些工作在 Leyden 项目中得以体现。

有几个项目与 Leyden 项目的问题空间存在重叠,比如 CRaC 项目,特别是关于“如何暴露 Java 编程模型的不同阶段”的问题。另外,GraalVM 社区在这段时间里也在继续改进SubstrateVM。

对于那些在采用静态 Java 时遇到无法解决的问题,或者只是不想调整现有动态设计的人来说,仍然有望提升启动速度:与 CRiU 相关的工作(如 CRaC 项目)旨在探索静态和动态 Java 之间的另一个点。

作者简介:

Olimpiu Pop 是一名软件工程师,具有从财务软件到 IAM 的实时应用开发经验。她热衷于工具和开发流程优化。她担任着欧洲 IDaaS 组织 iWelcome 的工程总监。她是 Transylvania JUG 协调人,Voxxed 罗马尼亚项目委员会成员,并有望在不久的将来成为发言人。同时,她还是 JavaAdventCalendar 的主编。

原文链接:

Static Java Current State: Compiled Native Executables for Startup Speed and Small Footprint

,
    推荐阅读
  • 幼儿园小朋友自我介绍(幼儿园小朋友自我介绍范文)

    大家好,我是小米,大名叫xxx,爸爸妈妈取这个名字是希望我好好学习其实我是挺喜欢学习的,我可喜欢上幼儿园啦,我还爱看书、爱听妈妈讲故事,爱听老师唱歌,爱交好朋友,所有新奇的事情我都感兴趣,我来为大家科普一下关于幼儿园小朋友自我介绍?幼儿园小朋友自我介绍大家好,我是小米,大名叫xxx,爸爸妈妈取这个名字是希望我好好学习。现在我进步可大了,不仅没有哭,还自己高高兴兴自己走进幼儿园呢。

  • markdown如何建立表格(Slidev用Markdown的方式来做PPT)

    Slidev用Markdown的方式来做PPT也许你是一位代码高手,Markdown写作高手,但你是PPT高手吗?你的成绩有没有被PPT高手抢走过呢?不会作精美PPT是不是很头疼呢?今天就给大家介绍了一款PPT制作利器:Slidev~说Slide。

  • 白玉蜗牛冬天怎么养(如何在冬天养白玉蜗牛)

    白玉蜗牛冬眠有被冻死的风险,而且冬眠会使它停止生长,所以在温度下降到20度左右时,可以给环境升温,并保持温度在25~28度,能够避免它进入冬眠并安全越冬。白玉蜗牛在过冬的时候,不管是升温还是低温冬眠,都要保持环境的湿润,不然就会使它出现脱水的现象,还要将它放在空间较小的环境中,能够起到保温的效果。

  • kx3起亚新款自动舒适版(起亚KX3跌至9.1万全系自动挡)

    起亚KX3跌至9.1万全系自动挡作为韩系汽车品牌的起亚,旗下的奕跑、焕驰、KX5等车型凭借着出色的外观设计,上市初期在国内的汽车领域成功实现弯道超车,一度成为国内市场上畅销的合资车企之一由于现阶段我们的自主车企旗下车型的外观造型越来。

  • 王者荣耀贵族三19个皮肤算血亏吗(王者荣耀隐藏奖励何其多)

    王者荣耀隐藏奖励何其多随着王者荣耀更新包的越来越大,王者峡谷也变得越来越魔幻了起来,就像前段时间的“钻石取消事件”,官方经理了S17赛季一整个赛季的预热表示下一个赛季钻石不再一次性补发,而是在凤仪之诏探索里领取,奈何玩家表。

  • 什么里巴人成语(成语故事下里巴人)

    什么里巴人成语下里巴人这个成语故事出自于战国楚·宋玉《对楚王问》:“客有歌于郢中者,其始曰:‘下里巴人’,国中属而和者数千人。”下里巴人,现比喻通俗文学艺术。原指古代战国时期楚国流行的一种通俗歌曲。在春秋战国时期,楚国有一个著名的文学家叫宋玉,是楚国的大臣。有一天,楚襄王对宋玉说:“宋玉同学呀!最近为什么有好多人都说您的坏话呀?”

  • 鸡丝笋衣步骤(笋衣干怎么做好吃)

    2、准备好鸡胸肉,然后把鸡胸肉切丝备用!

  • 描写梅花的作文(描写梅花的作文范文)

    到了“大雪”前后,北方的寒风越刮越大,人们都只有躲在家里避寒,而仅有极少数勇敢的人冒着巨大的寒风像蜗牛一样慢慢地爬行,另外还有一些上学的儿童也在大风中慢慢行走,简至是举步维艰。梅花尽管也被吹得左晃右摆,一些吹落的花瓣在空中飞舞,可还有的花瓣在枝条上纹丝不动,在寒风和大雪中默默地忍受痛苦,没有叫过冤,喊过屈,它让我真正懂得了什么叫默默奉献。

  • 李勇华名字打分102分 李勇名字含义

    文章目录:一、李勇华相关名字打分102二、李勇华相关名字评分111三、李勇华相关名字推荐四、李勇华相关名字大全五、其他人还看了一、李勇华相关名字打分102李根皮李中豪李俊宏李东野李博阳李义庭李薇李再旺李泽鹏李路路李艳菲李含笑李宜幸李嘉璇李英华李县李尉尔李克勒李邕李志鸿李乐儿李蔚李煊李孝恩李荣桂李姝慧李争李大权李怀松李英宏李舒然李仁俊李道华李晨李宗李友生李瑞强李素玲李立勇李思妤李锦森李瑞贤李宫裁李娟

  • 什么情况下要重新路考(电脑语音直接说结束)

    科二比较惨第三次过的,前面几次都挂在倒车入库超时,因为连了很久了,开的比较快,被教反复强调要开慢点,所以全程开的很慢。第三次自己报的名,因为教练让我交一千元走后门,不甘心自己报了,被分配到一个完全没练过的场地考,怕超时,开的比较快,到上坡时发现手刹拉着,居然没熄火开过了倒车入库侧方停车和曲线行驶。他说确定准备好了。结果他一挂档起步电脑语音直接说考试结束不合格。