java新技术

ddatsh

dev #java

https://www.developers.pub/article/1194465

https://kaimingwan.com/2024/01/29/vvtzk3gai7530pmp/

https://kaimingwan.com/2023/01/31/bybtiusebwcawiyd/

https://www.cnblogs.com/javastack/p/14583578.html

https://www.javanorth.cn/2022/12/31/G1GC%E8%B0%83%E4%BC%98%E5%8F%82%E6%95%B0-2023-01-16%E5%B7%B2%E5%8F%91/

https://openjdk.org/projects/

Amber

字符串模板、简化 main 方法、 statements before this () and super ()

Records、Sealed Class、Pattern Matching、Raw String Literals

void main() {
    System.out.println("Hello, World!");
}
javac --enable-preview  --release 23 Hello.java
java --enable-preview   Hello
java --enable-preview   Hello.java

JEP-286/323

with 表达式和 primitive types in patterns

从Java 8开始,Java的发展很明显受到了函数式编程的影响

Babylon

Leyden

为了解决java启动慢的问题

java是解释+JIT一起工作的,leyden项目的目的就是替换老的这种方式,称之为static-image,相比传统AOT只是直接把代码编译成机器码,static-image除了把代码编译成机器码,还会把runtime信息一起编译成机器码,在运行时能够完整运行

Loom

旨在拓展jdk 1:1的线程模型,引入协程

以前jdk线程模型和操作系统线程1:1对应,适合CPU密集型任务,但对于需要大量线程的I/O密集型任务,过重的线程开销和频繁的上下文切换对性能开销都比较大

那种侵入很强,不仅要引入新的返回类型,future或者promise,而且还要引入两个额外的关键字async和await,特别麻烦

Panama

Upcall: 本地代码调Java

Downcall:Java调本地代码

Panama在downcall上的意义在于,可以省略JNI那样的wrapper,直接加载动态链接库以及根据symbol取函数地址。少一个wrapper可以少一次函数调用

Panama也给给内存结构做了标准化。JVM也可以算是支持 结构体、union、值类型 了

Valhalla

Java一切皆对象理念对于工程化很有帮助,但处理一系列类型不同的小对象时性能十分拉胯 Valhalla项目通过引入值对象来改善这一问题,提升java在游戏、图形领域竞争力

Lilliput

缩小 HotSpot JVM 中 Java object headers 的大小并减少 Java 内存占用

fast-locking scheme