网络安全检测|网络安全服务|网络安全扫描-香港墨客投资移动版

主页 > 业界资讯 > ddos防御

从 Java 11 迁移到 Java 17 值得吗?(2)

  Java 17也考虑了安全性,并朝着这个方向迈出了重要的一步。这个想法是限制类或接口的继承,同时保持其公开。结果,新的类类型,密封类,被添加到Java中。密封类的语法允许你指定可以使用其功能的后代。反过来,继承者还可以允许或拒绝继承,或者指定可以沿链继承的类。此功能使你可以更灵活地创建项目,并方便地调整代码的API。

  Java 17. 密封类:

  复制

  public sealed class SealedClass permits AnotherSealedClass, AnotherNonSealedClass, AnotherFinalClass {

  }

  Java 17. 非密封继承人:

  复制

  public non-sealed class AnotherNonSealedClass extends SealedClass {

  }

  Java17.最终继承人:

  复制

  public final class AnotherFinalClass extends SealedClass {

  }

  Java17.密封继承人:

  复制

  public sealed class AnotherSealedClass extends SealedClass permits AnotherNonSealedClassTwo {

  }

  Javai17.非密封继承人二级:

  复制

  public non-sealed class AnotherNonSealedClassTwo extends AnotherSealedClass {

  }

  6、NullPointerExceptions

  最后,Java 17 中一个非常有用的更新是改进的NullPointerException!最后,在堆栈跟踪日志中,你可以看到哪个特定字段导致了NullPointerException。仅此功能就应该鼓励你切换到Java 17。你不再需要长时间在代码中四处寻找发生异常的险恶地方;现在Java将为你完成所有工作。

  Java11.NPE:

  复制

  public static void main(String... args) {

  String s = null;

  System.out.println(s.toLowerCase());

  }

  复制

  Exception in thread "main" java.lang.NullPointerException

  at Main.main(Main.java:4)

  Java17.改进的NPE:

  复制

  public static void main(String... args){

  String s = null;

  System.out.println(s.toLowerCase());

  }

  复制

  Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.toLowerCase()" because "s" is null

  at edu.javamodules/edu.javaversions.eleventoseventeen.NpeExample.main(NpeExample.java:7)

  7、其他创新

  当然,这并不是Java17中所做的更改的全部列表,但是讨论的创新是最引人注目的。与往常一样,Java开发人员在改进JVM方面做得非常出色,使其更加高效。

  8、小结

  Java17中所做的所有改进都传达了一个信息:是时候切换到这个版本了。过渡承诺语法更简洁,性能得到提高。你的项目将获得安全性、灵活性和更好的错误消息。如果你已经迁移到Java11,那么迁移到Java17 会很顺利。Java的竞争优势在这里大放异彩,因为向后兼容性允许你切换到Java17而无需更改任何代码,并利用所有更新的功能。Java17是Java11以来又一个LTS(长期支持)版本,可确保你在较长时间内收到所有必要的安全更新。

(责任编辑:admin)