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)
你可能已经听说过 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 和 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 功能
正如我过去所说的那样,我像许多 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 和 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,尤其是 Jenkins。
这意味着,如果你是一位经验丰富的 Java 程序员,并且热衷于管理环境,自动化和改善整体结构,那么你可以成为DevOps 工程师。
8. RESTful Web 服务
我想在 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 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在 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.0 中引入了众多令人激动的新特性,包括支持 Java 9、HTTP/2、基于 Spring 5 构建、强力集成 GSON 等等。
那么在时间允许的情况下,你还应该花一些时间学习 Spring Boot 2 和微服务,我相信它会给你带来不一样的体验。
11. Apache Spark 和 Kafka
我想在 2020 年继续深入探索的另一件事是大数据,主要是 Apache Spark 和 Apache Kafka 框架。我不确定是否有时间去看其他大数据技术,但是它的好东西和大数据可能是目前最热门的技术。
总结
这就是 Java 程序员在 2020 年可以学到的一切吗?就像我说的那样,技术日新月异,程序员面临的最大挑战是使自己保持不断学习的状态。除了以上这些技术外,肯定还有很多其他的东西,你可以查找在新的一年就像学习一门新的编程语言如 Kotlin,但对我来说,如果我能在 2020 年实现这些目标,我会更高兴。