TranslateProject/translated/tech/20210523 3 reasons to learn Java in 2021.md
Xingyu Wang 9951a74a17 回收超期;清理
@Starryi @iamcopper @HuengchI 超期回收,如需要重新提交请更新后提交。
@mengxinayan @PearFL 翻译后文件没有移动,下回注意。
2021-06-13 08:12:02 +08:00

89 lines
9.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[#]: subject: (3 reasons to learn Java in 2021)
[#]: via: (https://opensource.com/article/21/5/java)
[#]: author: (Seth Kenlon https://opensource.com/users/seth)
[#]: collector: (lujun9972)
[#]: translator: (PearFL)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
2021年学习Java的三个理由
======
Java具有功能强大、多样化、可拓展、有趣的特点。这就是Java为什么被我们广泛使用也是我们应当找到正确使用它的方式。
![Learning and studying technology is the key to success][1]
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][2]在弥补外设访问的差距方面做了很多工作。Java始终可靠地提供它的兼容性。
### 2\. 明智的代码
Java 的语法即使是在最好的方面也很无聊。如果您把所有流行的编程语言都放在一个摇滚杯中,那么您会得到 Java。 通过观察Java编写的源代码您或多或少会看到编程中所有特定表达式的平均值。括号表示函数和流程控制的范围变量在使用前被清楚地声明和实例化并且表达式具有清晰一致的结构。
我发现Java学习过程中通常会鼓励自学的程序员使用结构较少的语言编写更精炼的代码。有许多“基本”编程课程是无法通过从在线学习的源代码中收集技术来学习的比如将全局变量声明保持在Java公共字段的风格中、正确地预测和处理异常、使用类和函数、和许多其他的技术。从Java借鉴的一点小改动可以产生很大的不同。
### 3\. 基础设施和支持
所有流行的编程语言都有很好的支持系统,这也是使得其变成流行语言的原因。他们都有很多文档资料,有针对它们的集成开发环境 (IDE) 或 IDE 扩展、示例代码、免费和付费培训和开发者社区。在另一方面,当您在尝试做某事遇到困难时,似乎没有任何编程语言有足够的支持。
我不能认为Java与这两个普遍但又相互矛盾的真理能够区分开。尽管如此我发现当我需要一个Java库时我不可避免地会为给定的任务找到多个选项。通常我不想使用一个库的原因是我不喜欢它的开发人员在实现我需要的功能时对应的许可证与我喜欢的有所不同或者有其他琐碎的争论点。当一门语言得到大量支持时我就会很多的选择性。我可以从许多合适的解决方案中选择一个最能满足我需求的不论我的需求多么微不足道都能被最好得满足。
更好的是有一个围绕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是一个完整的包了无论您想在其中寻找什么。
### 优点:简单易学
事实证明Java对我和各行各业的许多开发人员来说是一个明智的解决方案。以下是我喜欢使用Java的一些原因。
您可能听说过或推断出Java是一种“专业”语言只适用于笨重的政府网站专供“真正的”开发人员使用。千万不要被 Java超过25年以来的各种名声所迷惑它的可怕程度只有它名声的一半并不比其他任何语言更可怕。
编程很困难的这件事是无法逃避的,它要求您基于逻辑进行思考,学习一种比母语表达选方式更少的新语言,要您弄清楚如何解决困难的问题,使它们可以使用您的程序完成自动化的执行,没有语言可以避免这些问题。
然而编程语言的学习曲线的差异令人惊讶。有些一开始很容易但当您开始探索细节时就会变得复杂。换句话说打印“hello world”可能只需要一行代码但当您学习到了类和函数, 您相当于开始重新学习这门语言或者至少是它的数据模型。Java从一开始就是Java一旦您学会了它就可以使用它的许多技巧和便利。
简而言之: 去学习Java吧它具有功能强大、多样化、可拓展、有趣的特点。为了给您提供帮助, [下载我们的Java 备忘单][14], 它包含您在处理前十个项目时需要的所有基本语法。在那之后您就不再需要它了因为Java具有完美的一致性和可预测性。来享受它吧!
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/5/java
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[PearFL](https://github.com/PearFL)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/studying-books-java-couch-education.png?itok=C9gasCXr (Learning and studying technology is the key to success)
[2]: http://qt.io
[3]: https://ant.apache.org/
[4]: https://gradle.org
[5]: https://spring.io/guides/gs/maven
[6]: https://www.sonatype.com/products/repository-pro
[7]: http://spring.io
[8]: https://grails.org
[9]: https://opensource.com/article/21/4/quarkus-tutorial
[10]: https://opensource.com/article/19/10/cloud-ide-che
[11]: http://adoptopenjdk.net
[12]: https://opensource.com/article/20/12/groovy
[13]: https://developers.redhat.com/products/quarkus/getting-started
[14]: https://opensource.com/downloads/java-cheat-sheet