4份报告简读Java生态

createh53个月前 (01-20)技术教程37

小伙伴们好呀,我是小羊。

age++; 后,我决定收敛下好奇心,挖掘下技术深度。

因为这个号叫 Java4ye,所以第一个专栏就从 Java 开始吧!

那么现在的 Java 生态发展到什么情况了呢?

这里我收集了四份报告,一起看看吧

Java 生态报告 —— InfoQ

有四大专栏,下面简单介绍下。

Innovators

Jakarta EE

从 wiki 上了解到的信息,大致意思是:Oracle 将 Java EE 提交到 Eclipse 基金会,然后就改名成这个 Jakarta EE 了。(雅加达)

对照这个图,可以看到 5 开始支持 注解,7 开始支持 WebSocket 等。

Fast JVM Startup (CRaC)

CRaC(协调恢复检查点)项目研究 Java 程序的协调机制,以便在 Java 实例执行时检查点(生成映像、快照)。

从映像恢复可以 解决启动和预热时间 的一些问题。

你可以把预热后的 JVM 保存下来,然后快速启动。 主要是针对 Java 在 微服务 和 serverless 场景下的不足。

下图是 Springboot 3.2 对 CRaC 功能的描述。

下面是 Azul 使用 JDK 17 测试的效果。 效果超给力,确实不是一个数量级的。比如 Spring boot 从 4 s 到 40 ms。

其他

Java21 是目前的最新版, 虚拟线程 功能上线,相应的 虚拟线程框架有 Vert.x 。

Early Adopters

云原生方向的新框架: helidon (虚拟线程), micronaut(全栈)。

Fast JVM Startup (GraalVM)

和上面的 CRaC 不同,它采用 AOT 方式来加速启动 Java。

Early Majority

没想到,Quarkus 来到这一栏了,一直以为还很新颖。

Quarkus 是一个为 GraalVM 和 HotSpot 定制的 Kubernetes 原生 Java 框架

Late Majority

Clojure 是一种现代、功能性、动态的编程语言,它基于Java虚拟机(JVM)运行。它结合了 Lisp 的优雅和 Java 的实用性,提供了强大的并发性和宏系统。

Clojure 这个脚本语言我才发现不久,下面是一个应用例子。

Java 生态热门话题 —— Vaadin

前三个分别是 微服务 , k8s , AI/ML

第十个是 GraalVM

Java 生态报告 —— newrelic

这份报告是 23 年 4 月份的,可以看出在 JDK11 之后, G1 垃圾收集器使用率最高。其他内容我就兴致寥寥了,大致说了 JDK17 越来越多人用之类的。

Java 生态报告 —— Jetbrains

说好的 “你发任你发,我用 Java8” ,结果这么多 17 了。

总结

  1. Java 在朝云原生方向靠拢,出现了好几个新的框架
  2. 虚拟线程是最大的亮点
  3. JVM 在探索快速启动方向
  4. JDK17 是最近的一个 LTS 版本。
  5. 针对 AI/ML ,有 Spring AI 等项目出现。

相关文章

从零开始学Java系列之最详细的Java环境变量配置教程

前言:在上一篇文章中,壹哥给大家重点讲解了Java实现跨平台的原理,不知道你现在有没有弄清楚呢?如果你还有疑问,可以在评论区留言~之前的三篇文章,主要是理论性的内容,其实你暂时跳过不看也是可以的,我们...

java微服务环境配置——注册中心 配置中心Nacos

订阅专栏一、使用步骤(注册中心)1.启动nocas服务1)先下载Nacos,解压之后启动。解压之后的目录如下:2) 注意有的版本默认是集群启动,可以修改启动脚本。如下:3)也可以使用bin目录下命令行...

JAVA 01 jdk下载安装以及配置环境变量

1.搭建JAVA开发环境1.JDK的下载和安装从oracle官网下载即可。安装到E盘下双击安装,文件夹名字不可以有中文字符。安装路径为:E://java文件夹下。配置JDK环境变量找到path,进行新...

从零开始搭建Java Web中间件环境

作为Java开发人员,我们经常需要在Linux服务器上搭建各种中间件环境来支撑我们的应用程序。这些中间件包括MySQL、Redis、JDK、Nacos、Jenkins和Nginx等。本文将介绍如何从零...

JAVA编程基础:Servlet及其依赖环境

摘要:作为JAVA编程基础,servlet入门知识比不可少,本文说明什么是servlet和过滤器,以及相关规范和环境,供学习或者工作中参考。准备:了解应用服务器,掌握java语法基础正文:(1)Ser...

Java开发关键步骤:Windows与macOS系统环境变量详细配置指南

大家好,我是袁庭新。在计算机操作系统中可以定义一系列变量, 这些变量可供操作系统上所有应用程序使用,称为系统环境变量。在学习Java的过程中,需要配置path和classpath两个系统环境变量。1....