Java如何经得起时间的考验

java

Java已经存在了二十多年,并且仍然是当今使用的顶级编程语言之一。什么能说明语言的成功,以及它如何改变以适应更现代的技术?

Java崛起的力量

Java最初出现于1995年,从1991年的一项名为“Oak”的创新发展而来。对于希望发展分布式系统的工程师来说,这显然是正确的时机。当时一些比较流行的语言–C,C ++,甚至是Cobol,都是有着陡峭的学习曲线。而Java的允许多线程并发执行程序等特性,解决了多任务工作的困难问题。

Java很快成为任务关键型系统的第一人选语言。从那时起,即使不断有新的语言出现,但Java仍然根深蒂固,难以取代。事实上,正如这篇顶级编程语言文章所暗示的那样,Java自最初出现以来几乎已经成为最重要的计算语言之一 。

Sun Microsystems的James Gosling被认为是Java之父,他设计构想出了java的原型。他曾在Sun工作,直到Sun于2010年被Oracle收购。在权力的转移中,Java成为了Oracle的产品,但它并没有保持静态,持续创新使其成为最受欢迎的编程语言。此外,Java社区发布了很多用于编写,维护和调试代码的高级工具。

字节码和可移植性的吸引力

Java实现通常使用两步编译过程。换句话说,源代码由Java编译器转换为字节码。然后由Java虚拟机(JVM)执行字节码。JVM今天使用一种称为即时(JIT)编译的技术来生成系统CPU可以执行的本机指令。这促进了Sun在Java早期所倡导的“一次编写,随处运行”(WORA)理念。

编译为何重要

灵活性的字节码为可移植性提供了真正的好处。不用为每个平台编译应用程序,而是将相同的代码分发到每个系统,并且使用JVM管理它们。当然如果小型设备不能很好地处理所需的解释开销,就会出现问题。

此外,在jdk越来越大的情况下,对于需要快速响应的小型应用程序来说,它不需要太复杂的模块。因此,我们看到的涉及更少开销的分支,例如Avian(具有Java功能子集的轻量级虚拟机)和Excelsior JET(使用提前编译器增强的完整Java虚拟机实现)优化的本机可执行文件,牺牲了部分可移植性,对云和物联网(IoT)应用程序都受益。

转移方向

Java世界中的其他创新包括GraalVM和SubstrateVM。

GraalVM是JVM的一个新的即时编译器,可以使Java与其他语言(例如,JavaScript,Python和Ruby)一起使用。GraalVM可以在OpenJDK的上下文中运行,通过新的即时编译技术使Java应用程序运行得更快。它包括一个名为Graal的新型高性能Java编译器,可以与HotSpot VM一起使用,或者与SubstrateVM一起提前设置。

SubstrateVM大大缩短了启动时间,使短期应用程序运行得更快。它是一个框架,允许将Java应用程序提前(AOT)编译为可执行映像或共享对象(ELF-64或64位Mach-O)。

开放与专有

甲骨文去年宣布,JDK和OpenJDK之间的技术差异将会消失。今天两者之间的差异主要是表面的。

Java仍然是免费的。有关即将死亡的谣言几年前就出现了,但OpenJDK并没有失去任何动力。

Oracle和Red Hat扮演什么角色?

Java用户最初担心的,当Oracle宣布它将不再为JDK版本提供免费二进制下载或在六个月后为OpenJDK编写bug补丁时,该怎么办。当Oracle退出时,Red Hat接管了,而且接力棒的传递似乎平稳可靠。

Java生命顽强的关键

虽然甲骨文和红帽继续提供无差距的方法来支持OpenJDK,但造就Java的强大生命力的,最早的开发者和这两家公司只能占部分功劳。正如Red Hat的Mark Little所说,Java生命顽强的50%归功于开发者社区。

英文原文:

https://www.networkworld.com/article/3325334/linux/how-java-has-stood-the-test-of-time.html