Update 20210523 3 reasons to learn Java in 2021.md

This commit is contained in:
菜梨子 2021-06-10 22:12:47 +08:00 committed by GitHub
parent 344cdda96c
commit a16a035210
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -9,7 +9,7 @@
2021年学习Java的三个理由
======
Java具有功能强大、多样化、可拓展、有趣的特点。这就是您应该使用它的原因和方式。
Java具有功能强大、多样化、可拓展、有趣的特点。这就是Java为什么被我们广泛使用也是我们应当找到正确使用它的方式。
![Learning and studying technology is the key to success][1]
@ -23,27 +23,27 @@ Java是在1995年发布的当我写这篇文章的时候它已经26岁了
### 1\. 一次编码, 任意环境都能跑通
如果代码只能在特定的操作系统和环境下运行,那这会很令人惊讶甚至是失望的。代码必须从一种对人友好的高级程序设计语言编译成机器语言即被设计可以用于响应CPU的一系列二进制指令。在先进的计算机世界中我们很难理解为什么不能仅仅编写代码,就能将它发送给任何一个想要稳定运行它的平台,而且无需担忧它们处在什么样的平台中。
如果代码只能在特定的操作系统和环境下运行,那这会很令人惊讶甚至是失望的。代码需要从对人友好的高级程序设计语言编译成机器语言即被设计可以用于响应CPU的一系列二进制指令。在先进的计算机世界中我们很难理解为什么不能仅仅只要编写代码,就能将它发送给任何一个想要稳定运行它的平台,无需担忧它们处在什么样的平台中。
Java 是解决这种不协调的方法。它的代码是可以跨平台进行工作的,在任何运行它的系统上都可以执行相同的工作。Java 实现这一壮举的方法起初是有驳常理的。在某种程度上Java 只与一台计算机兼容。奇怪的是这台电脑实际上并不存在。Java 代码的目标计算机是 Java 虚拟机 (JVM)。这是一个由Java的创建者编写的程序实际上可用于您能想到的任何计算设备。只要您安装了它,您运行的任何 Java 代码都会由位于您计算机中的这台“虚拟”计算机进行处理。Java 代码由 JVM 执行VM向您的计算机发送适当的特定于平台的指令因此所有内容在每个操作系统和架构上都相同。
Java可以解决这种不协调的问题。它的代码是可以跨平台进行工作的在任何运行它的系统上都执行相同的工作。Java 实现这一壮举的方法起初是有驳常理的。在某种程度上Java只与一台计算机兼容。奇怪的是这台电脑实际上并不存在。Java代码的目标计算机是Java虚拟机 (JVM)。这是一个由Java的创建者编写的程序可用于您能想到的任何计算设备。只要您安装了它,您运行的任何 Java 代码都会由您计算机中的这台“虚拟”计算机进行处理。Java代码由JVM执行JVM向您的计算机发送适当的特定于平台的指令因此所有内容在每个操作系统和架构上都相同。
当然Java 使用的方法并不是真正的卖点。大多数用户和许多开发人员并不关心软件兼容性是如何实现的,只关心它是否具备兼容性。许多语言都承诺提供跨平台的功能,而且通常情况下,这个承诺最终都是真的,但是这个过程并不总是容易的。编程语言必须针对其目标平台进行编译,脚本语言需要特定于平台的解释器,而且两者都很难确保对底层系统资源的一致访问。跨平台支持越来越好,库可以帮助转换路径、环境变量和设置,并且一些框架(特别是 [Qt][2])在弥补外设访问的差距方面做了很多工作。但是 Java 拥有兼容性,并始终可靠地提供它。
当然Java 使用的方法并不是真正的卖点。大多数用户和许多开发人员并不关心软件兼容性是如何实现的,只关心它是否具备兼容性。许多语言都承诺提供跨平台的功能,通常情况下,这个承诺最终都是真的,但是这个过程并不总是容易实现的。编程语言必须针对其目标平台进行编译,脚本语言需要特定于平台的解释器,而且两者都很难确保对底层系统资源的一致访问。跨平台支持变得越来越好,库可以帮助转换路径、环境变量和设置,并且一些框架(特别是 [Qt][2]在弥补外设访问的差距方面做了很多工作。Java始终可靠地提供它的兼容性
### 2\. 明智的代码
Java 的语法即使是在最好的方面很无聊。如果您把所有流行的编程语言都放在一个摇滚杯中,那么您会得到 Java。 看看用Java编写的源代码您或多或少会看到编程中所有唯一表达式的平均值。括号表示函数和流程控制的范围,变量在使用前被清楚地声明和实例化,并且表达式具有清晰一致的结构。
Java 的语法即使是在最好的方面很无聊。如果您把所有流行的编程语言都放在一个摇滚杯中,那么您会得到 Java。 通过观察Java编写的源代码您或多或少会看到编程中所有特定表达式的平均值。括号表示函数和流程控制的范围,变量在使用前被清楚地声明和实例化,并且表达式具有清晰一致的结构。
我发现Java学习过程中通常会鼓励自学的程序员使用结构较少的语言编写更精炼的代码。有许多“基本”编程课程是无法通过从在线学习的源代码中收集技术来学习的比如将全局变量声明保持在Java公共字段的风格中、正确地预测和处理异常、使用类和函数、和许多其他的技术。从Java借鉴的一点小改动可以产生很大的不同。
### 3\. Scaffolding and support
### 3\. 基础设施和支持
所有流行的编程语言都有很好的支持系统。这也是使得其变成流行语言的原因。他们都有很多文档资料。有针对它们的集成开发环境 (IDE) 或 IDE 扩展、示例代码、免费和付费培训和开发者社区。在另一方面,当您在尝试做某事遇到困难时,似乎没有任何编程语言有足够的支持。
所有流行的编程语言都有很好的支持系统,这也是使得其变成流行语言的原因。他们都有很多文档资料,有针对它们的集成开发环境 (IDE) 或 IDE 扩展、示例代码、免费和付费培训和开发者社区。在另一方面,当您在尝试做某事遇到困难时,似乎没有任何编程语言有足够的支持。
我不能说 Java 与这两个普遍但又相互矛盾的真理隔开。尽管如此,我发现当我需要一个 Java 库时,我不可避免地会为给定的任务找到多个选项。通常我不想使用一个库,因为我不喜欢它的开发人员实现我需要的功能时,它的许可证与我喜欢的略有不同,或者有其他琐碎的争论点。当一门语言得到大量支持时,我就会非常有选择性。我可以从许多非常合适的解决方案中选择一个最能满足我需求的方案,不论我的这些需求多么微不足道都能被最好得满足。
我不能认为Java与这两个普遍但又相互矛盾的真理能够区分开。尽管如此我发现当我需要一个Java库时我不可避免地会为给定的任务找到多个选项。通常我不想使用一个库的原因是我不喜欢它的开发人员在实现我需要的功能时对应的许可证与我喜欢的有所不同或者有其他琐碎的争论点。当一门语言得到大量支持时我就会很多的选择性。我可以从许多合适的解决方案中选择一个最能满足我需求的,不论我的需求多么微不足道都能被最好得满足。
更好的是,有一个围绕 Java 的健壮的基础设施。像[Apache Ant][3]、[Gradle][4]、和[Maven][5]等工具 帮助您管理构建和交付的过程。像[Sonatype Nexus][6]等服务帮助您实现监控的安全性。[Spring][7]和[Grails][8]使网络开发变得更加容易, 而[Quarkus][9]和[Eclipse Che][10]有助于云上的开发。
更好的是,有一个围绕Java的健康的基础设施。像[Apache Ant][3]、[Gradle][4]、和[Maven][5]等工具 帮助您管理构建和交付的过程。像[Sonatype Nexus][6]等服务帮助您实现监控的安全性。[Spring][7]和[Grails][8]使网络开发变得更加容易, 而[Quarkus][9]和[Eclipse Che][10]有助于云上的开发。
在接触 Java 语言本身时,您甚至可以选择使用什么样的版本。[OpenJDK][11] 提供经典的官方 Java [Groovy][12] 是一种类似于脚本语言的简化方法 (您可以将它与 Python 进行比较), 并且[Quarkus][13]为容器优先开发提供了一个框架。
在接触Java语言本身时您甚至可以选择使用什么样的版本。[OpenJDK][11]提供经典的官方Java而[Groovy][12]是一种类似于脚本语言的简化方法 (您可以将它与Python进行比较), 并且[Quarkus][13]为容器优先开发提供了一个框架。
还有很多论点,但现在已经足以说明 Java 是一个完整的包了,无论您想在其中寻找什么。