引言

2020 来了,第一批 00 后已经 20 岁了,95 后也到了晚婚的年龄,员外的头发也越来越少了,新的一年大家有立下了哪些 Flag ?小伙伴们别急着立 Flag,让员外帮你分析一下哪些技术正流行、哪些技术已过时后再立也不迟。时势造英雄,技术也是一样,新的技术层出不穷,要真正做到顺势而为却又不随波逐流(少学点保护头发)。

数据来自JetBrains Developer Ecosystem Survey 报告,文末附上链接。

Java 版本对比

Java 8 作为Sun公司被 Oracle 收购后的第一个 LTS 版本(Long-term support:长期支持),有着很多新特性(包括:lambda、方法引用、Stream API、接口增强等),近三年吸引了大量旧版本用户迁移到 Java 8,而 Java 11 作为第二个 Oracle 发布的 LTS 版本(现已加入付费套餐)也获得了不错的使用率。

员外瞎评:

如果小伙伴们还在 Java 8 以前的版本,Java 8 是个不错的选择,一步到位的话选 Java 11 就没错了,如果想避免付费坑的话建议使用 AdoptOpenJDK 或者其他第三方 JDK,需注意 Java 8 也将在 2021 年开始收费。

员外 Flag :20 年输出 5 篇以上的 Java (特性、版本)原创文章。

Web 服务器使用对比

Tomcat 一骑绝尘,商业化版本服务器市场份额惨不忍睹。

员外瞎评:

Tomcat 以其简单灵活的使用方式,多到发指的部署方式,以及有 Apache 亲爹罩着,几乎垄断了 Web 服务器市场份额,Jetty 在前有 Tomcat 后有商业化服务器的夹缝中获得近 20% 的市场份额着实不易(Jetty:我太难了),对技术感兴趣的小伙伴可以考虑学习 Jetty。

员外 Flag :会在公众号发起投票,如果有人看我就搞一个系列。。。

替代 Web 服务器技术

员外学过 Spark Java ,设计理念很不错的,奈何生不逢时,刚有发展势头就被 Spring Boot 压死了。

员外瞎评:

这个没啥可说的,要学就学 Netty 吧,NIO老牌技术了。

员外 Flag :无(头发不够用,不想学Netty (╯‵□′)╯︵┴─┴ )。

打包、运行 Web项目方式

即便有了 Spring Boot 的加持,Jar 包使用比率上升依然不明显,猜测其原因之一应该是 War 包也可以直接 java -jar *.war 来运行的原因,说实话,员外也不能理解为什么会有那么多 Jar 包发布方式,依赖 Jar 包也统计了?

员外瞎评:

这个没有什么可评论的,数据变化不明显,可以跟踪观察明年数据变化,有知道原因的朋友可以留言指点。

员外 Flag :至少一篇解析 Spring Boot 可执行 Jar 解析。

Web框架使用对比

Spring Boot 以其优雅的设计理念再次颠覆了 Java Web 开发,甚至侵入到了非 Web 项目(使用可执行 Jar),蚕食了包括自家 Spring MVC 在内的所有 Web 框架使用率,Spring 第一次颠覆了 EJB,这次颠覆了自己。

员外瞎评:

喜闻乐见的是 Struts 系终于把自己玩死了,原本使用率第一的 Web 框架,教科书式的走向了穷途末路。

Spring Boot 堪称开源界的典范,无论是易于上手,难于精通的学习曲线,还是优雅的代码结构、完善的文档、快速的问题反馈、完整的生态体系,Spring Boot 不可能不火,一句话,Spring 系必学。

员外 Flag :10 篇以上的 Spring Boot 干货,老少咸宜,欢迎关注,如果大家有兴趣我也可以对比一下 Struts 与 Spring,简单分析一下开源框架如何玩死自己。

构建工具的使用

Maven 稳坐老大哥的位置,Gradle 紧随其后,Ant 不复昔日的辉煌,SBT 依然是最难用的构建工具(SBTools)。

员外瞎评:

不使用构建工具的人越来越少(可能是一些老古董级别项目),另外值得注意的是连续三年 Gradle 使用率都在上升,有可能是未来的趋势,值得学习一下。

员外 Flag :一系列 Gradle 学习文章(不确定能写几篇),同时附带与 Maven 的对比心得。

编译器(IDE)的使用

JetBrains公司的报告,大部分都是 IDEA 使用者,所以这个图不一定能代表 Java 生态圈。

员外瞎评:

工欲善其事,必先利其器,一个好用的 IDE 能大幅提高开发效率,想当初员外从 eclipse 转到 STS 惊为天人,后来使用了 IDEA,真香!

员外 Flag :会推荐一下好用的插件,使用技巧等等,数量随心吧。

总结

如同日志(参考我的系列文章)一样,有了 Spring 的加持,Java 程序员很安逸,除了Web以外还有大数据、安卓、游戏开发也有《我的世界》、编译器有 JetBrains 全家桶。拥有所有语言中最完善的生态又十分稳定,新技术多却迭代速度慢(前端:你说谁呢,食屎啦你),实际上 Java 近三年几乎也没有昙花一现的技术。员外将技术分三类:

  1. 不学你就 out 了:Spring Boot、IDEA、Tomcat、Maven 以及 Java 8 的新特性
  2. 值得关注的技术:Java 9、10、11、12、13、14...新特性、Gradle、VS Code
  3. 觉得自己头发够用可以作一下学习的技术:Netty、Jetty

以上是员外的经验之谈,正所谓吾生也有涯,而知也无涯,在学习新技术时应做到有的放矢,希望能够帮助朋友们在新的一年提供一些学习方向,让我们一起立下 Flag: 共同学习(暗示关注),争取在呵护头发的同时, 20 年技术突飞猛进。

注意了:文章中有两个彩蛋等你发现。

如果觉得写的不错,求关注、求点赞、求转发,如果有问题或者文中有错误,欢迎留言讨论。

扫码关注公众号,第一时间获得更新

数据来源:

https://www.jetbrains.com/research/devecosystem-2017/java/

https://www.jetbrains.com/research/devecosystem-2018/java/

https://www.jetbrains.com/lp/devecosystem-2019/java/

一起来立Flag吧!超炫的数据图表分析 2020 年 Java 技术趋势的更多相关文章

  1. 超炫的HTML5粒子效果进度条 VS 如何规范而优雅地code

    最近瞎逛的时候发现了一个超炫的粒子进度效果,有多炫呢?请擦亮眼镜!   // _this.ch){ _this.particles.splice(i, 1); } }; this.Particle.p ...

  2. 使用 CSS3 实现超炫的 Loading(加载)动画效果

    SpinKit 是一套网页动画效果,包含8种基于 CSS3 实现的很炫的加载动画.借助 CSS3 Animation 的强大功能来创建平滑,易于定制的动画.SpinKit 的目标不是提供一个每个浏览器 ...

  3. 【特别推荐】小伙伴们惊呆了!8个超炫的 Web 效果

    CodePen 是一个在线的 HTML.CSS 和 JavaScript 代码编辑器,能够编写代码并即时预览效果.你在上面可以在线展示自己的作品,也可以看到其他人在网页中实现的各种令人惊奇的效果. 今 ...

  4. 超炫数字特效动画AE模板

    下载方式: 网盘地址+迅雷地址+迅雷地址+备份地址 <ignore_js_op> 本AE模板是由Videohive机构出品的超炫数字特效动画AE模板,Videohive The Numbe ...

  5. Cool!15个超炫的 CSS3 文本特效【上篇】

    每一个网页设计师都希望创建出让用户能够赏识的网站.当然,这是不可能满足每个人的口味的.幸运的是,我们有最强大的工具和资源.实际上,我们非常多的网站模板,框架,内容管理系统,先进的工具和其他的资源可以使 ...

  6. Canvas 示例:4种超炫的网站动画背景效果

    今天,我们想分享一些动画背景的灵感.全屏背景图片的网站头部是最新的网页设计趋势,已经持续了一段时间.最近人们一直在转向动画添加更多的视觉兴趣到他们的网站中,在这里我们想向您分享几个使用  JavaSc ...

  7. Waves – 赞!超炫交互体验的点击动画效果

    Waves 点击效果的灵感来自于谷歌的材料设计,很容易使用.只需要引入 waves.min.css 和 waves.min.js 到 HTML 文件中可以使用了.采用 touchstart 与 tou ...

  8. 为网格布局图片打造的超炫 CSS 加载动画

    今天,我想与大家分享一些专门为网格布局的图像制作的很酷的 CSS 加载动画效果.您可以把这些效果用在你的作品集,博客或任何你想要的网页中.设置很简单.我们使用了下面这些工具库来实现这个效果: Norm ...

  9. iHover – 30+ 纯 CSS 实现的超炫的图片悬停特效

    iHover 是一个令人印象深刻的图片悬停效果集合,完全基于 CSS3 实现,无依赖,能够搭配 Bootstrap 3 很好地工作.基于 SCSS 技术构建,便于修改变量.有模块化的代码,无需包含整个 ...

随机推荐

  1. Android教程-02 在程序中输出Log

    视频教程,建议采用超清模式观看 在Android中一般都用Log输出日志,常见的有5个不同的级别 Log.v() Log.d() Log.i() Log.w() Log.e() 当然很多程序员还比较习 ...

  2. [kuangbin带你飞]专题九 连通图B - Network UVA - 315

    判断割点的性质: 如果点y满足 low[y]>=dfn[x] 且不是根节点 或者是根节点,满足上述式子的有两个及其以上. 就是割点 如果是起点,那么至少需要两个子节点满足上述条件,因为它是根节点 ...

  3. 条件随机场(CRF) - 4 - 学习方法和预测算法(维特比算法)

    声明: 1,本篇为个人对<2012.李航.统计学习方法.pdf>的学习总结,不得用作商用,欢迎转载,但请注明出处(即:本帖地址). 2,由于本人在学习初始时有很多数学知识都已忘记,所以为了 ...

  4. JPA 一对多双向映射 结果对象相互迭代 造成堆栈溢出问题方法

    问题: JPA 在双向映射时,会相互包含对方的实例,相互引用,造成递归迭代,堆栈溢出(java.lang.StackOverflowError). 分析: 在后端向前端传递的时候会将数据序列化,转为j ...

  5. Codeforces Round #529 (Div. 3) E. Almost Regular Bracket Sequence(思维)

    传送门 题意: 给你一个只包含 '(' 和 ')' 的长度为 n 字符序列s: 给出一个操作:将第 i 个位置的字符反转('(' ')' 互换): 问有多少位置反转后,可以使得字符串 s 变为&quo ...

  6. Mac下SVN基本操作和常见错误

    一.基本操作 1  从服务器上下载代码 svn checkout http://xxx.xxx.xxx/xxx 2  获取最新的代码 svn update 3  提交代码 svn commit -m ...

  7. P1037 最小公倍数

    题目描述 给你两个正整数A和B,求它们的最小公倍数. 输入格式 两个正整数 \(A,B(1 \le A,B \le 10^9)\) . 输出格式 一个整数,表示A和B的最小公倍数. 样例输入 6 8 ...

  8. ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(15)之前台网站页面

    源码下载地址:http://www.yealuo.com/Sccnn/Detail?KeyValue=c891ffae-7441-4afb-9a75-c5fe000e3d1c 本项目主要是一个素材的分 ...

  9. JavaScript中的forEach

    语法:array.forEach(callbackfn[, thisArg]) 参数说明: array1   必需. 一个数组对象. callbackfn   必需. 一个接受最多三个参数的函数. 对 ...

  10. 使用Glide加载圆角图片

    //设置图片圆角角度 RoundedCorners roundedCorners= new RoundedCorners(6); //通过RequestOptions扩展功能,override采样率, ...