25岁的Java:具有影响力和展望未来的能力

编程课程的入门部分使用C ,这是我在大学期间学习的第一门编程。通过入门课程,我学习了循环和逻辑,变量和函数声明,内存分配等。

此后,我学习了另一门全新的编程语言Java。它可以在任何平台上运行,这很棒。但是它给我带来了其他语言功能的混乱:线程垃圾回收AWT(抽象的Windows工具包),异常和面向对象的编程。

从那时起,Java经历了大约十四个主要功能版本,在甲骨文与甲骨文收购Sun Microsystems之间进行了过渡,开源了该语言背后的代码,并产生了使用其虚拟机的几种语言,包括ScalaClojureKotlin

1995年至2020年-那个四分之一世纪见证了科技行业几个时代的兴衰。有人对甲骨文Java平台小组软件开发副总裁Georges Saab进行了提问,对Java的哪些更改产生了最大的影响,以及他认为哪些即将发布的功能将对其未来产生真正的影响。萨博(Saab)感觉到的一些功能使该语言激增,还有一些将使它持久。

重大变化

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

在2004年,Java添加了泛型,允许实例化该项目时指定类型,方法和接口以及相关的数据类型,而又不牺牲类型安全性。萨博说:“当时,仿制药是一个挑战,人们对此有强烈的看法。” 如今,泛型已成为该语言的持久特性之一。

Java可能被设计为完全面向对象的语言,但是当Java SE 8于2014年发布时,它添加了Lambda表达式(又称闭包),并添加了一些功能性编程元素。并非所有问题都可以由OOP来最好地解决,并且通过添加Lambda,Java变得更加灵活。

Java 9解决了模块可能引起大量JAR文件的潜在依赖关系问题。它允许封装库代码,以便在导入软件包时,仅导入所需的模块,而不导入整个JAR。该模块具有的所有依赖项都已明确声明,因此您可以检查代码以查看要导入的代码。萨博说:“让他们知道,他们并非无意间依赖于某种事物,这使我们达到了Java生态系统对变化和持续发展更具弹性的地步。”

奖励功能的改进是普通用户可能没有注意到的一项功能:JVM的性能一直在不断提高。萨博说:“您不一定会看到它的发生,但是您看到的是效果。” “我编写的在J2SE 1.3上运行的代码仍然可以在Java 14上运行,但是速度要快得多。它不仅速度更快,而且以某种方式利用硬件变化带来的速度更快,这种变化在2004年没人能想到。”

Java在为未来酝酿什么

尽管Java在众多行业中占有重要地位,但它并没有停滞不前。萨博(Saab)提到了四个使他兴奋的Java大项目,它们都用代号命名:Loom,Valhalla,Leyden和ZGC

该织机项目旨在放松Java线程和本地线程之间的耦合。Java从一开始就通过线程进行并发,但它们始终与OS线程绑定。Loom引入了光纤,JVM管理的线程,这些线程允许更有效的并发。Java服务器端应用程序可以处理数千个同时发生的用户的负载更好的并发性只能提高Web性能

Valhalla的目标是修改Java的内存模型,以允许不可变类型,该类型比基元更复杂,但不如对象灵活。有时,您拥有的更复杂的数据在该对象的整个生命周期中都不会发生变化。不必为课程增加负担。最初的建议更简洁地说:“ 代码就像一个类,就像一个整数。“对于诸如用于机器学习或自然语言的大数据之类的东西,Valhalla承诺以一种允许JVM充分利用自Java创建以来发生了巨大变化的现代硬件架构的方式来表示数据,” Saab说。

Leyden旨在解决Java应用程序的启动时间。对于整体和单个应用程序,Java有时需要花费一些时间才能上手,但是一旦启动并运行,它们很快。萨博说:“如果您的应用程序服务器要运行两周或两个月或两年,那就太好了,但是如果您要运行30毫秒,那就不好了。” 服务器端软件越来越小,分布越来越分散,因此快速启动是快速响应时间的关键。

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

Java已经成长为现代互联网和移动应用程序环境中不可或缺的一部分,并有望在未来一段时间内继续成为信息技术工具包的一部分。

关注公众号,可获取免费资源
25岁的Java:具有影响力和展望未来的能力_第1张图片

每天进步一点点,开心也多一点点

你可能感兴趣的:(bibilailai,java)