合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
译者 | 刘汪洋
审校 | 重楼
学习 Java 的过程中,我意识到在 90 年代末 OOP 正值鼎盛时期,Java 作为能够真正实现这些概念的语言显得尤为突出(尽管我此前学过 C++,但相比 Java 影响较小)。我特别欣赏 Java 的平台独立性。
相比简单性,我更看重结构和一致性,这也是我坚持使用 Java 的主要原因。
在我的职业生涯中,我遇到了一些质量不高的 Java 代码库,这让我对 Java 产生了些失望。然而,在参与了许多其他优秀的项目之后,我重新燃起了对 Java 的热爱。
我注意到那些批评和抱怨 Java 的通常是一些年轻人,他们接触 JavaScript 的机会更多。与JavaScript 相比,Java 可能看起来更加笨重和受限——充斥着模板代码,拥有严格的类型系统等等。但如果让我选择,我无疑会更愿意处理一个次优的 Java 代码库,而不是 JavaScript 的。
只有在你积累了一定的工作经验,处理过分散在几十个甚至上百个文件中的代码后,你才会开始意识到,Java 所谓的“限制”其实是为了防止你陷入困境的安全措施。
“只有两种编程语言:被人们抱怨的和没人使用的。”这是 C++ 之父 Bjarne Stroustrup 的著名言论。
关于 Java 的看法,确实存在不少争议。相比之下,C++ 也有它的问题。这种语言深受爱恨交织的评价,仿佛是一种难以摆脱的复杂关系。
Python 也同样面临批评。
很多讨论集中在全局解释器锁(GIL)上,它被认为是阻碍有效多线程实现的主要障碍。由于Python 核心很多部分都依赖于 GIL,因此它可能无法被完全移除。为了解决这一问题,开发者不得不通过使用多个进程和创建消息传递机制来实现进程间的通信。此外,为了解决性能瓶颈,除非对关键代码使用C/C++进行重写,否则 Python 的执行速度通常较慢。当然,Python 2 到 3 的过渡也引起了一些问题。
此外,我曾经参与过一个 Django 项目。那时,我认为 Python 相比于类型严格的语言更有优势,尽管它适用于某些场景,但并不适合那些有着成千上万个类的复杂系统。
当这个项目由我一人扩展至多人参与,代码量超过 1 万行时,它变得极其难以维护。
之后我转向 Java,这是一个令人开眼界的经历。它让我深刻认识到自己对 Java 及其生态系统的热爱。因此,我决定记录下我所喜爱的 Java 生态系统方面的内容。这样,当有人对 Java 有所非议时,你就有 25 个理由来反驳他们。
Java 已经发展了 25 多年,作为一个在这个生态系统中工作的开发者,回顾其成熟过程非常有趣。
Java 广泛的生态系统最大的优势在于它提供了丰富的库、构建工具和框架选择。
JVM 生态系统极为丰富,几乎对于每个问题都有一个最佳的库解决方案,而且这些库通常都表现出高性能并得到良好维护。在构建工具方面,也有多种选择,例如 Gradle、Maven 和 Bazel 等,它们能够提供快速且可复制的构建过程。对于那些不太熟悉 Java 生态系统的人来说,Java 还为日志记录、数据库连接、消息传递和应用服务器等各种功能提供了默认实现,这些都是非常好的入门点。
以日志记录为例,假设你的应用程序需要进行日志记录。Java 提供了与 JDK 无缝集成的默认日志记录选项。如果你对默认选项不满意,或觉得它不够好,那么你还可以选择其他优秀的日志记录库,因为默认的日志记录仅仅是日志记录 API 的一个基本实现。
不仅仅是日志记录,Java 生态系统还为数据库连接、消息传递、应用服务器、Servlets 等提供了丰富的选择。
“一次编写,到处运行”是用来描述 Java 语言跨平台优势的常用口号。现在学习 Java 的许多开发者可能没有意识到这一功能对软件开发的重大意义。
让我们来回顾一下背景。在 Java 诞生的十年前,C++ 是主流的编程语言。然而,开发者们面临的一个主要挑战是 C++ 的平台依赖性。用 C++ 编写的代码往往需要针对不同的操作系统或硬件架构进行重新编译和修改。
Geeks for Geeks
想象一下,如果每次 Java 发布新版本,都要求你重写程序代码,那将是多么昂贵和耗时的过程,尤其是对于大型组织而言。
Java 已经发展多年,这意味着有许多基于旧版本 Java 构建的软件产品,它们是许多企业的核心,扮演着关键角色。
在企业级开发中,项目规模通常庞大且复杂,这些系统要迁移到最新的 Java 版本需要细致的规划和执行。
Java 对向后兼容性的承诺极为重要,它向那些投入巨大资源开发系统的开发者或组织保证,他们的系统可以持续运行并维护,而无需进行全面重写。Java(JVM)的向后兼容性也简化了迁移过程,促进了新功能和改进的采用,同时保障了现有系统的稳定性。
Java 是一种强类型语言,与 Python 等松散类型的语言形成对比。如果你使用过 Python,你会立刻感受到将不同类型的值赋给同一变量的灵活性,而语言会动态适应。
int age = 25;
String name = "John";
TOP