加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Java 12 宣布了,抉择Java将来的三大首要项目!

发布时间:2019-04-09 03:33:32 所属栏目:建站 来源:Java高级架构狮
导读:Java 12 宣布了,没有引起很大的接头。对付 Java 这样一门成熟的说话来说,每一次更新好像都无法满意复杂的 Java 开拓群体与生态圈。再加上 Oracle 对 Java 耐人寻味的立场,Java 的将来会怎样? Java 的变革速率从未云云之快现在,该说话的新版本每六个月
副问题[/!--empirenews.page--]

 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 项目之内。

生字符串:

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

生字符串使得开拓职员可以或许更轻松地对文本举办恰当名目化,且无需引入由转义字符带来的伟大性。

举例来说,开拓职员不必行使

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

  1. Hello 
  2. World 

可以直接编写为:

  1. `Hello 
  2. World` 

而非本来的:

  1. "Hello 
  2. World 

该提案的声名文档中提到,这一改观将使得种种文本客串的输入变得越发简朴,包罗文件路径以及 SQL 语句等等。

如各人所见,生字符串应被包括在反引号之内。

用于 JDK API 的 Java 编译器 Intrinsic:

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

此项提案将应承开拓职员对必要按期挪用的重要代码段举办机能优化。

详细来说,它应承开拓职员将特定于 JDK 的要领指定为编译时内部化候选项,从而指示编译器对其机能举办优化。

思量到在 Java 傍边的重要意义,此提案的声名文档将 String::format 与 Objects::hash 作为编译时内部化要领示例。这些要领可以行使 @IntrinsicCandidate 举办注释,以指示编译器将其视为编译时内部化候选项。云云一来,JDK 的 javac 编译器即可通过修改建设出内部化历程的处理赏罚机制。

Pattern Matching:

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

Pattern Matching 可以或许简化操作 Java 中 instanceof 运算符搜查工具是否属于特定类的进程,尔后提取该工具的组件以举办进一步处理赏罚。

云云一来,以下操纵语法:

  1. if (obj instanceof Integer) { 
  2. int intValue = ((Integer) obj).intValue(); 
  3. // use intValue 

将可被简化为:

  1. if (x instanceof Integer i) { 
  2. // can use i here, of type Integer 

Switch Expressions:

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

Switch expressions 已经在 Java 12 傍边以预览版情势推出,应承开拓职员操作更简朴的语法通过 switch 语句为输入内容指定差异的相应方法。

举例来说,此刻我们不再必要始终在以下语法傍边行使 switch 语句:

  1. switch (port) { 
  2. case 20: 
  3. type = PortType.FTP; 
  4. break; 

而可以采纳以下更为简捷的表达方法:

  1. Switch (port) { 
  2. case 20 -> PortType.FTP; 

三、Valhalla 项目

Valhalla 项目专注于支持“高级”JVM 与说话成果的开拓。

今朝 Valhalla 项目标候选提案还较量有限,详细包罗:

Value Types:

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

此项提案旨在应承 JVM 处理赏罚一种新的范例,即 Value Types。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读