开发语言这种东西真的是仁者见仁智者见智,没有谁对和谁错,Java语言诞生这么多年,我想它的受众全体的体量的巨大的,你要想说它已经过时了,我想是不太可能的,咱别的不说,就说Oracle公司就不答应是吧。
咱们作为Java语言的程序员,你真正的了解过Java语言的过去吗?
Java语言的前身叫做Oak语言,是Sun公司的工程师开发出来的,开发这款语言的初衷就是为了对标C 的。
20世纪90年代,硬件领域出现了单片式计算机系统,这种价格低廉的系统一出现就立即引起了自动控制领域人员的注意,因为使用它可以大幅度提升消费类电子产品。
熟悉硬件开发的程序员应该清楚,单片式系统的资源是非常匮乏的,也就是说它对语言的性能和运行资源少的要求更高,C 程序过于复杂和庞大,并且它不支持跨平台性,这一点是它的致命缺陷。
如何让编写的程序跨平台运行也是个难题。为了解决困难,他们首先着眼于语言的开发,假设了一种结构简单、符合嵌入式应用需要的硬件平台体系结构并为其制定了相应的规范,其中就定义了这种硬件平台的二进制机器码指令系统(即后来成为“字节码”的指令系统),并逐渐形成一种语言叫Oak。
从1995年开始,世界互联网开始飞速发展,尤其是浏览器技术开始流行,业界为了使死板、单调的静态网页能够“灵活”起来,急需一种软件技术来开发一种程序,这种程序可以通过网络传播并且能够跨平台运行。于是,世界各大IT企业为此纷纷投入了大量的人力、物力和财力。这个时候,Sun公司想起了那个被搁置起来很久的Oak,并且重新审视了那个用软件编写的试验平台,由于它是按照嵌入式系统硬件平台体系结构进行编写的,所以非常小,特别适用于网络上的传输系统,而Oak也是一种精简的语言,程序非常小,适合在网络上传输。Sun公司首先推出了可以嵌入网页并且可以随同网页在网络上传输的Applet(Applet是一种将小程序嵌入到网页中进行执行的技术),并将Oak更名为Java。5月23日,Sun公司在Sun world会议上正式发布Java和HotJava浏览器。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微软等各大公司都纷纷停止了自己的相关开发项目,竞相购买了Java使用许可证,并为自己的产品开发了相应的Java平台。
于是就有了Java的发展历史。
1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0),这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。9月,约8.3万个网页应用了Java技术来制作。10月,Sun公司发布了Java平台的第一个即时(JIT)编译器。
从Java官方了解到(dev.java),目前这些版本已经不维护了,你们公司还有人在用这些版本吗?也就是说Final Release为最终版本,后面官方就不迭代小版本了。
版本号 | 初始版本 | 最终版本 |
---|---|---|
18 | 2022-03-22 | 18.0.1 2022-03-22 |
16 | 2021-03-16 | 16.0.2 2021-07-20 |
15 | 2020-09-15 | 15.0.2 2021-01-19 |
14 | 2020-03-17 | 14.0.2 2020-07-14 |
13 | 2019-09-19 | 13.0.2 2020-01-14 |
12 | 2019-03-19 | 12.0.2 2019-07-16 |
10 | 2018-03-20 | 10.0.2 2018-07-17 |
9 | 2017-09-21 | 9.0.4 2018-01-16 |
6 | 2006-12-12 | 6u211 2018-10-16 |
5 | 2004-09-30 | 5.0u85 2015-04-15 |
4 | 2002-02-13 | 1.4.2_42 2013-02-19 |
3 | 2000-05-08 | 1.3.1_29 2010-10-12 |
2 | 1998-12-04 | 1.2.2_017 2003-10-02 |
1 | 1997-02-18 | 1.1.8_010 2002-10-09 |
0 | 1995-05-23 | 1.0.2 1996-05-07 |
当前支持的,并且维护的版本。
版本号 | 初始版本 | 当前版本 | 停止维护的时间 |
---|---|---|---|
19 | 2022-09-20 | 192022-09-20 | 2023-03-21 |
17 | 2021-09-14 | 17.0.32022-01-18 | 2029-09-30 |
11 | 2018-09-25 | 11.0.142022-01-18 | 2026-09-30 |
8 | 2014-03-18 | 8u3112021-10-19 | 2030-12-31 |
7 | 2011-07-11 | 7u3212021-10-19 | 2022-07-19 |
计划中的版本,也就是规划中的版本,2023.03.21会发布一个新的版本。
版本号 | 初始版本 | 版本信息 |
---|---|---|
20 | 2023-03-21 | Open JDK Project Page JSR 395 |
那么Java 19又支持那些新特性呢,主要包括如下几点:
(1) 405: Record Patterns (Preview) 记录模式 (预览版)
使用 记录模式 增强 Java 编程语言以解构记录值,可以嵌套记录模式和类型模式,实现强大的、声明性的和可组合的数据导航和处理形式。
这是一个预览语言功能。
(2) 422: Linux/RISC-V Port Linux/RISC-V 移植
将 JDK 移植到 Linux/RISC-V,目前仅支持 RISC-V 的 RV64GV 配置(包含向量指令的通用 64 位 ISA)。将来可能会考虑支持其他 RISC-V 配置,例如通用 32 位配置 (RV32G)。
(3) 424: Foreign Function & Memory API (Preview) 外部函数和内存 API (预览版)
引入一个 API,Java 程序可以通过该 API 与 Java 运行时之外的代码和数据进行互操作。通过该 API 可有效地调用外部函数( JVM 之外的代码)和安全地访问外部内存(不受 JVM 管理的内存),使得 Java 程序能够调用本机库并处理本机数据,而不会出现 JNI 的脆弱性和危险。
这是个预览版 API 。
(4) 425: Virtual Threads (Preview)虚拟线程(预览版)
将虚拟线程引入 Java 平台。虚拟线程是轻量级线程,可显著地减少编写、维护和观察高吞吐量并发应用程序的工作量。
(5) 426: Vector API (Fourth Incubator) Vector API (第四次孵化)
引入一个 API 来表达在运行时能够可靠编译的向量计算,在支持的 CPU 架构上优化向量指令,从而实现优于标量计算的性能。
(6) 427: Pattern Matching for switch (Third Preview)Switch 模式匹配(第三预览版)
用 switch 表达式和语句的模式匹配,以及对模式语言的扩展来增强 Java 编程语言。将模式匹配扩展到 switch 中,允许针对一些模式测试表达式,这样就可以简明而安全地表达复杂的面向数据的查询。
该特性最早在 Java 17 中作为预览版出现, Java 19 为第三次预览。
(7) 428: Structured Concurrency (Incubator)结构化并发(孵化阶段)
引入用于结构化并发的 API 来简化多线程编程,结构化并发将不同线程中运行的多个任务视为单个工作单元,从而简化错误处理、提高可靠性并增强可观察性。
这是一个孵化阶段的 API。
程序语言的选择Java 或者Golang?
假如你是一名应届毕业生或者还是一名在校的学生,那么你该如何选择编程语言呢?
你是想从事Java程序员还是Golang程序员呢,这两种都是面向互联网公司的,也就是我们常说的面向B/S开发的和跨浏览器开发的。
其实Java和Golang各有各的优势和缺陷,Golang是后起之秀,它2007年,诞生于谷歌的工程师当中,所以它的诞生的主要目的就是为了提效,我说的是开发效率。
也就是说你是使用Golang语言开发一个简单的Web程序,就就需要几行代码就可以完成,并且不需要依赖很多第三方的Jar包,这个肯定是高效的,并且性能也很高,毕竟依赖的Jar包少,这个是一个明显的优势。
但是你要想想,目前Java已经发展了快30年了,已经诞生了很多提效的框架,现在你使用Java开发一个Web程序,也只需要几行代码和几个配置文件就可以启动,并完成微服务的交付,只是技术的细节全部被屏蔽到框架底层了。
使用Golang去开发微服务呢,你需要亲自动手去完成这些代码逻辑,假如Golang语法不简洁,那么怎么能够让有洁癖的工程师去接受它了。
诚然现在关于Golang的中间件框架已经逐步成熟起来,比如K8s和云原生,都是基于Golang语言实现的,并且Golang目前在游戏领域也应用非常广泛,有取代C 的趋势,但是由于它太灵活了,并且语法规则过于于简单,导致在写代码的过程中是没有成就感的,因为每个人都只能这样去写代码,并没有什么高级和新鲜的玩法,大家都是一样的。
关于Golang和Java之争,我这里只能够告诉大家,Java还是主流,但是Golang是后起之秀,短期之内是没办法超越Java的,之所以这么流行,那是因为现在老外,都在玩Golang,所以国内的专家们,也得赶潮流,让Golang在国内也推动起来。
咱们应届毕业生,在选择语言的时候,Java和Golang都可以去选择,效果是差不多的,反正都是比较火的语言。
打一个小广告,欢迎大家购买我的技术类书籍“Spring Cloud Alibaba微服务架构实战派上下册”,跟着我学完Spring Cloud Alibaba你也能找到一份理想的工作。