对于Java开发者来说,近年来,Java生态系统中诞生了很多东西。每6个月更新一次Java版本,发布很多流行的框架,比如Spring5、SpringSecurity5、SpringBoot2,给我们带来了很大的挑战。2019年初,我觉得Java10还是比较新的,但是在我学习Java10的所有特性之前,Java11、Java12、Java12已经接踵而至,对于忙碌的程序员来说,可谓是天大的事。大多数人根本没有时间看这些。基本上,这都是关于了解一些有用的新功能。Java版本的迭代速度真的是太快了,而且还带来了很多有趣的特性,比如局部变量类型推断、s??witch表达式、文本块支持等。我在Java9←2017、2019→Java13中记录了这些变化,发生了什么?Java是最大的框架,Spring也是。很多人的项目还在用SpringSecurity3.1,甚至不知道Spring4.0和SpringSecurity4.0有什么特点。不过Spring和SpringSecurity都已经到了5.0版本。以下是Java开发者在2020年应该学习的技术:1.DevOps(Docker和Jenkins)在过去的一年里,越来越多的公司正在向DevOps转型。DevOps非常庞大,需要学习很多工具和原理。但你不必担心。有大神分享了DevOps路线图(https://github.com/kamranahmedse/developer-roadmap,你可以按照这个路线图按照自己的速度学习和掌握DevOps。如果你是有经验的Java程序员,愿意学习环境2.Java9-Java15相信很多Java开发者主要使用的Java版本还是Java8,虽然Java9-Java13已经推出了一段时间的时间。但是作为Java程序员,我们可能因为某些原因无法在线上环境中升级JDK,但是还是有必要花点时间学习一下Java9、Java10、Java11、Java12和Java13的新特性.另外,你可以关注一些关键的特性,比如GC相关的特性,改变编码风格的特性等等。还有Java的LTS版本(Java8、Java11)可以重点学习。还要提醒大家,2020年,甲骨文还将推出Java14和Java15!!!如果你正在使用Java7,你很快就会被“坑”!3.SpringFramework52017年,我们见证了Spring以及Java生态的诸多重大升级,Spring5.0就是其中之一。Spring5的新反应式编程模型、HTTP/2支持以及Spring通过Kotlin对函数式编程的全面支持都值得仔细研究。4.SpringSecurity5.0SpringSecurity5.0提供了许多新特性并支持SpringFramework5.0,总共有400多个增强功能和错误修复。在SpringSecurity5.0.0之前,密码都是明文存储的,非常不安全。由于这是一个主要版本,我们决定使用更安全的密码存储方法。SpringSecurity5.0.0的主要亮点是它只需要最少的JDK8、反应式安全功能、OAuth2.0(OIDC)和现代密码存储。5.SpringBoot2SpringBoot2.0基于Spring5Framework,提供异步非阻塞IO响应式Stream和非阻塞函数式ReactiveWeb框架SpringWebFlux等特性。很多用过SpringBoot的人都知道,用SpringBoot搭建web应用确实又快又好。相信SpringBoot2会带来更多的惊喜。6、Hadoop、Spark和Kafka另外,Java程序员在2020年需要学习的是大数据相关的知识。特别是ApacheSpark和Kafka框架。2020年如果你也想学大数据,一定绕不开Hadoop生态。7、Elasticsearch全文搜索是最常见的需求,开源的Elasticsearch(以下简称Elastic)是目前全文搜索引擎的首选。维基百科、StackOverflow、Github都在使用它。Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式的、具有多租户能力的全文搜索引擎,带有HTTPWeb界面和无模式的JSON文档。Elasticsearch使用Java开发,并在Apache许可下作为开源软件发布。8、ServiceMesh这两年很火,火的一塌糊涂。2019年,任何与程序员相关的会议,如果没有关于ServiceMest的话题,就不好意思举办了。每个人都在谈论ServiceMesh;几乎没有人知道如何实现ServiceMesh;但是大家都觉得别人在大力做ServiceMesh;所以大家都说自己在做ServiceMesh;下一代微服务架构这个概念现在对于大多数人来说根本不知道它是什么。只知道很多大厂都号称在做,很多大牛都在说教。9、无服务器无服务器计算(英文:Serverlesscomputing),又称功能即服务(Function-as-a-Service,简称FaaS),是云计算的一种模式。基于平台即服务(PaaS),无服务器计算提供微架构。最终客户无需部署、配置或管理服务器服务。代码运行所需的服务器服务均由云平台提供。这东西听起来很高大上。2019年,和ServiceMesh一样,大家都号称在做。但是很多人不知道他是什么。10.Kotlin如果你关注Java13的新特性,一定知道引入了字符串文本块的功能。这个函数其实是从Kotlin借来的。另外,近年来Java的很多特性都借鉴了Kotlin,相比Java,Kotlin更加简洁,而且Kotlin编译出来的代码也可以直接通过JVM运行。Kotlin是一种静态类型的编程语言,运行在Java虚拟机上,也可以编译成JavaScript源代码。Kotlin最初是为了制作对性能要求很高的程序而设计的,所以它的运行速度与Java不相上下。Kotlin可以作为开发工具JetBrainsInteilliJIdeaIDE的插件使用。综上所述,就是笔者对2020年Java程序员应该学习的一些技术的总结,有些是必须要学的,有些是根据大家的精力考虑的。
