极客视点
极客时间编辑部
极客时间编辑部
113241 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/03:45
登录|注册

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
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
6
沉浸
阅读
分享
手机端
快捷键
回顶部