您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    Java 12 发布了,决议Java未来的三大主要项目!
    时间:2019-04-08 21:24 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    Java 12 发布了,决议Java未来的三大主要项目!

    Java 12 发布了,没有惹起很大的讨论。关于 Java 这样一门成熟的言语来说,每一次更新似乎都无法满足庞大的 Java 开发群体与生态圈。再加上 Oracle 对 Java 耐人寻味的态度,Java 的未来会如何?

    Java 的变化速度从未如此之快——如今,该言语的新版本每六个月就会发布一次。

    而之所以可以完成如此严重的转变,自然离不开一系列专注于提高其功用与添加新功用的协作性项目的贡献。这些项目的目的可谓雄心勃勃。正如 JetBrains 开发者布道师 Trisha Gee 在 QCon 伦敦 2019 大会上所言,“Java 行将迎来很多超酷的东西。”

    而开展路途中的以下三大主要项目,将有助于确定 Java 的未来方向。

    一、Loom 项目

    尝试改良 Java 言语的并发处置方式,或许说是在对计算机在不同指令集执行之间切换才能的探求。

    甲骨文公司 Loom 项目技术担任人 Ron Pressler 在 QCon 伦敦 2019 大会上向希望编写软件以处置并发义务的 Java 开发者们提出了两种都不够完美的选项:要么编写无法经过扩展处置少量并发义务的“复杂同步阻塞代码”,要么编写可扩展但编写难度极高且调试进程复杂的异步代码。

    为了寻求处置这个成绩的办法,Loom 项目引入了一种将义务拆分为线程的新办法——所谓线程,即是指计算机在运转指令时的最小能够执行单元。在这方面,Loom 引入了被称为 fibers 的新型轻量级用户线程。

    他在大会上指出,“应用 fibers,假设我们确保其轻量化水平高于内核提供的线程,那么成绩就失掉了处置。大家将可以尽能够多地运用这些用户形式下的轻量级线程,且基本不会出现任何阻塞成绩。”

    应用这些新的 fibers,用户将可以扩展 Java 虚拟机(JVM)以支持定界延续(delimited continuations)机制,从而使得指令集的执行完成暂停以及恢复。对这些延续停止暂停与恢复的义务将由 Java 中的 ForkJoinPool 调度顺序以异步形式处置。

    根听阐明文档所言,fibers 将运用与 Java 现有 Thread 类十分相似的 API,这意味着 Java 开发人员的学习曲线应该不会太过峻峭。

    二、Amber 项目

    Amber 项目的目的,在于支持“更小、面向消费力的 Java 言语功用”的开发,从而加快将新功用添加至 Java 言语中的速度。

    这套方案十分适宜自 Java 9 以来,以更快速度继续发布的各 Java 新版本。

    目前,以下 JDK 增强提案(简称 JEP)正在停止当中,并附属于 Amber 项目之内。

    生字符串:

    https://openjdk.java.net/jeps/326 

    生字符串使得开发人员可以更轻松地对文本停止适当格式化,且无需引入由本义字符带来的复杂性。

    举例来说,开发人员不必运用

    本义字符来表示换行符,因此在以下字符串中:

    Hello 

    World 

    可以直接编写为:

    `Hello 

    World` 

    而非本来的:

    "Hello 

    World 

    该提案的阐明文档中提到,这一变更将使得各类文本客串的输入变得愈加复杂,包括文件途径以及 SQL 语句等等。

    如大家所见,生字符串应被包含在反引号之内。

    用于 JDK API 的 Java 编译器 Intrinsic

    https://openjdk.java.net/jeps/348 

    此项提案将允许开发人员对需求活期调用的重要代码段停止功用优化。

    详细来说,它允许开发人员将特定于 JDK 的办法指定为编译时外部化候选项,从而指示编译器对其功用停止优化。

    思索到在 Java 当中的重要意义,此提案的阐明文档将 String::format 与 Objects::hash 作为编译时外部化办法示例。这些办法可以运用 @IntrinsicCandidate 停止注释,以指示编译器将其视为编译时外部化候选项。如此一来,JDK 的 javac 编译器即可经过修正创立出外部化进程的处置机制。

    Pattern Matching

    https://openjdk.java.net/jeps/305 

    Pattern Matching 可以简化应用 Java 中 instanceof 运算符反省对象能否属于特定类的进程,然后提取该对象的组件以停止进一步处置。

    如此一来,以下操作语法:

    if (obj instanceof Integer) { 

    int intValue = ((Integer) obj).intValue(); 

    // use intValue 

    将可被简化为:

    if (x instanceof Integer i) { 

    // can use i here, of type Integer 

    Switch Expressions

    https://openjdk.java.net/jeps/325 

    Switch expressions 曾经在 Java 12 当中以预览版方式推出,允许开发人员应用更复杂的语法经过 switch 语句为输入内容指定不同的照应方式。

    举例来说,如今我们不再需求一直在以下语法当中运用 switch 语句:

    switch (port) { 

    case 20

    type = PortType.FTP; 

    break

    而可以采取以下更为繁复的表达方式:

    Switch (port) { 

    case 20 -> PortType.FTP; 

    三、Valhalla 项目

    Valhalla 项目专注于支持“初级”JVM 与言语功用的开发。

    目前 Valhalla 项目的候选提案还比较有限,详细包括:

    Value Types

    https://openjdk.java.net/jeps/169 

    此项提案旨在允许 JVM 处置一种新的类型,即 Value Types。

    (责任编辑:admin)