写点什么

Java 发展史

作者:Geek_8ac0a7
  • 2023-02-14
    上海
  • 本文字数:2899 字

    阅读完需:约 10 分钟

Java 发展史

Java 语言的诞生具有一定的戏剧性,它并不是经过精心的策划,制作,最后产生的划时代产品。从某种角度来看,java 语言的诞生完全是一种误会。


C++ 的局限性是 Java 诞生的客观原因

1990 年末,太阳(Sun)公司预料嵌入式系统将在未来家用电器领域大显身手。 该团队最初考虑使用 C++语言,但很多成员包括太阳公司首席科学家比尔·乔伊(Bill Joy)发现 C++和可用 API 在某些方面存在很大问题。工作小组使用嵌入式平台,可用系统资源极其有限,C++太过复杂,以致很多开发者经常错误使用。并且 C++缺少垃圾回收系统,可移植性差,缺乏分布式和多线程等功能。他决定创造一种全新的语言----Oak(橡树),当时 Oak 这个商品已经被注册,于是只得将 Oak 更名为 Java。


太阳公司在 1995 年初发布了 Java 语言,太阳公司直接把 Java 放到互联网上免费给大家使用,甚至连源代码也不保密,向所有人公开。Java 成了互联网上最热门的宝贝,竟有 10 万多人次访问了太阳公司的网页,下载 Java 语言,并出现了数不清的 Java 小程序(Applet),演示着各种小动画、小游戏等。


Java 版本

JDK 1.2 版本分离

1998 年 12 月太阳公司发布了 Java 历史上最重要的 JDK 版本,JDK 1.2,伴随着 JDK 1.2 一同发布的还有 JSP(JavaServer Pages)/Servlet、EJB(Enterprise Java Beans)等规范,并将 Java 分成 J2SE(Java 2 Standard Edition)、J2EE(Java 2 Enterprise Edition)和 J2ME(Java 2 Micro Edition)三个版本。


  • J2SE:整个 Java 技术的核心和基础,它是 J2ME、J2EE 编程的基础。

  • J2EE:Java 技术中应用最广泛的部分,J2EE 提供了企业应用开发相关的完整解决方案。

  • J2ME:主要用于控制移动设备和信息家电等有限存储的设备。



JDK 1.4 百家争鸣

2002 年,太阳公司发布了 JDK 历史上最成熟、发展最快的一个 JDK 版本 - JDK 1.4。Java 语言在企业应用领域大放异彩,涌现出大量基于 java 语言的开源框架,Struts、WebWork、Hibernate、Spring 等。大量企业应用服务也开始涌现,WebLogic、WebSphere、JBoss 等,这些都标志着 Java 语言进入了飞速发展时期。


JDK 1.5(Java SE 5) 泛型参数

JDK1.5 增加了诸如泛型、增强的 for 语句、可变数量形参、注释、自动拆箱和装箱等功能。同时,也发布了新的企业级平台规范,如通过注释等新特性来简化 EJB 的复杂性,并推出了自己的 MVC 框架规范----JSF(JavaServer Faces),JSF 规范类似于 asp.net 的服务器端控件,通过它可以快速构建复杂的 JSP 界面。


JDK 1.6(Java EE 6) 太阳陨落

2006 年 12 月,太阳公司发布了 Java EE 6。但在 2009 年 4 月 20 日,甲骨文(Oracle)公司宣布将收购太阳公司。太阳公司倒下了,不过 Java 的大旗依然猎猎作响。


JDK 1.7(Java SE 7) Oracle 升起

时隔五年即 2011 年 7 月 28 日,甲骨文公司终于发布了 Java SE 7,引入了二进制整数,支持字符串的 switch 语句,棱形语法,多异常捕抓,自动关闭资源的 try 语言等新特性。


JDK 1.8(Java SE 8) 函数式编程

2014 年 3 月 18 日,甲骨文发布了 Java SE 8,带来了全新的函数式编程、Lambda 表达式、流式编程等大量新特性,这些新特性使得 Java 变得更加强大,成为当下最主流的版本。


JDK 1.9(Java SE 9) 模块化

2017 年 9 月 22 日,Java SE 9 发布,强化了 Java 的模块化系统,让庞大的 Java 语言更轻量化,,并在核心类库上进行了大量更新,可以进一步简化编程,但对语法本身更新并不多,毕竟 Java 语法体系已经足够成熟。


JDK 1.10(Java SE 10) 6 月迭代

2018 年 3 月 21 日,Java SE 10 发布。为了更快地迭代,更好地跟进 Java 社区反馈,Java 语言版本发布周期调整为每隔 6 个月发布一次。Java 10 带来了很多新特性,其中最备受关注的莫过于局部变量类型推断。除此之外,还有其他包括垃圾收集器改善、GC 改进、性能提升、线程管控等一批新特性。


JDK 1.11(Java SE 11) 3 年周期

Java 10 发布半年之后,即 2018 年 9 月 25 日,甲骨文公司宣布 Java 11 (18.9 LTS) 正式发布,值得注意的是,Java 11 是 Java 的一个长期支持版本 LTS(Long Term Support),Java 11 的技术支持时间直到 2023 年 9 月份,补丁和扩展支持直到 2026 年 9 月份。同时甲骨文公司公布的 Java 后续版本路线图展示新的长期支持版本将每三年发布一次。


JDK 1.12(Java SE 12) 优雅 Switch

Java SE 12 发布于 2019 年 3 月,引入了几个新功能和改进,旨在使 Java 开发更快、更可靠和更安全。


  • 在 Java 12 中,对 Switch 表达式的写法进行了改进,虽然是一个语法糖的改进,也让 Switch 的代码编写变得更加优雅。

  • Java SE 12 包括对 JVM 的改进,导致启动时间更快。这意味着 Java 应用程序将更快地启动,使其更响应并且更容易使用。

  • 引入了 JFR 事件流,允许实时流式传输 JFR 事件,使诊断和解决性能问题变得更加容易。



JDK 1.13(Java SE 13) 优雅长文本

Java 13 早在 2019 年 9 月就已经发布,虽然不是长久支持版本,但是也带来了不少新功能。最优雅的当属文本块功能,再也不用丑陋的连接符拼接大段文本了。


java13 之前



java13 之后


JDK 1.14(Java SE 14) 优雅 NPE

2020 年 3 月 Java 14 发布,虽然不是 LTS 版本,但是也带来了不少新功能。日常实用的便是更有用的 NullPointerExceptions。但是在 Java 14 之前,如果一行有多个表达式时,这时报了空指针后,单纯的从报错信息来看,可能并不知道是哪个对象为 NULL ,下面是一个演示


旧版 NPE



新版 NPE


JDK 1.15(Java SE 15) 扩展类体系

Java 15 在 2020 年 9 月发布,带来了 Sealed Classes(密封类)、Hidden Classes(隐藏类)2 个新的类机制,扩展 java 面向对象的特性。


  • Sealed Classes(密封类)


Java 15 引入 sealed 类,被 sealed 修饰的类可以指定子类。这样这个类就只能被指定的类继承。而且 sealed 修饰的类的机制具有传递性,它的子类必须使用指定的关键字进行修饰,且只能是 final、sealed、non-sealed 三者之一。



  • Hidden Classes(隐藏类)


Hidden Classes 就是不能直接被其他 class 的二进制代码使用的 class。Hidden Classes 主要被一些框架用来生成运行时类,但是这些类不是被用来直接使用的,而是通过反射机制来调用。比如在 JDK8 中引入的 lambda 表达式,JVM 并不会在编译的时候将 lambda 表达式转换成为专门的类,而是在运行时将相应的字节码动态生成相应的类对象。


这个特性让开发者可以引入一个无法被其他地方发现使用,且类的生命周期有限的类。这对运行时动态生成类的使用方式十分有利,可以减少内存占用。



编译后


JDK 1.16(Java SE 16) Git 化

Java 16 在 2021 年 3 月 16 日正式发布,将 OpenJDK 源代码是使用版本管理工具 Mercurial 进行管理的,现在迁移到了 Git ,主要原因如下:


  • Mercurial 生成的版本控制元数据过大。

  • Mercurial 相关的开发工具比较少,而 Git 几乎在所有的主流 IDE 中已经无缝集成。

  • Mercurial 相关的服务比较少,无论是自建托管,还是服务托管。


JDK 1.17(Java SE 17) LTS 版本

Java 17 在 2021 年 9 月 14 日正式发布,Java 17 是一个长期支持(LTS)版本,共带来 14 个新功能。



总结

以上就是 Java 发展史的简单总结,而一种语言如果想要长久的发展,就要不断的进行更新,保持行业领先,并且 Java 使用前景也比较广阔,许多企业都在使用,而如果要学习的同学们,可以选择长期支持版本进行学习,而 Java SE 8 在现在使用的比较多的版本,而如果进行微服务开发和公司有需求,学习 Java SE 11 也是可以的。



用户头像

Geek_8ac0a7

关注

还未添加个人签名 2021-04-12 加入

kcodez.com 精品源码、电子书

评论

发布
暂无评论
Java 发展史_Java_Geek_8ac0a7_InfoQ写作社区