软件中最迷人的现象之一是Java的持久突出。作为一种语言和一个平台,Java经受住了技术领域的彻底变革,它自己的内部结构也随之改变。二十多年来,Java是如何保持在企业和开源的中心的?让我们看看几个突出的因素。
Java社区进程
Java尽管屡遭挑战,它还是被公认为企业软件的支柱。面对如此彻底的变革,如何解释Java的持续相关性?一个重要的因素是社区的热情,这种热情是通过治理结构来培养的,治理结构让开发人员保持Java的活力。
Java 的治理远非一台平稳运行的机器,它是相互竞争的利益和组织的混合物,这些利益和组织在 Java 社区进程 (JCP) 和 Java 规范请求 (JSR) 中找到了自己的声音。归根结底,JCP 是深切关注 Java 技术的人们做出贡献和解决冲突的场所。
作为一名资深的 Java 程序员,看到这门语言成功地结合了 lambda 和闭包,真是令人惊讶。向面向对象的编程语言中添加函数式结构是一项极具争议且令人印象深刻的壮举。将 Hibernate 和 Spring(分别为 JSR 317 和 JSR 330)等技术引入的概念引入官方平台也是如此。如此广泛使用的技术仍能融合新思想,令人振奋。
社交编码和开源并不是 Java 独有的,但它们是 Java 生态系统健康的关键组成部分。与 JavaScript 一样,随着网络的发展,Java 与编码社区同步发展。
开源框架和工具
Java 成功的另一个重要驱动力是围绕它构建的大量开源框架和工具。你可能需要的几乎任何东西都有一个或多个可用的库。如果你喜欢一个项目,那么它很有可能是开源的,你可以为它做出贡献。这对于学习和建立社区都非常有用。
Java 生态系统中的丰富项目从普通示例到数据库驱动程序和类似技术,一直延伸到不朽的。有像 Tomcat 和 Jetty 这样的应用服务器,像 Hibernate 这样的框架,甚至还有 Eclipse IDE。所有都是邀请贡献者的开源项目。
Spring依赖注入
这个元框架可能是其他元框架可能追求的标准。为什么?因为 Spring 允许你使用相同的工具来编写自定义代码并将第三方代码合并到你的程序中。
通过实现依赖注入和控制反转,Spring 不仅使你能够使你自己的内部组件更加标准,而且还将类似的标准化扩展到第三方项目和供应商如何准备他们的组件。这使得你在程序中使用这些组件的方式更加一致。
Spring 作为一个框架,引入了一种干净且一致的方式来配置和组合应用程序组件,这在当时改变了游戏规则,今天仍然至关重要。
一切都是对象
Java 设计的一个重要特点是,在 Java 中,一切都是对象。
在当前偏爱函数式编程的开发环境中,有时将 Java 和面向对象编程的这一方面丢弃是一种时尚。Java 的管家通过将一些函数式编程习惯用法合并到该语言中来做出回应。但是他们一直坚信 Java 仍然是一种强烈的面向对象的语言,其中所有东西实际上都是一个对象。
在任何范式中都可以编写很棒或糟糕的代码。进入 Java 系统,你会预先知道它是强类型的,并且所有内容都包含在类中。这种设计决策的绝对性消除了复杂性,并为使用它的语言和程序带来了简洁性。
JVM
Java 虚拟机是 Java 构造的另一个方面,在其开发时,JVM 是一种针对运行时环境多样性的大胆技术解决方案。从那时起,它有时似乎是过度架构的负担和性能困难的根源。但经过多年的不断完善,这项技术逐渐证明了自己的正确性,它们无处不在,甚至形成了云计算的最低层。
JVM 应用于 devops 容器和无服务器架构,提供了明确的部署环境目标,具有明确定义的特性和控制。现代Java虚拟机也值得一看,它们提供复杂的自动内存管理,开箱即用的性能接近 C。