Java我的2020年终盘点

这段时间一直在忙着工作上的事情和新书的筹备。但都2021年了,怎么都应该写一点,算不上总结回顾,只能算闲聊胡扯。

2020年TIOBE’s对于各种编程语言排名情况的总结是:“Python is TIOBE’s Programming Language of 2020”。这无疑是对我自己这个写了20年Java程序的老屌丝相当有震撼力的一句话,曾几何时自己调侃delphi、调侃Ruby的样子和近些年自己被调侃的样子极为相似。

Python的快速发展、Java的被赶超、Ruby的夕阳余晖有其语言自身的因素,也有各大厂商推波助澜的因素,还有其生态圈发展情况等等因素,但笔者认为那些都是表面现象。而最大影响因素是由 会对信息化应用、数字化应用的需求所决定的。一门高级语言是不是有活力,主要是看它能不能低成本解决各行业对各类软件方案进行快速复制的要求。这些成本可以包括人力资源、单位时效、需求匹配度、行业所需的运行效能各个方面。

而作为程序员,特别是生活在当前物质环境下的程序员,我们对于一门语言的选择往往取决于建立在此基础上的下一维度的考量,例如就业机会如何、学习成本如何、薪资水平如何、持续性如何、内卷风险如何甚至还包括行业趋势的押注。就基本盘来看Java和Python这两门语言在各自擅长的领域表现得都还不错,不过也相互向对方擅长的领域进行试探(这里的Java泛指JVM系列语言,包括但不限于Groovy、Scala、Kotlin)。之前Java和C#不也是这样相互试探,互摸过河的吗/p>

1、关于Java版本

Java 区今年发布了JDK14和JDK15两个版本,但是目前国内使用Java的群体,大都使用的是JDK8或以下版本,将JDK11应用于生产环境的组织还是少数(但越来越多),即使使用Oracle JDK 11完成的系统开发大多也会运行在OpenJDK环境下。这主要的原因还是由于大家关注的主要是JDK的LTS版本,而JDK8和JDK11这两个LTS版本,Oracle分别承诺会一直提供更新支撑到2030年和2026年(但还需要注意OpenJDK相关停更时间)。如果读者所在组织依然还在使用JDK8以前的版本,这里建议可以至少升级到JDK8了。

今年发布的JDK14和JDK15两个版本,虽然不是TLS版本,但是作为JDK17 LTS发布前的特性预览,大家可以通过这两个版本中发布的各种重要特性窥探到Oracle对于Java后续发的规划思路。从JDK 9开始,Oracle JDK每半年就会更新一次,每次发布新的Oracle JDK后其对应的Open JDK也会随之进行半年时间的更新。

2.2、Spring Cloud更新

随着Spring Boot的更新,Spring Cloud也发布了新的版本。2020年Spring Cloud发布了2020.0版本,该版本并没有再使用之前Spring Cloud版本的命名方式(上一个Spring Cloud的版本命名为Hoxton,这些版本名都是以英国伦敦地铁站进行的命名),新版本采用日历化版本命名为2020.0.X。该版本中正式去掉了多个netflix集成的组件,例如netflix-hystrix、netflix-ribbon、netflix-zuul、netflix-turbine,只有netflix eureka得以保留(并且已经不推荐使用),可见netflix在Spring Cloud的新版本中所占比重已经是是越来越低了。

实际上Spring Cloud替换netflix各个组件的动作在之前的版本中已逐渐清晰,Spring Cloud官方也给出多个组件的替换方案(列举这些替换方案后,可以看到,Spring大 区的技术栈更新真的很快,稍不留神就容易遗漏更新,再稍不留神就容易内卷):

  • 服务注册中心:
    Nacos,来自于SpringCloudAlibaba,之前如果已经在项目中使用的Consul,那么建议继续使用;如果是新的项目或产品,建议切换到Nacos上来;其它还在支持的组件包括zookeeper、Consul;Eureka已经不建议使用,如果仍然在项目或者产品上使用,则可以考虑以最小的技术代价尽快完成升级。个人认为Nacos之所以会后来居上,它的集成度很高,显著减少了使用者的学习成本是很重要的一个方面

  • 服务调用:
    openFegin,有的读者容易混淆openFegin和Fegin,这两者不是一回事,Fegin是netflix提供给Spring 区的组件,目前已被openFegin替换掉

  • 调用负载:
    LoadBalancer,在新版本中已经正式替换掉Ribbon

  • 服务配置:Config组件依然存在于Spring Cloud的最新版本中,但如果读者所在组织使用的是Naos,那么建议可以使用Nacos进行功能替换

其余不再列举,总结一下Spring Cloud的发展趋势:组件集成度逐渐升高,初始版本中由netflix提供的各种组件已被逐步移除(主要原因是后者更新频度无法满足Spring 区的要求),SpringCloudAlibaba提供的组件在Spring 区所占份额逐步提升,甚至可以猜测不久的将来SpringCloudAlibaba和原生Spring Cloud两者的技术线路会逐步合并。实际上读者直接使用SpringCloudAlibaba就是一个不错的选择

3、周边动态

3.1、IDE工具更新:

Eclipse最近几年使用份额掉的非常厉害,最主要的原因就是大多数开发人员转向了 Intellij IDEA,虽然后者的商用版是付费的,但并不影响开发人员的使用热情(你懂的)。不过个人认为Eclipse和IDEA两个主要的开发工具并没有谁绝对胜出的说法,厂商支持和 区活跃度起到了主要的影响作用,选择哪个工具还是看个人喜好,毕竟想靠换一个工具就get新技能的想法有些幼稚。

  • 欢迎页发生了明显的变化,在欢迎页上新增了学习选项卡,以便于使用者对IDEA的使用学习。

  • IDEA对Git的支持已经非常完整了,直接将Git选项集成到了顶层菜单中,并且在搜索选项卡中新增了单独的Git搜索结果项。

  • 其它优化项诸如代码表情、阅读器模式、调试功能改进、性能分析器、内存快照等等。

    Java我的2020年终盘点

3.2、Centos 8 将很快停止维护

CentOS 8将于2021年停止更新,不过CentOS 7还是会支撑到2024年,所以目前使用量最大的CentOS 7版本的用户暂时不会受到影响。另外CentOS 8 停止更新后,使用者可以选用CentOS Stream 8在非生产环境进行替换。不过,个人认为最好的选择是直接切换到Ubuntu server。

3.3、企业应用方面,中台化大行其道

小前台、大中台实际上是阿里2015年开始在内部推行的技术战略,到了18年各个行业看着阿里的成功经验后也开始逐步解决这样的资源集中化解决方案。零售、物流、快消品、耐消品、互金等等行业,都有一批企业开始试行中台化线路。还有一批IT企业也开始精耕于企业级中台化解决方案,并向客户大肆宣传自己的成功案例。但是真的所有企业都适合做中台吗者持怀疑态度。要知道阿里所宣推的中台,也只是电商行业的中台,简称电商中台。

单纯从技术层面来考虑,中台化战略涉及到对企业中若干系统的整合问题,但并不是所有企业都具有阿里那样快速的系统迭代特性,就笔者个人所接触的客户,一些客户还在使用10年前的老系统,这些系统的集成将是比较困难的技术问题;从业务层面考虑,并不是所有的企业都有几十个业务系统,上千个业务流程,对单一几个系统的中台化是否可以达到简化业务的目的IT团队人力资源的角度看,算了,不看了。

一年的时间又过去了,疫情的影响无论是对个人还是行业都是很明显的,程序员应该要多多考虑如何避免内卷的问题,要多多考虑自身抵御风险的能力,不要在舒适区待得太久。2021,与君共勉。

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92131 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月10日
下一篇 2021年1月10日

相关推荐