为什么 Java 在 25 年之后依旧如此年轻:一个架构师的看法


导读:下个月就要过26岁生日的Java,依然与开发者保持着紧密的联系;现在,全球开发者社区中仍有 69% 的人使用 Java 编写代码。

Oracle 最近发布了 Java 15,其中包含了大量的特性,比如密闭类,隐藏类,Edward-Curve 数字签名算法(EdDSA),文本块等等。这使得 Java 15 成为一门 25 岁的“年轻”编程语言,而不是一门 25 岁的“年迈”编程语言。

作者:Dr.Magesh Kasthuri

译者:keepmovingljzy

来源:掘金开发者社区(ID:juejin_im)

01 Java 的历史和演变

在 1990 年代初期,有数十种非常稳定的编程语言,像 FORTRAN, COBOL, Pascal, C++, and Visual Basic,许多平台像 Windows, Mac, Unix, Linux 和移动端平台需要一种在程序开发和架构设计中统一的方法。

James Gosling 和他的朋友在他的办公室附近的一颗橡树(Oak)下讨论了这些方面的问题,他们觉得应该开发一种新的编程语言来解决这些差异。在开发一种名为 Oak 的新语言时,他们在基础方面非常挑剔,这个语言当时被命名为 Green(因为这个团队名字叫 Green),后来又被命名为 Java (基于他们最喜欢印尼咖啡叫做 Java 咖啡)。

James Gosling 在 1995 年引入了 Java,在那期间还有其他的语言 C,C++,VC++,Visual Basic, Python 都有自己的市场和开发人员,部署。Java 提出了 WORA(一次编写,到处运行)的概念, 简单性,面向对象编程,并消除了 C++ 的所有痛点。最重要的是带有 Applet 支持的 Web 编程以及 Enrich UI 设计(抽象窗口工具包)。

由于其简单性,它吸引了更多的开发人员,并在 1998-2001 年间成为所有开发人员在国际公司(美国,英国)工作的“通行证”。但是同时在 2001 期间 Dotcom 减少了大量工作岗位,为 Java 增加新的开发人员。

然而,在后面的阶段,在 RMI 之上使用 JSP、Servlet 和中间层体系架构 EJB,在 Web 编程中引入更多的特性,会给 JAVA 的企业应用空间带来更多的思考。为了进入移动应用领域,Java 还引入了移动编程,从而引入了J2ME。由此,Java 提出了 J2SE,J2ME 和 J2EE。

但是他们都使用 CORE-JAVA 作为基础语言。Java 也和 IBM 合作开发了 Java Sound Library;Java Media Framework 与 Java 运行时结合在一起,未来通过 IBM 使用 Voice 进行语音合成对于媒体和教育领域的人们来说是另一个了不起的里程碑。

随着时间的推移,Java 增加了开发人员的数量,同时引入了 JUG。Java Bug 追踪和 Bug 报告都做的很好。

由于其简单而强大,更多的部署,随后几年的增长是显著的,并且将市场上的 C++, VC++, Visual Basic 淘汰了,在开发者社区中领先了 5-6 年,它甚至将 Python 语言搁置一旁,并带了了诸如 JavaScript Web 编程(在 CSS+HTML 之上的动态支持)之类的功能。

Java 具有大量的变种功能,并且可以与新引入的 GO,RUBY,SCALA 等竞争,并且也能占领自己的市场。

02 Java 基石

Green 团队在 Java 编程语言的初始化概念过程中规划的基本面使得 Java 编程语言的基本模块是:

  • 构建一种简单的,面向对象的语言,这对于 C++ 程序员来说很容易。

  • 平台无关并且架构无关。

  • 高性能与许多内存特性以及通过命令行参数进行性能调优。

  • 多线程,动态,解释执行。

  • 安全性和强大的功能。

▲图:Java 的历史和发展时间轴

https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a8d45a3385db48cb85a9c964d087bb43~tplv-k3u1fbpfcp-watermark.image

有了这些正确且强大的基本块,Java 在采用现代编程语言中的新变化时,比如 Lambda 表达式,Switch 表达式和密闭类等仍然没有做任何妥协。因此许多新的编程框架,包括 Hadoop 和许多大数据框架,云功能将 Java 用作原生工具。这就是为什么在 25 年后,Java 仍然在与 Scala,Go 和 Python 等新时代的编程语言斗争。

03 从 Sun 到 Oracle 公司的转型

Sun 公司已被 Oracle 收购,因此他们从 2010 年开始接管 Java。Oracle 已经将 Java 的版本控制从 1-2 年提高到 6 个月一次。这导致了巨大的变化和新功能的增加。Java 8 是吸引开发者并重新占领市场份额的非凡版本之一。即使 Oracle 公司引入了 Java 14,对于所有开发人员来说,仍旧使用着更加稳定的 J2SE 1.8 版本来维持他们的部署。

▲图:Java 框架的热图

https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a8d45a3385db48cb85a9c964d087bb43~tplv-k3u1fbpfcp-watermark.image

在 Oracle 接管 Java 之后,人们开始考虑开源的思想过程,并从太阳公司的 J2SE(OpenJDK)和 Oracle 公司的 J2EE JAKARTA Eclipse community foundation 项目的名义开始支持 J2EE 开放。

Java 已在所有领域广泛使用,无论是制造业,零售业,银行业还是电信业,Java 语言都是必不可少的,每个开发人员都应了解 Java。因此,它在全球范围内的行业中创造了更多的机会。在 2006-2013 年期间,Oracle 公司遇到了困难。

但是,在 Oracle 接管Java之后,这种速度或开发/部署已被彻底消除。Sun Microsystems 召开了Java ONE 会议,每次发布都会进行全球性的技术讨论,有关 Java 的整个新生事物(新功能,未来的 JSR)将与更多的技术受众进行讨论和辩论。

正如我们所讨论的,Java 在微控制器和微空间项目中也有一席之地。Java 带来的重点和转变之一是 Java 嵌入式系统特性,该特性处理使用网络远程管理装置和设备。我觉得这是最近几天引入物联网(IoT)的基础,但早在 2006-2010 年的时候,Java就已经考虑过了。

Oracle 带来的第一个重大变化是以两种形式发布 Java:

  1. Java 的开发平台称为 OpenJDK。

  2. 企业使用的商业平台称为 Oracle Java。


04 基于 Java 平台的框架

作为 Java 的简介,您可以自由地在世界上看到更多语言,例如 GO,Python,Ruby,PERL 等,以及它们的市场空间。Java 已用于客户端层或两层应用程序(Applet,JavaScript),服务器层(JSP,Servlet),中间层(EJB)和 N层(EMAIL,JNDI,JDBC 等)。

它还可以帮助 Sun 公司和 Oracle 在 Java 增长期间增加他们的开发人员和贡献者。Java 已在 Spring,Hibernate 等第三方框架中大量使用,并启用了跨数据库和动态/运行时依赖项注入功能。

除此之外,随着下一代编程语言的转变,单体世界也转变为微服务世界,为商业和市场带来更多的稳定性、可伸缩性和敏捷性。Java 在所有基于 SpringBoot 的微服务容器中都得到了使用,并再次获得了一组顶级程序员、经过验证的部署,等等。

我忘了提到另一个特性,即所谓的多语言支持,其中 Java 支持 UNICODE 以支持跨语言(国际)支持。Java 在大数据、aim 领域的应用非常广泛,有更多的用例、解决方案和部署。Java 也将其转变指向基于云的平台部署,因此,通过满足热门市场需求,也使得更多的开发人员能够在 Java 中贡献和工作。

Java 被广泛应用和集成到各个领域、技术、工具集,提高了 Java 的利用率,从空间、卫星研究到制造、教育、银行、金融、移动、云等。Java 已经成功的与以下第三方工具和技术集成。Java 对 AI、ML、Cloud 等进行了更广泛的集成,在性能上得到了稳定、持续的提升。

25 年来,Java 一直被 Python、C++、Scala、GO、Erlang 等各种语言所忽视。尽管如此,Java仍然是第一名,它拥有更多的社区成员和稳定的部署以及大量的用例。

Java 与其他第三方框架的集成,从 Hibernate 到 Struts,直到现在,SpringBoot 微服务框架也被全球采用和部署。与响应式编程语言相比,响应式 Java 变得更加流行,并提供了更多的选项。

这些集成将 Java 带到了编程领域的下一个层次,性能和稳定性是 Java 成功特性的关键部分。Oracle 公司也在他们的版本中宣布了很多新的变化;不再是每两年发布一次 Java,而是每 6 个月发布一次。

此外,还添加了一个新网站来查看即将到来的项目或到目前为止完成的任务的特性。伴随着 25 年 Java 历程的成功里程碑,还有一些重要的里程碑,比如 JDK8 获得了巨大的部署量等等。就这个特性而言,开发人员可能希望 JVM 能有更快的速度和性能改进,以及容错能力,以处理大量的并发用例。

05 Java 平台最近面临的困境

当 Sun 拥有 Java 时,还有其他 Java 运行时环境,Java 中的增强已经完成,特别是 IBM 引入了 IBM Java(它也有一些有趣的特性)。

突然之间,Sun 公司公司对微软提起诉讼,称微软垄断 IE 浏览器,并使用 JRE 来反对 Sun 公司的许可要求。Sun 已经赢得了与微软的官司,最近 Oracle 也推出了谷歌套件,在他们的移动 android 平台上使用Java。

06 快速查看最新的 Java 15 版本

Oracle Java 版本基于 JDK 企业提案(JEP)和 Java 规范请求(JSR),而 EdDSA 是 JEP 339 的一种实现。它是采用约 126 位加密算法的独立于平台的加密签名。这可以用于具有更高安全性的数据传输处理,以传输加密的数据。Java 15 中引入的密闭类是 JEP 360 的实现,它限制了哪些类可以扩展或实现密闭类。例如:

public abstract sealed class Shape      
    permits Circle, Rectangle, Square {...}

使 Shape 成为密闭类,并且仅允许“permits”类实现/扩展。这样可以安全地访问类层次结构,并控制接口的可重用性。隐藏类基于 JEP 371 的实现,它通过允许在运行时使用反射 API 生成类来限制类的使用,并使该类对外部环境不可发现。因此,无法通过动态代理生成隐藏类,并且可以安全地访问它们。

ZGC 或 Z 垃圾收集器是基于 JEP 377 的。在 Java 1.8 的早期版本中,G1 GC 是自我管理垃圾收集的突破,并极大地提高了性能。后来在 Java 11中,ZGC 引入了各种性能改进特性,现在在 Java 15 中,它得到了进一步的改进,如取消提交未使用的内存、多线程堆、并发的类卸载等等。

JEP 378 引入的文本块特性可以创建以自动化转义序列格式存储的多行字符串字面量,并以一种可预测的方式格式化字符串,同时改进了字符串字面量的内存使用情况。这样可以有效地在 Java 代码中将 XML,JSON 和 HTML 代码段作为字符串字面量进行存储。

外部内存访问 API 是一个 JEP 383 实现,它允许程序有效地访问已分配的 Java堆之外的外部内存。它最初是作为一个预览版本在Java 14中引入的,现在改进的版本作为 Java 15 的一部分发布了。这个 API 允许通过添加一段像MemorySegment.allocateNative(100)这样的代码来快速分配本机内存段。

推荐阅读????

1

Java核心技术(原书第11版)

作者:凯·S.霍斯特曼

推荐语:《Java核心技术》,获Jolt大奖图书,第11版针对Java SE 9、10、11全面更新,补充了Java新版本的新特性,用更清晰明了的示例加以解释。卷I:主要介绍Java语言的基础知识的专业级详解;卷II:主要介绍软件开发需要了解的高级主题。完整讲解Java开发者学习路线。本书适合全体初-中级Java编程人员阅读。

2


Effective Java中文版(原书第3版)

作者:约书亚·布洛克(Joshua Bloch)

推荐语:“我很希望我10年前就能拥有这本书。有人可能认为我不需要任何Java方面的书籍,但是我需要这本书。”

——Java之父James Gosling

你是否正在寻找一本能够更加深入地了解Java编程语言的书,以便编写出更清晰、更正确、更健壮且更易于重用的代码?本书再适合不过了!这是一本分享经验并指引你少走弯路的经典著作,针对如何编写高效、设计优良的程序提出了最实用、最权威的指导方针,通过90条经验法则,探索新的设计模式和语言习惯用法,帮你更加有效地使用Java编程语言及其基本类库。适合已经掌握Java核心技术的程序员,想更加深入地了解Java编程语言的开发者阅读。

3

Java编程思想(第4版)

作者:Bruce Eckel

推荐语:Java学习必读经典、殿堂级著作!《Java编程思想》赢得了全球程序员的广泛赞誉,即使是晦涩的概念,在BruceEckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Java的基础语法到高级特性(深入的面向对象概念、多线程、自动项目构建、单元测试和调试等),本书都能逐步指导你轻松掌握。

4

Java并发编程实战

作者:Brian Goetz 等

推荐语:Java并发编程里程碑著作!10年畅销100000+册。从并发编程的基本理论入手,逐步介绍了在设计Java并发程序时各种重要的设计原则、设计模式以及思维模式,使得开发人员能够更快地领悟Java并发编程的要领,快速地构建大规模的并发应用程序。

5


深入理解Java虚拟机

JVM高级特性与最佳实践(第3版)

作者:周志明

推荐语:大厂面试通关宝典全新升级!第三版大幅更新50%以上内容,周志明从Java技术体系、自动内存管理、虚拟机执行子系统、程序编译与代码优化、高效并发5个维度全面剖析虚拟机。以实战为导向,通过大量实际案例,分享解决各种Java技术难题的方案和技巧。几乎涵盖大厂面试全部知识点。值得所有Java技术人员一读再读。

6

Java虚拟机规范(Java SE 8版)

作者:蒂姆·林霍尔姆 弗兰克·耶林 等

推荐语:基于Java SE 8, Oracle官方发布,Java虚拟机技术创建团队成员撰写,国内Java技术专家翻译,阐释Java虚拟机与Java的关系和发展历程,是深度了解Java虚拟机和Java语言实现细节的必读之作。

7


深入解析Java虚拟机HotSpot

作者:杨易

推荐语:很多JVM的底层技术细节你是否只了解表面?面对JVM Crash或性能调优方面的问题时你是否会束手无策?面对上层Java应用发生的偏离预期的行为是否会不知所措?……

这本书以源码分析为基础,从运行时、垃圾回收器、即时编译器3个维度全面、深入解析HotSpot VM的底层实现和工作机制,同时与上层的Java语言和库结合,指导读者解决JVM开发、JVM调优和JVM排错方面遇到的各种问题。

干货直达????

更多精彩????

在公众号对话框输入以下关键词

查看更多优质内容!

PPT | 读书 | 书单 | 硬核 | 干货 讲明白 | 神操作

大数据 | 云计算 | 数据库 | Python | 爬虫 | 可视化

AI | 人工智能 | 机器学习 | 深度学习 | NLP

5G | 中台 | 用户画像 1024 | 数学 | 算法 数字孪生

据统计,99%的大咖都关注了这个公众号

????

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值