网站建设模板免费下载,wordpress 按标题搜索,ps软件下载电脑版多少钱,广州比较大的外贸公司shebang尽管添加对Unix风格的shebang #xff08; #! #xff09;的支持从来不是 JEP 330 [“启动单文件源代码程序”]的主要目标#xff0c;但围绕JEP 330“单个文件源程序”的潜在功能存在一些问题。为了支持Unix风格的shebang #xff0c;在OpenJDK jdk-dev邮件列表上引… shebang 尽管添加对Unix风格的shebang #! 的支持从来不是 JEP 330 [“启动单文件源代码程序”]的主要目标但围绕JEP 330“单个文件源程序”的潜在功能存在一些问题。为了支持Unix风格的shebang 在OpenJDK jdk-dev邮件列表上引起了广泛的讨论。 这场“激烈的讨论”导致Mark Reinhold在JEP 330 的审查期 现在是5月31日结束上增加了一周时间 以便就JDK 330的目标JEP 330进行进一步的讨论。 尽管对于是否应该添加shebang支持仍然存在一些分歧 但似乎共识已转移到一个提案以明确区分常规的独立于平台的Java源代码文件以扩展名.java结尾和新的。 JEP 330“可执行”的平台特定的“单文件源代码程序”。 明显的区别是值得注意的因为它允许将Shebang表示在后者中JEP 330可执行平台特定的单文件源代码程序而不能在前者中使用我们所使用的传统Java平台无关的源代码。都习惯了。 在此讨论中 乔纳森·吉尔斯 Jonathan Giles的一条消息指出“不想更改JLS或javac的各种原因”并指出“ shebang脚本是在某些但不是全部平台上定义的可执行格式”指出“创建一个shebang脚本通常不只是在文件中添加第一行。”还阐明了在传统Java源代码和JEP 330可执行Java脚本之间进行显式区分的概念 虽然将文件重命名为命令友好名称是可选的但也希望将其重命名。 例如名为“ HelloWorld.java”的源文件可能被安装为“ helloworld”。 而且尽管JEP描述了使用java HelloWorld.java执行小型单文件程序或仅使用helloworld作为特定于平台的shebang脚本执行的用例但似乎并没有常见的用例执行HelloWorld.java。 因此如果通常将shebang脚本重命名为命令友好名称则将无法使用“ javac helloworld”直接对其进行编译因为这对于Javac而言不是有效的命令行。 这降低了使javac忽略shebang行的任何潜在便利。 由于Java源文件与特定于平台的可执行脚本是不同的工件因此有区别地对待它们是有道理的并且由于我们不想更改Java语言以支持shebang行因此建议修改JEP和实现以便shebang绝不会从Java源文件即以.java结尾的文件中删除行。 这就避免了处理Java源文件的工具生态系统必须处理诸如shebang行之类的任意工件的问题。 所做的更改仍将允许直接执行Java源文件如java HelloWorld.java和执行shebang脚本如helloworld。 下表总结了与每种“ Java”文件样式相关的特征和优点。 项目 传统Java源文件 JEP 330可执行单文件源代码程序 内容描述 /名称 “ Java源文件以.java扩展名结尾 ” “ 可执行脚本不使用[ .java ]扩展名。 “ “ Java源文件 ” “ shebang脚本 “ “ Java源文件 ” “ 包含Java代码的脚本 ”或“ 特定于平台的可执行脚本 ” “ Java源文件由以.java结尾的文件名标识 ” 舍邦 不支持 支持的 平台 独立 依附 显式编译 是 没有 乔纳森·吉本斯Jonathan Gibbons总结了JEP 330的意图 “这里的总主题不是将Java演变为脚本语言而是使诸如Java启动器之类的工具更友好以便支持在可执行文本文件中使用Java源代码。以减少运行简单程序的仪式。” 讨论还涵盖了其他方法例如binfmt_misc 另请参见此处 Unix风格的“ here文档 ” 此处定义文档 “ 在Java启动器中支持-STDIN源 ”以及将Linux更改为支持“ la”。 -la-bang //! 。 讨论中另一个有趣的旁注是Brian Goetz 对JEP 330如何达到其当前状态的“追溯” 。 他谈到了导致人们意识到的“无数小时的倾听人们对Java的关注”“人们表达关注的一个普遍主题是激活能量 用Java做简单的事情需要太多的固定工作。” Goetz指出JShell和JEP 330是解决此问题的许多可能方法中的两种并且这两种方法是在考虑“成本在多个维度上”后做出“关于哪种方法影响最大的主观选择”之后从众多方法中选择的。做出这些选择时的收益和利益或我们对收益的主观估计。” 因此“常规Java”源代码文件将不会得到shebang的支持但这并不是什么大问题因为它们确实不需要它们。 但是用Java编写的基于JEP 330的基于平台的可执行单文件脚本似乎将在第一行中支持可选的shebang。 我们可能会在本周四之前知道JEP 330是否将针对JDK 11。 翻译自: https://www.javacodegeeks.com/2018/05/shebang-coming-java.htmlshebang