2020 年 Java 程序员应该学习什么?

大家好,我相信大家在新的一年都有一个良好的开端,并准备好制定一个提升自我技术的目标。作为 Java 开发人员,我还制定了一些目标,希望在今年成为一名更好的 Java 开发人员。

如果你尚未制定目标,这将帮助你制定 2020 年的目标。作为一名程序员,我们面临的最大挑战是使自己保持不断学习的状态。技术变化非常快,每两年你就会看到新版本的编程语言和框架。

今年也有很多的变化,每 6 个月更新一次 Java 新版本、Spring 5、Spring Security 5 和 Spring Boot 2,对于 Java 开发人员而言,这可能是最繁忙的一年。

2019 年的时候,我以为 Java 11 是新的,在我无法完全学习 Java 11 之前,Java 12 和 Java 13 已经为我们准备好了。自 JDK 9 以来,所有这些 Java 版本都具有许多令人兴奋的功能,例如文本块(多行字符串),switch 表达式,局部变量的 var,API 增强,GC 改进,线程本地握手(机制优化)等,我真的很高兴能在 2020 年学到这些内容。

Spring framework 和 Spring Security 也是如此的,我还不知道 Spring 4.0 和 Spring Security 4.0 上的所有更改,我的项目仍在使用 Spring Security 3.1,然而现在已经有了 Spring 和 Spring Security 的 5.0 版本。

在过去的几年中,我的学习速度有所下降,还没有掌握最新的技术,比如容器-Docker 和 Kubernetes,AWS、GCP 和 Azure 等云平台,单元和集成测试空间的最新变化以及简化结构的新版本,如 Spring、Spring Security 和 Spring Boot。

因此,2020 年将是让我自己了解技术方面最重要的事情,探索 DevOps 和云计算领域,特别是 Docker、Kubernetes 和 AWS 的 Jenkins。

分享一张后端路线图(国外的一位大佬总结的),可以去图中的网站下载,或者在【武培轩】微信公众号回复【路线图】获取。

后端路线图

2020 年 Java 开发人员可以学习什么?

这是我认为 Java 开发人员应该在 2020 年学习的东西,很可能你已经了解了其中的大多数,但是更好地学习它们并进行深入研究不会对你有害处的。

1.容器(Docker 和 Kubernetes)

Kubernetes

你可能已经听说过 Docker 和 Kubernetes 等容器技术,以及它对 DevOps 团队的影响。Kubernetes 是你可以学习的最重要的工具之一,并且将陪伴你的整个职业生涯。

如今,无论是大型企业还是小型创业公司,几乎每个开发团队都使用 Docker 和 Kubernetes。可以肯定地说,如果你现在开始学习,很有可能在工作中的某个时候用到 Docker 或 Kubernetes。

简而言之,无论你是初级 Java 开发人员还是经验丰富的资深人士,拥有 Docker 和 Kubernetes 知识对于你的职业发展和工作变动都是至关重要的。

2.云平台(AWS 、GCP 或 Azure)

云平台

除了容器,云是我认为每一位软件开发人员都应该在 2020 年学习的另一件事。各种规模和领域的公司现在都在将其环境迁移到云中,以节省成本和更好的可扩展性,这意味着你迟早要需要使用云原生应用程序。

它们对于数据科学,机器学习和人工智能领域中的迅猛发展是紧密相连的,因为只有云才能提供那些资源匮乏的模型所需的计算能力。

像 Amazon Web Service(AWS),Google Cloud Platform(GCP)或 Microsoft Azure 这样的学习型云平台不仅在你当前的工作上。你不需要学习所有这些知识,实际上,学习一种知识意味着你将对其他事物有一个公平的想法。

如果你要学习云平台相关的知识,那么我首先建议你学习 AWS,因为它是最流行和最成熟的云平台。

3. Git

Git

Git 和 Github 已经使用有一段时间了,虽然我过去在 IDEA 中使用过 Git,但是在命令行上我对 Git 还不是很熟悉。

为什么到目前为止我还没有掌握 Git?只是因为我还不需要它,我偶尔会从 Github 下载项目并从 IDEA 运行,但是我仍然是 Git 新手。

从现在开始,大多数公司都将其项目从 SVN,CVS 迁移到 Git,这也是学习和掌握 Git 的重要时机。

4.单元测试(JUnit 和 Mockito)

单元测试

我想在来年改进的另一个领域,Java 程序员可以使用许多新的框架和工具进行单元测试,并对其应用程序进行集成测试,例如用于模拟对象的 Mockito 和 PowerMock,用于自动集成测试的 Robot Framework 和Cucumber,当然还包括新的 JUnit 5 库。

在这方面有很多东西要学习,如果你可以花一些时间来提高单元测试技能,那么不仅可以提高你的编码专业知识,而且可以使你成为更专业的开发人员,每家公司都将以此为形式。

5.从 JDK 9 到 13 的新 Java 功能

JDK

正如我过去所说的那样,我像许多 Java 开发人员一样仍在努力追赶六个月发布一次的 Java 版本。我今年花了一些时间学习 Java 9、10、11 和 12 的新功能,但是对我来说,直到我使用 LTS 发行版 Java 13 之前,Java 11 仍然是优先事项。

JDK 9 在模块,拼图,反应流,Process API,HTTP2 客户端,JShell 和 API 改进(如集合工厂方法)方面带来了很多好处,我非常希望能尽早学习它们。

同样,JDK 10 带来了var,使你可以进行动态类型化和 GC 改进。然后,在JDK 12 和 JDK 13 的 Switch 表达式、文本块。

6. Spring Framework 5+

Spring

自从我们看到 Spring 和 Java Ecosystem 进行了许多重大升级以来已经有两年了,Spring Framework 5.0 就是其中之一。我一直在听说一些新功能,例如 Spring 5 的反应式编程模型,Java 8 和 9 的采用,某些单元测试的改进等,但是我还没有尝试过。

无论如何,我已经开始学习 Spring 5.0.0,并将保持这种势头在 2020 年持续下去。如果你使用 Spring,可能是学习 Spring 5.0 的最佳时机。

7. DevOps(Jenkins)

DevOps

去年,随着越来越多的公司进入DevOps并采用持续的集成和部署,这是另一个吸引我的领域。

DevOps 非常庞大,你需要学习很多工具和原理,这就是让很多开发人员不知所措的原因,但你不必担心。下面分享了一个大佬总结的 DevOps 路线图(公众号【武培轩】回复【路线图】获取),你可以按照自己的速度学习和掌握 DevOps,尤其是 Jenkins。

DevOps路线图

这意味着,如果你是一位经验丰富的 Java 程序员,并且热衷于管理环境,自动化和改善整体结构,那么你可以成为DevOps 工程师。

8. RESTful Web 服务

RESTful

我想在 2020 年继续改进的另一件事是我对编写 REST API 以及使用 Spring 使用 Java 实现安全且可扩展的RESTful Web Service 的了解。

这是 Java 世界中非常需要的一项技能,并且很少有人同时了解 Java 和 REST。如果你也一样,并且想学习如何使用Spring 开发 RESTful Web Service,那么让我们一起在 2020 学习。

9. Spring Security 5.0(OAuth)

Spring Security

Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在 Spring 应用上下文中配置的 Bean,充分利用了 Spring IoC(控制反转),DI(依赖注入)和 AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。

这是 Spring 生态系统的第三次重大升级,Spring Security 5.0.0 的主要亮点在于它只需要最小化的 JDK 8、反应式安全特性、OAuth 2.0(OIDC)和现代密码存储,你绝对不能错过。

与 Spring 5.0 框架一样,这是 2020 年我的另一个优先事项。

10. Spring Boot 2 和微服务

Spring Boot 2

Spring Boot 2.0 中引入了众多令人激动的新特性,包括支持 Java 9、HTTP/2、基于 Spring 5 构建、强力集成 GSON 等等。

那么在时间允许的情况下,你还应该花一些时间学习 Spring Boot 2 和微服务,我相信它会给你带来不一样的体验。

11. Apache Spark 和 Kafka

大数据

我想在 2020 年继续深入探索的另一件事是大数据,主要是 Apache Spark 和 Apache Kafka 框架。我不确定是否有时间去看其他大数据技术,但是它的好东西和大数据可能是目前最热门的技术。

总结

这就是 Java 程序员在 2020 年可以学到的一切吗?就像我说的那样,技术日新月异,程序员面临的最大挑战是使自己保持不断学习的状态。除了以上这些技术外,肯定还有很多其他的东西,你可以查找在新的一年就像学习一门新的编程语言如 Kotlin,但对我来说,如果我能在 2020 年实现这些目标,我会更高兴。

posted @ 2020-01-10 14:20  武培轩  阅读(1866)  评论(7编辑  收藏  举报