运⾏单个源⽂件_使⽤⼀个命令执⾏单个Java源⽂件
运⾏单个源⽂件
草案于2017年末创建,名为“ ”(其相关的JDK问题为 )。 顾名思义,该JEP草案旨在“增强Java启动器以⽀持运⾏作为Java源( ) 草案
代码的单个⽂件提供的程序。” 换句话说,正如JEP所描述的,如果有⼀个典型的 ,则只需从命令⾏运⾏java HelloWorld.java ,⽽使⽤
将HelloWorld.java编译为HelloWorld.class在使⽤运⾏之前。
JEP所有者在 时总结了这⼀点:java源代码加密
该JEP草案包含⼀项增强| java |的建议。启动器以⽀持运⾏作为Java源代码的单个⽂件提供的程序。该程序将被编译并运⾏,⽽⽆需显式调⽤javac或打包jar⽂件。
预期该功能的主要⽤例是运⾏⾮常简单的Java应⽤程序( 称其为“⼩型实⽤程序”)的⼈员以及希望学习基本Java功能的⼈们。 我在博客⽂章“ ”和“在 ”中描述了类似的⽤例。 指出,在这些⽤例的背景下,“纯粹的仪式是在运⾏程序之前必须对其进⾏编译。 此外,单个源⽂件可能会编译为多个类⽂件,这给“运⾏该程序”的简单⽬标增加了打包开销。 希望能够使⽤Java启动器直接从源代码运⾏程序。”
与该JEP草案相关的上有两个有趣的讨论要点。 是在Java源代码⽂件的第⼀⾏上放置“ ”的功能,该⽂件应按此JEP描述的⽅式运⾏(例如,在使⽤,在Linux / Unix shell)。 在撰写本⽂时,JEP草案⽬前在“ Shebang”⽂件的
“ Shebang”⽂件的标题下解决了该主题,并指出:使⽤源⽂件模式调⽤Java启动程序的“ shebang”⽂件通常以以下内容开头:
#!/path/to/java --source
如果⽂件开头为,则允许在源⽂件模式下使⽤此类⽂件
#! 在编译⽂件的其余部分之前,将删除第⼀⾏直到(但不包括)第⼀⾏的内容。 …当⽂件以 #! ,则保留第⼀⾏末尾的换⾏符,以便任何错误消息中的⾏号保持不变。
与该JEP草案相关的第⼆个有趣的讨论点是问题,即它是否与引⼊的关系。 正如 上的 ,“很⾃然(并且很普遍)”期望使⽤jshell⽽不是增强的java启动器来运⾏这些类似于shell的单⼀源Java源⽂件。 。 Goetz 为什么这并不像最初看起来的那样好,因为jshell是为“良好的交互体验”⽽不是作为“批处理运⾏程序”⽽明确设计的。 JEP草案的当前版本在“ 替代⽅案”
替代⽅案”部分中对此进⾏了说明,其中指出:
我们可以将“⼀次性运⾏”任务委托给
jshell⼯具。虽然这乍看起来似乎很明显,但这在设计中显然是⾮⽬标
jshell 。的
jshell⼯具被设计为交互式外壳,许多设计决策都倾向于提供更好的交互式体验。成为批处理运⾏者的额外限制会加重交互体验。
草案 ,但我很喜欢这个想法,并认为将其添加到JDK的未来版本中将是⼀个很好的次要功能。 此功能将使Java新⼿尽管⽬前这只是JEP的草案
可以更轻松地测试基本Java⽰例,并且不会给Java新⼿带来不必要的额外步骤,⽽这是他或她不习惯与某些其他(通常是动态类型的)编程语⾔⼀起使⽤的步骤。 对于经验丰富的Java开发⼈员来说也很⽅便。 我仍然发现⾃⼰写了⼀些Java⼩⽚段来学习某些东西的⼯作原理(并向其他⼈演⽰它的⼯作原理),⽽该草案建议的JDK增强功能将使其变得更容易⼀些,尤其是当Java源⽂件编译成多个.class⽂件时。这是我在Groovy开发中喜欢的功能之⼀,并且很⾼兴拥有⽤于简单Java开发的功能。
运⾏单个源⽂件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论