从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

    1. 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();
    };
}
    1. JEP 403: 强力封装JDK内部

安全相关

JEP 398: 废弃Applet API以进行移除

哦…这还存在吗…

JEP 391: macOS/AArch64移植

原生支持M1 Mac!

JEP 382: 新的macOS渲染流程

不太相关

JEP 356: 增强的伪随机数生成器

与随机数生成有关。也许不再需要担心熵的耗尽?

JEP 306: 恢复严格的浮点数语义

与浮点数有关的改变,如果正常使用的话不需要太在意。

Java的缺点

    1. 内存占用过高,就像某正规航空母舰那样

 

    1. 很容易变成fat jar,构建时间变长

 

    对于jar和jdk的瘦身需花费大量时间并需要定制知识。

其他框架 (qí tā jià)

    1. Python (Chinese paraphrase):

有很多不同的选择,但我不太明白。

Go (Chinese paraphrase):

听说它简单又快速,对于我作为初学者的C语言来说似乎更容易上手。

Node (Chinese paraphrase):

因为写起来容易变得复杂,所以在大规模开发中不想使用它。

广告
将在 10 秒后关闭
bannerAds