从Java 11 LTS升级至Java 17 LTS
这是什么?
为了决定是否迁移到将于2021年9月发布的Java17 LTS版本,我们将汇总各种功能,并准备一些公司内部讨论的素材。目前我们在公司内部都使用Java11 LTS作为共同的编程语言。
這是為誰準備的?
这可能对正在考虑相似事项的各位有所帮助。我们将在以后的评论中附上我们公司的结论。
Java 11到17版本。
因为从12到16的内容@nowokay先生已经总结好了,所以我会参考他的总结。
特性/Java 12
特点/Java13
Java14的特性
特性/Java15
特性/Java 16
特性/Java17
-
- JEP 415: 上下文特定的反序列化过滤器
JEP 414: 向量API(第二次孵化器)
尽管向量计算的API将被引入,但我们可能不会经常使用。
JEP 412: 外部函数和内存API(孵化器)
与内部控制相关的内容。
JEP 411: 废弃安全管理器以便移除
即将消失。
JEP 410: 移除实验性的AOT和JIT编译器
即将消失。
JEP 409: 封装类
这是关于语法和类、接口控制的重要变化。
JEP 407: 移除RMI激活
即将消失。
JEP 406: switch中的模式匹配(预览)
类型分支匹配的功能将可用。
static String formatterPatternSwitch(Object o) {
return switch (o) {
case Integer i -> String.format("int %d", i);
case Long l -> String.format("long %d", l);
case Double d -> String.format("double %f", d);
case String s -> String.format("String %s", s);
default -> o.toString();
};
}
-
- JEP 403: 强力封装JDK内部
安全相关
JEP 398: 废弃Applet API以进行移除
哦…这还存在吗…
JEP 391: macOS/AArch64移植
原生支持M1 Mac!
JEP 382: 新的macOS渲染流程
不太相关
JEP 356: 增强的伪随机数生成器
与随机数生成有关。也许不再需要担心熵的耗尽?
JEP 306: 恢复严格的浮点数语义
与浮点数有关的改变,如果正常使用的话不需要太在意。
Java的缺点
-
- 内存占用过高,就像某正规航空母舰那样
-
- 很容易变成fat jar,构建时间变长
- 对于jar和jdk的瘦身需花费大量时间并需要定制知识。
其他框架 (qí tā jià)
-
- Python (Chinese paraphrase):
有很多不同的选择,但我不太明白。
Go (Chinese paraphrase):
听说它简单又快速,对于我作为初学者的C语言来说似乎更容易上手。
Node (Chinese paraphrase):
因为写起来容易变得复杂,所以在大规模开发中不想使用它。