Oracle架构师:在Java中引入连字符关键字
极客时间编辑部
讲述:丁婵大小:1.72M时长:03:45
Brian Goetz 是 Oracle 的 Java 语言架构师,他一直在追求 Java 语言的生产率和性能。 Alex Buckley 是 Oracle 的 Java 语言和 Java 虚拟机的规范主管。在 Java 语言的功能演进中,他们两个提出了一组带连字符的关键字。实现连字符关键字的目标是:
面向 Java 编程人员的新功能语法。
解决关键字变得非常稀缺的永恒问题。
给 Java 语言设计人员提供不同类型的关键字样式建议。
近几年来,有些技术已被用于发展 Java 语言的关键词演化,比如如下几类:
支配权 (eminent domain)—— 把标识符重新分类为关键字(比如 Java 1.4 中的 assert 和 Java 1.5 中的 enum);
重载 —— 把已有的关键字重新用于新功能;
变体 (distort) —— 使用现有关键字创建语法(如 @interface);
smoke and mirrors —— 在不同上下文中使用新关键字创建一个语法糖 。
在某种程度上,这些关键词技术都有一些问题。比如,添加 assert 作为关键字几乎破坏了所有测试框架,因为导致了关键字、标识符冲突。
所以,采用带连字符的关键字将弥补现有的关键词技术,并将使用现有的类或上下文关键字的组合。类关键字是一串字母,这些字母总是被标记为关键字,而不是标识符。上下文关键字是也一串字母,这些字母只有在特定上下文中才被标记为关键字,但是在其他上下文中被标记为标识符。
实现带连字符的关键字的挑战之一是词法分析器如何把 a-b 类的表达式解析成标识符、操作符、标识符这 3 个令牌或解析为带连字符的关键字。
今年早些时候的一场 OpenJDK 电子邮件讨论建议,为 JKD 13 (计划于 2019 年 9 月发布)引入 break-with 连字符关键字。但是,最终决定放弃 break-with 关键字,改用新的关键字 yield,并重新预览 switch 表达式。新的 switch 表达式结构的最终定稿为引入模式匹配概念扫清道路,而这个概念已经讨论了近两年时间,终于落地了。
对于带连字符的关键字的优缺点,Goetz 和 Buckley 表示,出于简单的缘故而不使用 Java 的新功能是没有问题的;新的关键词是 Java 语言发展过程中经常遇到的问题和学习成本。不再产生新的关键字也是一个方法,即完全停止 Java 语言的演进。尽管有些人认为这个主意不错,但是,因为缺乏可用关键词而这么做是愚蠢的。Java 还有很长的路要走,Java 开发人员对新的功能感到很兴奋,这些新功能使他们能够编写更富表现力和更可靠的代码。
Goetz 称,Java 语言中带连字符的关键字已经影响了整个社区。有些人很高兴看到,在如何最好地发展 Java 成为一种成熟语言方面,他们所付出的心血;其他人则抱怨道,与其研究细小的但没有多大实用意义的关键词问题,不如花时间去研究自己感兴趣的功能。
此外,Goetz 还表示,他们非常重视 Java 语言兼容性,同时,他们努力保持 Java 代码的可读性,并在两者之间进行平衡。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论