Excel不相邻列如何打印在一起-英雄云拓展知识分享
138
2023-11-07
【摘要】 本书摘自《深入理解 Java 虚拟机 JVM 高级特性与最佳实践(第3版)》一书中第1章,第5节,周志明著。
1.5 展望 Java 技术的未来
本书第1、2版中的“展望Java 技术的未来”分别成文于2011年和2013年,将近十年 时间已经过去,当时畅想的Java 新发展新变化全部如约而至,这部分内容已不再有“展望” 的价值。笔者在更新第3版时重写了本节全部内容,并把第2版的“展望”的原文挪到附 录之中。倘若Java 的未来依旧灿烂精彩,倘若下一个十年本书还更新第4、第5版,亦希 望届时能在附录中回首今日,去回溯哪些预测成为现实,哪些改进中途夭折。
如1.3节结尾所言,今天的Java 正处于机遇与挑战并存的时期, Java 未来能否继续壮 大发展,某种程度上取决于如何应对当下已出现的挑战,本文将按照这个脉络来组织,向 读者介绍现在仍处于Oracle Labs中的 Graal VM 、Valhalla 、Amber 、Loom 、Panama 等面 向未来的研究项目。
1.5.1 无语言倾向
网上每隔一段时间就能见到几条“未来X 语言将会取代 Java” 的新闻,此处 “X” 可 以用Kotlin 、Golang 、Dart 、JavaScript 、Python 等各种编程语言来代入。这大概就是长期 占据编程语言榜单第一位°的烦恼,天下第一总避免不了挑战者相伴。
如果Java 有拟人化的思维,它应该从来没有惧怕过被哪一门语言所取代, Java“天 下第一”的底气不在于语法多么先进好用,而是来自它庞大的用户群和极其成熟的软件生 态,这在朝夕之间难以撼动。不过,既然有那么多新、旧编程语言的兴起躁动,说明必然 有其需求动力所在,譬如互联网之于JavaScript 、人工智能之于Python, 微服务风潮之于 Golang等。大家都清楚不太可能有哪门语言能在每一个领域都尽占优势, Java 已是距离 这个目标最接近的选项,但若“天下第一”还要百尺竿头更进一步的话,似乎就只能忘掉 Java 语言本身,踏入无招胜有招的境界。
2018年4月,Oracle Labs新公开了一项黑科技: Graal VM, 如图1-4所示,从它的口 号 “Run Programs Faster Anywhere” 就能感觉到一颗蓬勃的野心,这句话显然是与1995 年Java 刚诞生时的 “Write Once,Run Anywhere” 在遥相呼应。
Graal VM被官方称为 “Universal VM” 和 “Polyglot VM”,这是一个在 HotSpot 虚拟 机基础上增强而成的跨语言全栈虚拟机,可以作为“任何语言”的运行平台使用,这里“任 何语言”包括了Java 、Scala 、Groovy 、Kotlin 等基于Java 虚拟机之上的语言,还包括了C 、 C++ 、Rust等基于LLVM的语言,同时支持其他像 JavaScript 、Ruby 、Python 和R 语言等。
Graal VM 可以无额外开销地混合使用这些编程语言,支持不同语言中混用对方的接口和对 象,也能够支持这些语言使用已经编写好的本地库文件。
Graal VM的基本工作原理是将这些语言的源代码(例如JavaScript) 或源代码编译 后的中间格式(例如 LLVM 字节码)通过解释器转换为能被Graal VM接受的中间表示 (Intermediate Representation,IR),譬如设计 一个解释器专门对LLVM 输出的字节码进 行转换来支持C 和 C++ 语言,这个过程称为程序特化 (Specialized, 也常被称为Partial Evaluation) 。Graal VM提 供 了Truffle 工具集来快速构建面向一种新语言的解释器,并用它 构建了一个称为 Sulong 的高性能 LLVM 字节码解释器。
从更严格的角度来看, Graal VM 才是真正意义上与物理计算机相对应的高级语言虚拟 机,理由是它与物理硬件的指令集一样,做到了只与机器特性相关而不与某种高级语言特 性相关。Oracle Labs的 研 究 总 监Thomas Wuerthinger在 接 受InfoQ 采访时谈到:“随着 GraalVM1.0 的发布,我们已经证明了拥有高性能的多语言虚拟机是可能的,并且实现这个 目标的最佳方式不是通过类似Java 虚拟机和微软CLR 那样带有语言特性的字节码θ。”对 于一些本来就不以速度见长的语言运行环境,由于Graal VM本身能够对输入的中间表示进 行自动优化,在运行时还能进行即时编译优化,因此使用Graal VM实现往往能够获得比原 生编译器更优秀的执行效率,譬如 Graaljs要优于Nodejs,Graal.Python 要优于CPtyhon,
TruffleRuby 要优于 Ruby MRI,FastR 要优于R 语言等。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~