Valhalla LW2的进展–内联类型

过去几周(2019年6月/ 2019年7月), 瓦尔哈拉计划的LW2阶段/原型最初于2018年10月提出,在面向公众的方面取得了重大进展。 在这篇文章中,我简要总结了最近发布的一些消息,文档和Valhalla Early Access Build。 LW2在Valhalla Wiki页面上描述为早期原型,“将内联类型[移动]到现有类型系统中。”

LW2(JVM)规范草案

丹·史密斯(Dan Smith)在标题为“ LW2规范草案 ”的消息中,在valhalla-spec-experts邮件列表上宣布“对值/内联类的预览功能质量规范的首次查看”。 该消息寻求对初始规范的反馈,并已基于该反馈进行了更新 。 这是一个进行中的工作,但是URL http://cr.openjdk.java.net/~dlsmith/inline-classes当前已设置为重定向到规范草案的当前版本。

与Valhalla相关的所有事情都还在进行中,并且可能会有所变化,但是有趣的是,在本规范草案中阅读了从JVM规范的角度来看Valhalla当前的发展方向。 以下是文档中一些更有趣的要点的示例( 可能会发生变化 ):

  • “本文档描述了对Java虚拟机规范的更改,该更改由JVM类型的改进处理进行了修改,以支持内联类 。”
  • reference类型有五种:标识类类型,内联类类型,数组类型,接口类型和对象类型。 它们的值是对对象的引用。”
  • “大多数引用类型都是可为空的,这意味着特殊的空引用(表示没有对象)是该类型的值。 一些引用类型是无空值的,这意味着null不是该类型的值。”
  • 标识类类型为在类文件中定义的非内联,非接口类命名(不包括特殊类Object)。 身份类类型可以为空。”
  • 内联类类型为在class文件中定义的内联类命名。 对于每个内联类,都有一个可为空和无空的内联类类型。 这些类型共享相同的一组值,但null除外。”
  • 数组类型由具有单个维度的组件类型组成(其长度未由类型指定)。 数组类型的组件类型可以是boolean ,任何数字类型或任何引用类型。 数组类型可以为空。”
  • 接口类型为在class文件中定义的接口命名。 接口类型可以为空。”
  • Object类型Object类命名。 Object类型可以为空。 … Object类的实例具有标识,但没有字段,其行为类似于标识类实例。”
  • “可为空的引用类型的默认值为null。 无空内联类类型的默认值是对类实例的引用,该类实例的字段均具有其类型的默认值。”

OpenJDK Valhalla Wiki:L世界

OpenJDK Valhalla Wiki页面“ L-World ”询问并回答“ 什么是内联类型? ”和“ 什么是L-World项目? ”在回答这些问题时,该页面当前将内联类型描述为“小型,不可变,无身份的类型”,这些类型“ 以前称为 “值类型”, 现在称为 “内联类型”。 当前页面将“ L-World项目”描述为“将内联类型引入语言和JDK的一系列早期原型 ”,其“基于先前的最小值类型原型(MVT)的工作”。

OpenJDK Valhalla Wiki:LW2

OpenJDK Valhalla Wiki页面“ LW2 ”将LW2原型描述为“先前原型的迭代,为“内联类型”(以前称为“值类型”)添加了进一步的语言支持和JDK API支持。” 该页面指示LW2原型基于JDK 14 分支,并且该页面包含“内联类型”的几个当前特征,我在此处列出其中一些:

  • “内联类型不能声明显式超类(对象除外)。”
  • “内联类的所有实例字段都是隐式最终的。”
  • “通过'?'对内联类型的'间接'投影 操作员。”
  • “ javac自动生成仅根据实例的状态而不是根据其身份计算的hashCodeequalslongHashCodetoString
  • “ javac允许使用==!=比较内联类型”
  • “不能将内联类型分配为null,不能将null强制转换为内联类型或与内联类型进行比较,但使用'?'的'间接'引用除外。 操作员。”
  • 可能要添加到java.lang.Class的新方法: isInlineClass()asPrimaryType()asIndirectType() / isIndirectType()asNullableType() / isNullableType()
  • 内联类型不能同步 ,不能序列化 ,不能将自己引用为直接字段,也不能分配为null

Valhalla抢先体验版

在撰写本文时,“ Valhalla 抢先体验版 ” 页面 (现已更名为“ Project Valhalla'L-World Inline Types'Early -Access Builds”)功能为“ Build jdk-14-valhalla + 1-8(2019/7/4) 。 ” 该页面以以下段落打开:“这是Valhalla项目的早期访问版本,旨在测试L-World内联类型的原型实现。” 该页面还提到:“此构建基于JDK 14的不完整版本。” 与早期访问版本一样,使用早期访问版本存在一些限制和免责声明。 听起来好像有计划“通过错误修复和性能更新”定期更新这些版本。

OpenJDK Valhalla Wiki:LW2命令行选项 / p>

对于希望测试LW2原型的开发人员, OpenJDK Valhalla Wiki页面“ LW2命令行选项 ”中列出了命令行选项 。 如页面本身所述,“它描述了实验性Java编译器,Java启动器和HotSpot JVM的命令行,以支持Valhalla项目中的L-World LW2内联类型。”

2019年6月19日Valhalla专家组会议的会议纪要

Karen Kinnear提供了2019年6月19日Valhalla专家组会议的会议记录 ,该会议记录提供了有关专家组思想的设计主题的见解(“可空的”,“可展平的”,“不可感染性”,“专用仿制药”)。 这些注释表明LW2规范草案的讨论并非旨在最终确定所有设计决策。

结论

将“内联类型”(以前称为“值类型”)完全引入Java仍需要大量工作。 但是,当前对“内联类型”的关注以及与此概念相关的工件和构建物证明了在具体方向上正在取得进展。

翻译自: https://www.javacodegeeks.com/2019/07/valhalla-lw2-progress-inline-types.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql密码高级_mysql高级操作

连接数据库# mysql -uroot -p -h10.18.44.209 -p3306授权GRANT ALL PRIVILEGES ON *.* TO root% WITH GRANT OPTION;FLUSH PRIVILEGES;修改数据库密码# vim /etc/my.cnf 追加validate_passwordoff# systemctl restart mysqld方法一:mysql > SET PASSWORD FOR use…

javafx 和swing_Swing和JavaFX:使用JFXPanel

javafx 和swing我很快将不得不在基于Swing的胖客户端中处理JavaFX –哦,对不起,我的意思是“多层富客户端”! 因此,这使我来看看JFXPanel 。 JFXPanel是一个javax.swing.JComponent,用于将JavaFX内容嵌入到Swing-UI中…

C语言十大经典例题:附答案

1、/*输出9*9口诀。共9行9列&#xff0c;i控制行&#xff0c;j控制列。*/#include <stdio.h>int main(){ int i,j,result;for (i1;i<10;i){ for(j1;j<10;j){resulti*j;printf("%d*%d%-3d",i,j,result);/*-3d表示左对齐&#xff0c;占3位*/}printf(&qu…

java正则表达式判断_Java正则表达式判断

/* 判断是否为数字 */ public static boolean isNumeric(String str) { if(str null || str.isEmpty()){ return false; } Pattern pattern Pattern.compile("[0-9]*"); Matcher isNum pattern.matcher(str); if…

C语言项目:图形马赛克处理技术

每个人都有讨厌的人&#xff0c;例如我就比较讨厌三个姓马的人&#xff0c;马云、马化腾和马赛克。马云骗女人的钱&#xff0c;马化腾骗孩子的钱&#xff0c;马赛克阻挡了人们的分享和交流 。那么大家是不是知道我们今天要分享的项目是什么啦&#xff1f;马赛克处理技术莫非就是…

在生产中配置和使用AWS EKS

到现在&#xff0c;我们已经完成了向Amazon EKS &#xff08; 工作地点&#xff09;的迁移&#xff0c;并且集群已经投入生产。 过去&#xff0c;我已经写了一些要点的简短摘要&#xff0c;您可以在这里找到。 当系统正在为实际流量提供服务时&#xff0c;我有了一些额外的信心…

java 监听 变量_[Java学习小记]使用PropertyChangeSupport来监听变量的变化

今天要处理的问题是&#xff1a;监听一个变量&#xff0c;当该变量的值出现变化时能够获知&#xff0c;并进行相应处理。使用java.bean.PropertyChangeSupport类。看如下的构造方法&#xff0c;其实就是将你要控制的对象绑定到该工具中。PropertyChangeSupport changes new Pr…

处理异常功能样式

Java从一开始就支持检查异常。 在Java 8中&#xff0c;语言元素lambda和支持流操作的RT库修改将功能编程风格引入了该语言。 函数样式和异常并不是真正的好朋友。 在本文中&#xff0c;我将描述一个简单的库&#xff0c;该库在某种程度上类似于使用Optional处理null方式处理异常…

C语言项目:灰度处理技术

Hello&#xff0c;今天给大家带来的是一个比较简单的图形处理技术-灰度处理技术。那么到底什么是灰度处理技术呢&#xff1f;简单来说&#xff0c;所谓的灰度处理技术就是把一张彩色的图片变成一张灰色的图片。如下图所示&#xff0c;左边是原图&#xff0c;右边则是已经被处理…

java 设置文本颜色_在Java中更改文本的颜色

添加到我的评论&#xff1a;1)您不应该通过调用paintComponent(..)方法的super.XXX实现来尊重paint链,它应该是覆盖方法中的第一个调用,否则可能发生异常&#xff1a;Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);Font font new Font("S…

C语言项目:推箱子大战

还记得大家小时候玩过的游戏吗&#xff1f;曾经的坦克大战、推箱子、贪吃蛇都是我们以前玩过的小游戏&#xff0c;然而现在随着大型单机、网络游戏的光芒照耀下&#xff0c;那些曾经的小游戏都渐渐消失了&#xff0c;也或许是我们都已经长大了吧。那么今天&#xff0c;我给大家…

在Spring@Component vs @Repository vs @Service

介绍&#xff1a; 借助Spring的自动扫描功能&#xff0c;它可以自动检测我们的应用程序中定义的各种bean。 我们通常使用可用的Spring注释之一来注释我们的bean- Component&#xff0c; Repository&#xff0c; Service&#xff0c; Controller 。 在检测到bean时&#xff0c;…

java项目加减乘除验证码_课堂Java小程序(加减乘除与验证码)

一、编写一个程序&#xff0c;用户输入两个数&#xff0c;求出其加减乘除&#xff0c;并用消息框显示计算结果。1.设计思想&#xff1a;从键盘输入两个数字和运算符&#xff0c;然后计算。将输入的数字及运算符由字符型转换为整型&#xff0c;再用if判断输入的运算符&#xff0…

C语言绘图:可爱叮当猫

大家对于叮当猫可以说是很熟悉了吧&#xff0c;他还有另外一个名字&#xff0c;也就是哆啦a梦。即便你没有看过他的电影动画&#xff0c;也总会听说过的。叮当猫神奇的口袋总是能够掏出我们幻想功能的任何道具&#xff0c;任意门能够带我们去到任何地方&#xff0c;以及插在头上…

jgit git pull_使用JGit API探索Git内部

jgit git pull您是否想过提交及​​其内容如何存储在Git中&#xff1f; 好吧&#xff0c;我有&#xff0c;在上一个下雨的周末我有一些空闲时间&#xff0c;所以我做了一些研究。 因为我对Java的感觉比对Bash的感觉要多&#xff0c;所以我使用JGit和一些学习测试来探究提交的G…

MFC实现Windows锁屏

编辑Windows锁屏锁屏软件相信大家都见过&#xff0c;以前我去网吧上网的时候也用过这个功能&#xff0c;当你有事情需要立即离开&#xff0c;而又不想让别人碰你的电脑&#xff0c;就需要用扫锁屏软件啦&#xff0c;锁住屏幕之后等回来的时候再输入密码解锁。同样的&#xff0c…

pdf 截图 java_java实现pdf文件截图的方法【附PDFRenderer.jar下载】

本文实例讲述了java实现pdf文件截图的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;最近做的一个网站中&#xff0c;有个需求是上传pdf文件&#xff0c;显示pdf的封页&#xff0c;点击封页之后进行在线阅读&#xff0c;这里使用的是PDFRender对pdf进行截图。pub…

检查Java测试中发生了什么

有人想到了在Java单元测试中使用try和catch块的想法&#xff1a; Test public void test() { try { callSomeCode(); } catch (Exception e) { assertEquals( "foo" , e.getMessage()); } } 上面的内容很诱人&#xff0c;但不起作用 。 如果被测代码没有抛出&…

学习红客技术必备

互联网时代已悄悄来临&#xff0c;作为新时代的人们&#xff0c;我们日常生活、工作、学习方面都需要借助互联网来完成&#xff0c;这样&#xff0c;又产生一种新的问题&#xff0c;那就是网络安全的问题&#xff0c;有时我们拼命加班好不容易完成的东西&#xff0c;在一夜之间…

md5withrsa java_浏览器运行java插件报错:Algorithm constraints check failed: MD5withRSA

今天使用kvm管理机房机器的时候发现一只连不上&#xff0c;报以下错误&#xff1a;sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Algorithm constraints check failed: MD5withRSA我确认我已经把…