被人惨遭“忽视”的Java!

173 阅读5分钟

(此文转载自乐字节)

如今,虽然 Java 仍然主导着企业级的应用程序,但是 Java 却鲜有炒作。尤其是对于编程新手来说,由于 Java 缺乏大肆宣传,所以会被很多人忽视。

年轻/天真的开发人员(包括我自己甚至身边乐字节的同事)经常会被新语言和新工具所迷惑,有时甚至以牺牲生产力和理智为代价。我曾经对 TypeScript 万分痴迷,也曾认为 Node.js 生态系统是有史以来最酷的技术。我喜欢转译的代码、实时调试、庞大的程序包库,甚至是支离破碎的构建系统。而当我尝试在实际生产中使用这些技术,并与经验丰富的工程师交谈时,这些技术身上的魔力瞬间消散了。

另外,我也曾对 JS 生态系统也充满了非常不理智的热爱,因为 JS 技术非常热门,它有炒作。但最后却发现,现实远不及我的期望。如今,我在 Java 的工作中品尝到了曾经在 JS 身上求而不得的美好体验。蓦然回首,发现自己以前完全被炒作牵着鼻子走,差点错过了 Java,我不禁有点失望。Java 编程十分有意思、效率很高,但新手开发人员却对这个“老家伙”退避三舍,这对 Java 来说太不公平了。

Java 的伟大之处

我个人感觉,编写 Java 程序的感觉非常好。这在很大程度上归功于 JetBrains 在 IntelliJ IDEA 中付出的心血。自动补齐、快速跳转到定义、查找调用等各项功能都非常方便使用,而且重构很容易。但是,Java 真正出类拔萃的地方在于第三方库的开发体验。

依赖关系与行业趋势

虽然我的经验很有限,但在我看来,大胆使用外部依赖项是现在的趋势。“自给自足”已经过时,现在的流行趋势是“万物为我所用”。特别是 JavaScript 开发人员使用第三方库的频率极高,即使是一些琐碎的操作(例如,数字的左侧填充操作等)。我认为积极使用第三方依赖关系并没有太大坏处,但是上游 API 的变化可能会对非类型化的 JS / Python 代码库造成严重破坏。

在 Java 中使用第三方库时,你需要确切地知道将哪些类型传递给方法。最重要的是,如果使用函数错误,编辑器会给出警告。所以,从大量使用外部库的角度来看,我认为应该有更多人会喜欢 Java。

标准的类型可节省时间

动态类型、弱类型等等,无论什么类型都有许多缺点。当依赖项改变了 API 方法时,你的应用程序就会运行时出问题,而不是构建时,这就是问题所在。如果开发人员必须参考方法的实现,才能搞明白需要哪种类型,那么就会浪费大量的时间。TypeScript 和 Python 的类型提示可以解决此问题,但是它们缺乏在运行时验证传递类型的能力。

我不是很喜欢 TypeScript 的类型保护,因为你必须自己实现,并保证实现的正确性。在我看来,这对于定义者和使用者双方都没有好处。考虑以下代码:

声明一个类型,而且还必须为该类型编写验证逻辑,这让我觉得很难受。上述代码让人感觉某人使用了错误的工具。

与 TypeScript 的定义不同,Java 的标准类型系统不仅明确了类型定义,而且还可在默认情况下保证类型保护,所以减轻了程序员的很多负担。

没有优化的负担

Java 开发人员可以放心地使用 JVM。无论是实现多线程应用程序还是将大量数据存储在堆上,他们都可以相信自己不会因内存管理或数据竞争而陷入困境。这个优势主要体现在和 C++ 的对比中,因为 C++ 就有很多这样的坑。

在你看来,符合以下条件的语言有哪几种?

高质量的打包管理器和构建系统

标准类型

大型社区

自动优化

我认为唯一合格的语言就是 Java。

在大学期间,我学习和使用了以下编程语言:

C++。所有核心的必修课程都选择了该语言:计算机系统、操作系统、数据结构等。当然,选择 C++ 也确实很合适,因为它可以直接进行内存管理、创建内核模块,而且还带了很多挑战和学习的机会。

Python 和 Julia。如你所料,这两门语言是数值计算和离散数学教授的挚爱。

Scala。编程语言原理教学中使用了该语言,主要是因为其函数编程和模式匹配特征。尽管 Scala 使用了 JVM,还可与 Java 互操作,但它为开发人员提供的体验不同于 Java。

Web 编程语言(HTML / CSS / JS)。这些仅用于一门名叫“软件开发方法和工具”的课程,这门课程非常注重行业趋势。

总结

构建应用程序的方法不止一种,但是我认为 Java 没有得到足够的重视,尤其是在创业公司和新手编程社区。非类型语言也是非常实用的工具,但我不认为它们就是构建大型应用程序的默认选择。如果你是一位全栈开发人员,而且从未深入就接触过 Java,那么请在下一个项目中尝试下吧,你会收获意外惊喜。

90 年代和 2000 年初,Java 和 JVM 被炒得沸沸扬扬,但我觉得即便到了今时今日,它也不应该从大众的视野中消失。我个人就通过 IntelliJ 和 Java 发现了意外的惊喜。

PS:给大家推荐个很不错的免费自学课程,java全套1056集入门到进阶必看B站: BV14h411U75p