• 赚钱入口【需求资源】限时招募流量主、渠道主,站长合作;【合作模式】CPS长期分成,一次推广永久有收益。主动打款,不扣量;

Java的25年:过去到现在

JavaScript cps12345 3个月前 (08-04) 51次浏览 0个评论

从提出交互式机顶盒的想法到在全球运行450亿个虚拟机,Java在过去25年中已经走了很长一段路。

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

此后,CMU的CS部门决定改用这种全新的编程语言Java。它可以在任何平台上运行,这很棒,因为主要的CS集群是Solaris计算机(Sun推出的Unix变体)。早在每个人都拥有一台Mac笔记本电脑和一台Linux盒子之前。但是它给我带来了其他语言功能的混乱:线程,垃圾回收,AWT(抽象的Windows工具包),异常和面向对象的编程。 

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

从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已经成长为现代互联网和移动应用程序中不可或缺的一部分,并有望在未来一段时间内继续成为信息技术工具包的一部分。四分之一世纪是编程中的永恒,因此提高Java,过去,现在和未来的“类”。

喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址