Java 于 1995 年发布,在我撰写本文时已有 26 年的历史。它最初是专有的,但在 2007 年,Java 以 GPL 开源许可证发布。要理解 Java 的重要性,您必须理解它声称要解决的问题。然后您才能理解它为何以及如何使开发人员和用户受益。
理解 Java 解决什么问题的最佳方法是开发软件,但仅仅使用软件也是一个好的开始。作为一名开发人员,当您将自己在计算机上完美运行的软件发送到其他计算机时,您的麻烦很可能会开始;它可能无法工作。它应该可以工作,但正如任何程序员都知道的那样,总有一些东西会被忽略。当您在另一个操作系统 (OS) 上尝试该软件时,这种情况会更加复杂。这就是为什么任何给定的软件站点上都有如此多的下载按钮:Windows、macOS、Linux、移动设备,有时甚至更多。
作为用户,一个典型的场景是您想下载一些很棒的软件,但发现它不适用于您的平台。似乎很遗憾,在如此先进的计算机上仍然会发生这样的事情,它们可以在计算机内运行虚拟化计算机,通过模拟保持旧视频游戏的活力,甚至可以放在您的口袋里,但软件交付实际上非常困难。
是否有更好的方法? 可能有。
1. 一次编写,到处运行
代码令人惊讶地,甚至可能令人失望地,特定于操作系统和架构。代码必须从人类友好的编程语言编译成机器语言,这是一系列二进制指令,来源于 CPU 设计响应的内容。在我们先进的计算机世界中,我们不能只是编写代码并将其发送给任何想要运行它的人,而无需担心他们使用的是什么平台,这感觉很神秘。
Java 是解决这种不协调现象的方案。它是跨平台代码的实现,可以在您运行它的任何系统上以相同的方式工作。Java 实现这一壮举的方法起初是违反直觉的。在某种程度上,Java 与除一台计算机之外的任何东西都不兼容。更奇怪的是,这台计算机实际上并不存在。Java 代码的目标计算机是 Java 虚拟机 (JVM)。这是一个由 Java 的创建者编写的程序,并为几乎所有你能想到的计算设备分发。只要您安装了它,您运行的任何 Java 代码都由这个存在于您计算机内部的“假想”计算机处理。Java 代码由 JVM 执行,JVM 向您的计算机发送适当的平台特定指令,因此一切在每个操作系统和架构上都以相同的方式工作。
当然,Java 使用的方法并不是真正的卖点。大多数用户和许多开发人员并不关心软件兼容性是如何实现的,只关心它发生了。许多语言都承诺跨平台功能,通常,这个承诺最终是真实的,但过程并不总是那么容易。编程语言必须为目标平台编译,脚本语言需要特定于平台的解释器,并且两者都很少能确保对低级系统资源的一致访问。跨平台支持越来越好,库可以帮助翻译路径、环境变量和设置,并且一些框架(特别是 Qt)在弥合外围访问方面的差距方面做得很多。但 Java 拥有它,并始终如一地、可靠地交付它。
2. 合理的代码
Java 的语法以最好的方式来说是枯燥的。如果您将所有流行的编程语言都放入滚筒中,那么您将得到的就是 Java。查看用 Java 编写的源代码,您或多或少会看到所有编程独特表达方式的平均值。括号表示函数和流程控制的范围,变量在使用前被清楚地声明和实例化,并且表达式具有清晰且一致的结构。
我发现学习 Java 通常会鼓励使用结构较差的语言的自学程序员编写更智能的代码。有很多“基本”编程课程,您无法通过从您在线研究的源代码中收集技术来学习,例如将全局变量声明集中在一起(采用 Java 的公共字段的风格)、正确地预测和处理异常、使用类和函数等等。从 Java 借用的一些小技巧可以产生很大的不同。
3. 脚手架和支持
所有流行的编程语言都有完善的支持系统。这就是流行语言流行的原因。它们都有大量的库;有用于它们的集成开发环境 (IDE) 或 IDE 扩展、示例代码、免费和付费培训以及开发者社区。另一方面,当您在努力使某些东西工作时遇到困难时,似乎没有哪种编程语言有足够的支持。
我不能声称 Java 可以将自己与这两个普遍但矛盾的真理区分开来。尽管如此,我发现,当我需要 Java 的库时,我不可避免地会为给定的任务找到不止一个选项。通常我不想使用库,因为我不喜欢其开发人员选择如何实现我需要的功能,它的许可证与我喜欢的略有不同,或者任何其他微不足道的争议点。当一种语言有丰富的支持时,我有奢侈的选择权。我可以从许多完全合适的解决方案中选择一个,它将最好地实现任何要求,无论多么微不足道。
更好的是,Java 周围有一个健康的 инфраструктура。诸如 Apache Ant、Gradle 和 Maven 之类的工具可以帮助您管理构建和交付过程。诸如 Sonatype Nexus 之类的服务可以帮助您监控安全。Spring 和 Grails 使开发 Web 变得容易,而 Quarkus 和 Eclipse Che 则有助于云开发。
您甚至可以选择在接近 Java 语言本身时使用什么。OpenJDK 提供经典的官方 Java,而 Groovy 是一种简化的方法,类似于脚本语言(您可以将其与 Python 进行比较),而 Quarkus 则为容器优先开发提供了一个框架。
还有很多,但足以说明 Java 是一个完整的软件包,无论您在寻找什么。
奖励:易于学习
Java 已被证明对我以及各行各业的许多开发人员来说都是一个明智的解决方案。以下是我喜欢使用 Java 的一些原因。
您可能听说过或推断出 Java 是一种用于笨拙的政府网站的“专业”语言,并且为“真正的”开发人员保留。不要被 Java 在其 25 年多的历史中获得的许多不同声誉所迷惑!它只有其声誉的一半可怕,这意味着不比任何其他语言更可怕。
编程很难;这是无法逃避的。它要求您进行逻辑思考,它迫使您学习一种表达选项比您的母语少的新的语言,并且它要求您弄清楚如何解决足够困难的问题,以至于它们驱动您进行编程自动化。没有哪种语言可以缓解这些问题。
但是,编程语言的学习曲线可能会以令人惊讶的方式有所不同。有些语言很容易入门,但在您开始探索细节时会变得复杂。换句话说,可能只需要一行代码即可打印“hello world”,但是一旦您了解了类或函数,您就必须重新学习该语言(或至少其数据模型)。Java 从一开始就是 Java,但是一旦您学会了它,您就可以访问它的所有技巧和便利。
简而言之:去学习 Java 吧!它功能强大、多样化、可扩展且有趣。为了帮助您入门,下载我们的 Java 速查表,其中包含您在完成最初的十几个项目时所需的所有基本语法。在那之后,您将不再需要它,因为 Java 非常一致且可预测。享受吧!
评论已关闭。