Java在25岁时:对未来产生影响和展望的特性

2020-07-30 21:20:25

我第一次使用Java是在我的第二节计算机科学课上,CS基础。编程入门课程使用的是C++,这是我第一次在BASIC之外编程。在入门课程中,我学习了循环和逻辑、变量和函数声明、内存分配以及基本对象和类。

在那之后,CMU的CS系决定改用这种全新的编程语言Java。它可以在任何平台上运行,这很棒,因为主要的CS集群是Solaris机器(Sun推出的Unix变体)。这是在每个人都有一台Mac笔记本电脑(也是Linux机顶盒)之前。但它向我介绍了一大堆其他语言特性:线程、垃圾回收、AWT(抽象的Windows工具包)、异常和面向对象编程。

从那时起,Java已经经历了大约14个主要功能版本,在Oracle收购Sun Microsystems后在管理人员之间过渡,开源了语言背后的代码,并催生了几种使用其虚拟机的语言,包括Scala、Clojure和Kotlin。就我个人而言,我曾为几家在Java上构建复杂产品的公司工作过,无论这些产品是嵌入在浏览器中、通过WebStart安装在桌面上,还是在面向服务的体系结构后端的幕后。

1995年至2020年-这四分之一个世纪见证了科技行业几个时代的兴衰。我问过Oracle Java Platform Group的软件开发副总裁Georges Saab,Java的哪些变化对其影响最大,他认为即将推出的特性会对Java的未来产生真正的影响。以下是萨博认为使这一语言激增的一些特征,以及一些将使其持久存在的特征。

第一个产生巨大影响的特性根本不是Java语言的变化。这是在早期版本中发生的极大改进的库支持。在1.0和1.3之间,这些库包括Swing窗口工具包、集合框架、用于远程调用的类似RPC的API、用于与数据库交互的JDBC等等。标准库变得更丰富、更复杂,并使Java成为一种真正的企业语言。

在2004年,Java添加了泛型,它允许在实例化项时使用关联的数据类型指定类型、方法和接口,而不会牺牲类型安全性。“当时,仿制药是一个挑战,人们对它们有强烈的看法,”萨博说。今天,泛型是该语言经久不衰的特性之一。

Java可能被设计成一种完全面向对象的语言,但是当JavaSE8在2014年发布时,它添加了Lamda表达式(又名闭包),这增加了一些函数式编程元素。并不是每个问题都由OOP最好地解决,而且通过添加lambdas,Java变得更加灵活。

Java9解决了一堆JAR文件可能导致模块依赖的潜在问题。它允许封装库代码,以便在导入包时只导入所需的模块,而不是整个JAR。该模块具有的任何依赖项都是显式声明的,因此您可以检查代码以查看要导入的代码。萨博说:“让他们知道他们并不是在无意中依赖某些东西,这正将我们带到Java生态系统对变化和不断演变的适应能力更强的地步。”

额外的特性改进是普通用户可能没有注意到的:JVM的性能一直在不断改进。萨博说:“你不一定会看到它的发生,但你看到的是效果。”“我编写的在J2SE1.3上运行的代码仍然可以在Java14上运行,但速度要快得多。这不仅是因为它更快,而且在某种程度上,它更快地利用了硬件的变化,没有人知道2004年会发生这样的事情。“。

尽管Java在众多行业中都很突出,但它并没有停滞不前。萨博提到了即将来到Java的四个让他兴奋的大项目,所有项目的代号都是:Loom、Valhala、Leyden和ZGC。

Loom项目旨在松开Java线程和本机线程之间的耦合。Java从一开始就通过线程实现了并发性,但它们总是与操作系统线程捆绑在一起。Loom引入了纤程、JVM管理的线程,允许更高效的并发。使用Java服务器端应用程序处理数千个并发用户的负载,更好的并发性只会提高Web性能。

Valhara的目标是修改Java的内存模型,以允许不可变类型,这些类型比原语更复杂,但不如对象灵活。有时,您有更复杂的数据,这些数据在对象的生命周期内不会更改;没有必要让它承担类的开销。最初的建议更简洁:“代码就像一个类,工作起来就像一个int。”萨博说:“对于机器学习或自然语言这样的大数据,Valhara承诺以一种允许JVM充分利用现代硬件架构的方式来表示数据,这些硬件架构自Java创建以来发生了巨大的变化。”

Leyden的目标是解决Java应用程序的启动时间问题。对于庞大的应用程序和单个应用程序,Java有时需要一段时间才能上手,但一旦启动并运行起来,速度就会很快。萨博说:“如果你的应用程序服务器要运行两周、两个月或两年,这是很棒的,但如果你想运行30毫秒,那就没那么棒了。”服务器端软件变得越来越小、越来越分布式,因此快速入门是快速响应的关键。

ZGC是一个新的垃圾收集器,它可以处理巨大的堆大小,最大可达16TB,而不会增加暂停时间。对于可能在内存中处理大量数据的大数据应用程序,将垃圾收集暂停时间保持在10ms以下意味着大型数据集的处理速度不会因为语言的限制而停滞不前。

Java逐渐成为现代互联网和移动应用环境中不可或缺的一部分,并承诺在未来一段时间内继续成为信息技术工具包的一部分。四分之一世纪在编程中是永恒的,所以将“类”提升到Java、过去、现在和未来。

如果你想了解更多,甲骨文已经汇集了丰富的资源来庆祝Java问世25周年。如果您想阅读本系列的第1部分,可以在这里找到。

标签:Java