尘埃落定,JDK 11 确定将引入 Shebang #! 符号

2018年06月04日

按计划,JDK 11 将于 9 月发布。随着时间的临近,越来越多的 JEP 正被不断被添加至 JDK 11 的开发列表中。

2017 年 12 月 1 日,来自 Oracle 的开发者 Jonathan Gibbons 创建了 JEP 330 草案,名为 “Launch Single-File Source-Code Programs”,主要是改进 Java Launcher 以支持一个命令执行单个 Java 源代码文件。换句话说,在条件满足的情况下,可以简单地直接编译并运行单文件程序,而不再需要调用 javac ,也不需要打包 jar 文件。

比如说,可直接运行:

java HelloWorld.java

而不再需要:

javac -d <memory> HelloWorld.java
java -cp <memory> hello.World

此外,JEP 330 还引入了通常在 Unix 系统脚本中使用的 Shebang 和相关技术,将支持使用该机制来执行 Java 程序,例如:

#!/path/to/java --source version

在描述中,Jonathan Gibbons 表示该 JEP 的目标不是为了改变 Java 语言规范(JLS)或 javac 来接纳 shebang,也不是为了将 Java 语言演变为通用脚本语言。而是为了更纯粹的编译小型程序,降低开销。

2018 年 5 月 17 日-24 日,JEP 330 草案在邮件列表中发起评审,由于观点存在分歧,讨论较为激烈,导致延长一周的评审时间一直到 5 月 31 日。6 月 1 日,Java 首席架构师 Mark Reinhold 表示虽然不是每个提交者都对这个 JEP 完全满意,但大家基本已达成共识,JEP 330 将被正式添加至 JDK 11 中。

At this point not every Committer is completely happy with this JEP, but it appears to me that Jon has satisfactorily addressed the issues raised thus far and updated the JEP accordingly.  I’ve therefore targeted this JEP to JDK 11.

- Mark

展开阅读全文
6 收藏
分享
加载中
精彩评论
_-
从此就会出现一种跨平台的病毒
从此就可以注入java文件

N久以后,Oracle宣布,java可以直接运行java源文件是一个错误,并且会在未来的版本中移除.
2018-06-04 08:35
21
举报
Java-Script 😆
2018-06-04 10:28
4
举报
有了 Rust,C++ 和 Java 都没什么存在的必要了。
2018-06-04 10:15
2
举报

引用来自“开源中国首席睡觉专家”的评论

JDK 11???JDK不是要收费了吗?

引用来自“韦小仇”的评论

JDK从来不收费,以后也不会收费。oracle收取的只是“旧版本的维护费”,也就是说:只要你一直使用最新版本的JDK,就可以一直免费,而且oracle会给你提供免费补丁;如果你偏要用旧版本的JDK,也免费,但oracle不再提供旧版本的补丁;如果你一定要用旧版本JDK,还希望oracle提供补丁,那就要交维护费。这个政策其实是希望用户尽快迁移到新版本

引用来自“我会陪你从A到Z”的评论

jdk11收费了,手动打脸,自己去看公告😷

引用来自“韦小仇”的评论

手动打回你脸,我拜托你学好英语,自己去oracle官网看公告。不收费,只收旧版本商业维护费。可以选择升级最新版或者不接受商业服务。还”打脸“,你自己不脸红吗?不要道听途说,去官网看一下公告很难吗?
You may not: use the Programs for any data processing or any commercial, production, or internal business purposes other than developing, testing, prototyping, and demonstrating your Application;我懒得给你翻译
2018-11-22 15:49
1
举报

引用来自“开源中国首席睡觉专家”的评论

JDK 11???JDK不是要收费了吗?

引用来自“韦小仇”的评论

JDK从来不收费,以后也不会收费。oracle收取的只是“旧版本的维护费”,也就是说:只要你一直使用最新版本的JDK,就可以一直免费,而且oracle会给你提供免费补丁;如果你偏要用旧版本的JDK,也免费,但oracle不再提供旧版本的补丁;如果你一定要用旧版本JDK,还希望oracle提供补丁,那就要交维护费。这个政策其实是希望用户尽快迁移到新版本
jdk11收费了,手动打脸,自己去看公告😷
2018-10-22 17:55
1
举报
最新评论 (27)

引用来自“开源中国首席睡觉专家”的评论

JDK 11???JDK不是要收费了吗?

引用来自“韦小仇”的评论

JDK从来不收费,以后也不会收费。oracle收取的只是“旧版本的维护费”,也就是说:只要你一直使用最新版本的JDK,就可以一直免费,而且oracle会给你提供免费补丁;如果你偏要用旧版本的JDK,也免费,但oracle不再提供旧版本的补丁;如果你一定要用旧版本JDK,还希望oracle提供补丁,那就要交维护费。这个政策其实是希望用户尽快迁移到新版本

引用来自“我会陪你从A到Z”的评论

jdk11收费了,手动打脸,自己去看公告😷

引用来自“韦小仇”的评论

手动打回你脸,我拜托你学好英语,自己去oracle官网看公告。不收费,只收旧版本商业维护费。可以选择升级最新版或者不接受商业服务。还”打脸“,你自己不脸红吗?不要道听途说,去官网看一下公告很难吗?

引用来自“吃菜的鸟”的评论

打完了告诉我们,这玩意到底要不要收费。
You may not: use the Programs for any data processing or any commercial, production, or internal business purposes other than developing, testing, prototyping, and demonstrating your Application; 公告写的明明白白,收费
2018-12-25 09:44
0
回复
举报

引用来自“开源中国首席睡觉专家”的评论

JDK 11???JDK不是要收费了吗?

引用来自“韦小仇”的评论

JDK从来不收费,以后也不会收费。oracle收取的只是“旧版本的维护费”,也就是说:只要你一直使用最新版本的JDK,就可以一直免费,而且oracle会给你提供免费补丁;如果你偏要用旧版本的JDK,也免费,但oracle不再提供旧版本的补丁;如果你一定要用旧版本JDK,还希望oracle提供补丁,那就要交维护费。这个政策其实是希望用户尽快迁移到新版本

引用来自“我会陪你从A到Z”的评论

jdk11收费了,手动打脸,自己去看公告😷

引用来自“韦小仇”的评论

手动打回你脸,我拜托你学好英语,自己去oracle官网看公告。不收费,只收旧版本商业维护费。可以选择升级最新版或者不接受商业服务。还”打脸“,你自己不脸红吗?不要道听途说,去官网看一下公告很难吗?
打完了告诉我们,这玩意到底要不要收费。
2018-12-11 11:42
0
回复
举报

引用来自“开源中国首席睡觉专家”的评论

JDK 11???JDK不是要收费了吗?

引用来自“韦小仇”的评论

JDK从来不收费,以后也不会收费。oracle收取的只是“旧版本的维护费”,也就是说:只要你一直使用最新版本的JDK,就可以一直免费,而且oracle会给你提供免费补丁;如果你偏要用旧版本的JDK,也免费,但oracle不再提供旧版本的补丁;如果你一定要用旧版本JDK,还希望oracle提供补丁,那就要交维护费。这个政策其实是希望用户尽快迁移到新版本

引用来自“我会陪你从A到Z”的评论

jdk11收费了,手动打脸,自己去看公告😷

引用来自“韦小仇”的评论

手动打回你脸,我拜托你学好英语,自己去oracle官网看公告。不收费,只收旧版本商业维护费。可以选择升级最新版或者不接受商业服务。还”打脸“,你自己不脸红吗?不要道听途说,去官网看一下公告很难吗?
You may not: use the Programs for any data processing or any commercial, production, or internal business purposes other than developing, testing, prototyping, and demonstrating your Application;我懒得给你翻译
2018-11-22 15:49
1
回复
举报

引用来自“开源中国首席睡觉专家”的评论

JDK 11???JDK不是要收费了吗?

引用来自“韦小仇”的评论

JDK从来不收费,以后也不会收费。oracle收取的只是“旧版本的维护费”,也就是说:只要你一直使用最新版本的JDK,就可以一直免费,而且oracle会给你提供免费补丁;如果你偏要用旧版本的JDK,也免费,但oracle不再提供旧版本的补丁;如果你一定要用旧版本JDK,还希望oracle提供补丁,那就要交维护费。这个政策其实是希望用户尽快迁移到新版本

引用来自“我会陪你从A到Z”的评论

jdk11收费了,手动打脸,自己去看公告😷
手动打回你脸,我拜托你学好英语,自己去oracle官网看公告。不收费,只收旧版本商业维护费。可以选择升级最新版或者不接受商业服务。还”打脸“,你自己不脸红吗?不要道听途说,去官网看一下公告很难吗?
2018-10-23 10:23
0
回复
举报

引用来自“开源中国首席睡觉专家”的评论

JDK 11???JDK不是要收费了吗?

引用来自“韦小仇”的评论

JDK从来不收费,以后也不会收费。oracle收取的只是“旧版本的维护费”,也就是说:只要你一直使用最新版本的JDK,就可以一直免费,而且oracle会给你提供免费补丁;如果你偏要用旧版本的JDK,也免费,但oracle不再提供旧版本的补丁;如果你一定要用旧版本JDK,还希望oracle提供补丁,那就要交维护费。这个政策其实是希望用户尽快迁移到新版本
jdk11收费了,手动打脸,自己去看公告😷
2018-10-22 17:55
1
回复
举报
JDK 11???JDK不是要收费了吗?
2018-06-05 16:36
0
回复
举报

引用来自“hell0cat”的评论

其他语言一出生就携带的功能,java花了很多年,慢慢添加上来了
c表示你的言论纯属谬误
2018-06-05 08:12
1
回复
举报

引用来自“niniwei”的评论

这样有个好处就是java可以直接调用java代码本身,为人工智能编程作准备。不过会增加语言复杂度吧😃😃
需要用到这种特性还真不如用groovy,本来就是基于JVM的动态语言,原生就支持eval,还支持DSL
2018-06-05 08:11
0
回复
举报
加这些东西,变得太臃肿,还不如不加
2018-06-04 19:26
0
回复
举报
这样有个好处就是java可以直接调用java代码本身,为人工智能编程作准备。不过会增加语言复杂度吧😃😃
2018-06-04 16:02
0
回复
举报
更多评论
27 评论
6 收藏
分享
返回顶部
顶部