Java 15

  • Post author:
  • Post category:java


Java 15 是 Java 的一个版本,它于 2020 年 9 月发布。Java 15 包括了许多新特性、改进以及修复了一些 bug,同时还移除了一些废弃的功能。下面我们逐一来看。



一、新特性和改进:

  1. Sealed Classes (Preview):Sealed Classes 是一个新的类类型,用于限制一个类的子类的数量和每个子类的身份。它解决了继承机制中的一个问题: 当一个类有很多子类时,开发人员往往很难确定如何编写代码以确保类型安全和适当的行为。Sealed Classes 允许开发人员声明一组允许的子类,这些子类必须在主类中显式地声明。这些限制使代码更加健壮和易于维护。

下面是一个 Sealed Classes 的示例:

public sealed class Shape permits Circle, Rectangle {
   // ...
}

public final class Circle extends Shape {
   // ...
}

public final class Rectangle extends Shape {
   // ...
}
  1. Hidden Classes (Preview):Hidden Classes 是一种新的类类型,它允许开发人员创建不可见的类对象。这些对象仅由 JVM 内部使用,并且可以帮助开发人员隐藏内部实现细节和保护代码安全性。一个 Hidden Class 可以由一个类加载器创建,然后在 JVM 中使用它。这种机制可以用于实现动态代码生成、AOP 等一些高级特性。

下面是一个 Hidden Classes 的示例:

public class MyClass {
    private static byte[] classData = getClassData();

    public Object createObject() throws Exception {
        Class<?> hiddenClass = defineHiddenClass(classData);
        return hiddenClass.newInstance();
    }

    private Class<?> defineHiddenClass(byte[] bytes) {
        return defineClass(null, bytes, 0, bytes.length);
    }
}
  1. ZGC:ZGC 是一种全新的垃圾回收器,它采用了全新的设计思路和算法优化,使得 Java 应用程序能够更加高效和快速地运行。ZGC 采用了一种基于 Region 的内存管理机制,用于在多核 CPU 和大内存环境下提高垃圾回收的效率。

下面是 ZGC 的示例:

java -XX:+UnlockExperimentalVMOptions -XX:+UseZGC MyApp
  1. 移除 Nashorn JavaScript 引擎:Java 15 移除了 Nashorn JavaScript 引擎,该引擎在 JDK 8 中作为标准功能发布。建议开发人员从 Nashorn 迁移到其他 JavaScript 引擎,例如 GraalVM JavaScript 引擎。

  2. Record Class 导出为JSON:Record 类型现在支持导出到 JSON 字符串,这使得开发人员可以更方便地序列化和反序列化数据记录。现在可以使用

    Jsonb

    类库将 Record 类型对象直接序列化为 JSON。

下面是 Record Class 导出为 JSON 的示例:

public record Person(String name, int age) { }

Person person = new Person("John", 30);
Jsonb jsonb = JsonbBuilder.create();
String json = jsonb.toJson(person);



二、已知问题:

Java 15 仍然存在以下已知问题:

  1. 突发性和持续的 GC 导致性能下降:在某些情况下,使用 ZGC 可能会导致突发性和持续的 GC,从而导致应用程序性能下降。

  2. Sealed Classes 功能实验性:Sealed Classes 目前是实验性的,并且可能在将来的 Java 版本中发生改变。



三、修复的 bug:

Java 15 修复了许多 bug,包括但不限于以下几个方面:

  1. 修复了某些垃圾回收器可能导致的应用程序停顿或崩溃的问题;

  2. 修复了某些 JVM 参数设置不生效的问题;

  3. 修复了某些错误代码编译失败的问题;

  4. 修复了某些 JDK 工具无法使用的问题。



四、移除项和废弃项:

  1. 移除了 Nashorn JavaScript 引擎;

  2. 废弃了 RMI Activation。



五、其它事项:

  1. Java 15 仅支持 64 位操作系统;

  2. ZGC 是一种实验性的垃圾回收器,并需要 JDK 11 或更高版本的支持。

综上所述,Java 15 引入了许多新的特性和改进,包括 Sealed Classes、Hidden Classes、ZGC 垃圾回收器、Record Class 导出为 JSON 等。开发人员应该根据自己的需求和实际情况选择合适的 Java 版本,并及时更新到最新版本以获取更好的性能和安全性。



版权声明:本文为sinat_26065899原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。