运行单个源文件_使用一个命令执行单个Java源文件

运行单个源文件

JDK增强提案 ( JEP ) 草案于2017年末创建,名为“ 启动单文件源代码程序 ”(其相关的JDK问题为JDK-8192920 )。 顾名思义,该JEP草案旨在“增强Java启动器以支持运行作为Java源代码的单个文件提供的程序。” 换句话说,正如JEP所描述的,如果有一个典型的自包含的HelloWorld.java源代码文件 ,则只需从命令行运行java HelloWorld.java ,而无需使用javac将HelloWorld.java编译为HelloWorld.class在使用Java启动器运行之前。

JEP所有者Jonathan Gibbons在将JEP引入compile -dev邮件列表时总结了这一点:

该JEP草案包含一项增强| java |的建议。 启动器以支持运行作为Java源代码的单个文件提供的程序。 该程序将被编译并运行,而无需显式调用javac或打包jar文件。

预期该功能的主要用例是运行非常简单的Java应用程序( JEP称其为“小型实用程序”)的人员以及希望学习基本Java功能的人们。 我在博客文章“ 通过简单测试学习Java ”和“在没有IDE的情况下编译和运行Java ”中描述了类似的用例。 JEP指出,在这些用例的背景下,“纯粹的仪式是在运行程序之前必须对其进行编译。 此外,单个源文件可能会编译为多个类文件,这给“运行该程序”的简单目标增加了打包开销。 希望能够使用Java启动器直接从源代码运行程序。”

与该JEP草案相关的JDK邮件列表上有两个有趣的讨论要点。 讨论的主题之一是在Java源代码文件的第一行上放置“ shebang ”的功能,该文件应按此JEP描述的方式运行(例如,在Groovy中使用,在Linux / Unix shell)。 在撰写本文时,JEP草案目前在“ Shebang”文件的标题下解决了该主题,并指出:

使用源文件模式调用Java启动程序的“ shebang”文件通常以以下内容开头:

#!/path/to/java --source
如果文件开头为,则允许在源文件模式下使用此类文件
#! 在编译文件的其余部分之前,将删除第一行直到(但不包括)第一行的内容。 …当文件以 #! ,则保留第一行末尾的换行符,以便任何错误消息中的行号保持不变。

与该JEP草案相关的第二个有趣的讨论点是问题,即它是否与JDK 9引入的jshell产生关系。 正如Brian Goetz在 compiler-dev邮件列表上的消息中所指出的那样 ,“很自然(并且很普遍)”期望使用jshell而不是增强的java启动器来运行这些类似于shell的单一源Java源文件。 。 Goetz 在该消息中解释了为什么这并不像最初看起来的那样好,因为jshell是为“良好的交互体验”而不是作为“批处理运行程序”而明确设计的。 JEP草案的当前版本在“ 替代方案”部分中对此进行了说明,其中指出:

我们可以将“一次性运行”任务委托给
jshell工具。 虽然这乍看起来似乎很明显,但这在设计中显然是非目标
jshell
jshell工具被设计为交互式外壳,许多设计决策都倾向于提供更好的交互式体验。 成为批处理运行者的额外限制会加重交互体验。

尽管目前这只是JEP的草案 ,但我很喜欢这个想法,并认为将其添加到JDK的未来版本中将是一个很好的次要功能。 此功能将使Java新手可以更轻松地测试基本Java示例,并且不会给Java新手带来不必要的额外步骤,而这是他或她不习惯与某些其他(通常是动态类型的)编程语言一起使用的步骤。 对于经验丰富的Java开发人员来说也很方便。 我仍然发现自己写了一些Java小片段来学习某些东西的工作原理(并向其他人演示它的工作原理),而该草案建议的JDK增强功能将使其变得更容易一些,尤其是当Java源文件编译成多个.class文件时。 这是我在Groovy开发中喜欢的功能之一,并且很高兴拥有用于简单Java开发的功能。

翻译自: https://www.javacodegeeks.com/2018/02/executing-single-java-source-files-one-command.html

运行单个源文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

夸克浏览器怎么安装脚本_iOS 第一浏览器发布安卓版,除了真香我还能说什么...

如果不算 Safari 的话,iOS 平台公认最好的浏览器是 Alook。无推送无新闻无广告、日常售价 12 元、工具类排行第三、7.8 万个评分足以证明其优秀。以至于很多双持或对 Alook 有所了解的用户都希望 Alook 能推出安卓端。现在安卓端真的来了。(安卓端免费)假如这个时候…

Windows 10 笔记本如何使用外接显示器

文章目录如何连接外接显示屏如何设置显示模式如何设置不同显示屏各自的分辨率如何设置主显示器通过显卡来设置显示器如何连接外接显示屏 VGA 线或者 HDMI 线连接好电脑和显示器,以 HDMI 线为例简单讲下吧。 显示器可能会有多个 HDMI 接口,假设你插入 H…

蓝牙信号强度检测app_基于蓝牙技术的智能插座方案

有这样一句话“科技时代,生活轻快”。随着社会现代化程度越来越高,科技的应用为人们的生活带来便捷,大大提高了工作效率。纵观市场上“智能家居”产品很多,功能各异,各有千秋,但是针对家电控制的智能插座还…

图片清晰度,分辨率,像素总结

像素 像素是一个个小方块,是构成位图的基本单位。将图片放大即可看出来,如图: 分辨率 显示分辨率是指像素的总数量,如上图的22001400,也就是宽有2200个像素,高有1400个像素。 图像分辨率是指每英寸所包含…

apache isis_使用Apache Isis快速进行SEMAT应用程序开发

apache isisTL; DR这是关于一个帖子会谈SEMAT宠物项目我创建使用Apache伊希斯和部署到OpenShift在线这里http://semat.ofbizian.com Apache Isis 作为主要在后端系统上工作的Java开发人员,我讨厌创建用户界面和处理Java脚本。 幸运的是,有一些Java项目&…

MacBook外接显示器及相关设置详解(分屏/多屏)

文章目录一、连接显示器和电脑二、打开显示器设置界面三、调整显示器图标位置四、设置主显示器五、移动 Dock六、镜像模式七、合盖模式八、扩展模式九、设置外接显示器竖屏显示十、外接显示器后,如何调出更多分辨率十一、关于程序坞显示的问题一、连接显示器和电脑 …

ibm liberty_使用Eclipse和Open Liberty的Java EE 8上的Java 9

ibm liberty几周前,我写了一篇文章,题目是哪个IDE和服务器支持Java EE 8和Java9 ,着眼于Java 9和Java EE 8之间的当前状态。您可以期望事情发展很快,现在我们有了一些alpha和支持Java 9和Java EE 8的开发版本。这些是– Payara 5…

inkscape生成g代码_三点二. 量子对抗生成网络 (Quantum GAN)

理论基础之前我们介绍了强化学习Leo:和Leo一起学量子计算:三点一. 微分线路和强化学习​zhuanlan.zhihu.com上面这篇博文告诉我们如何把量子线路类比为神经网络,并获取它的导数。在可微分线路的基础上,我们可以做一些更加酷的事情…

python用xpath爬取10页网站图片

#爬取网站图片 import requests from lxml import etree import osi0 #计数 #请求头 headers{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"} for x in range(…

MacBook外接显示器的显示模式介绍及设置说明(分屏/多屏)

文章目录一、显示模式的介绍(一)扩展模式(程序员开发模式)(二)合盖模式(三)镜像模式(四)混合模式二、显示模式的设置(一)扩展模式设置…

aws fargate_借助Fargate和EKS,AWS甚至可以实现Cloud-ier和Kuberneties-ier

aws fargate在本周的re:Invent大会上,AWS宣布了很多很棒的事情。 您应该检查一下他们的页面 ,以了解他们正在做的所有新工作的概况–内容很多,而且很多看起来立即有用。 如果您想了解更多信息,我的同事凯利安德鲁斯&am…

关键词分词工具_快图制作工具 | 如何制作词云图?

点击蓝字关注我们如何制作词云图?首先,我们需要对“词云”有个简单的概念。“词云”这个概念最先由美国西北大学新闻学副教授、新媒体专业主任里奇戈登(Rich Gordon)提出。“词云”(别名:文字云,外文名:wordle)即由词汇…

机器学习西瓜书各章详细目录定位

第一章 绪论 1.1 引言(P1) 1.2 基本术语(P2) 1.3 假设空间(P4) 1.4 归纳偏好(P6) 1.5 发展历程(P10) 1.6 应用现状(P13) 1.7 阅读材料(P16) 第二章 模型评估与选择 2.1 经验误差与过拟合(P23) 2.2 评估方法(P24) 2.2.1 留出法 2.2.2 交叉验证法 2.2.3 自助法 2.3 性能…

表达式中常用到的运算符

文章目录分组一元运算符算数运算符逻辑移位按位“与”按位“或”按位“异”赋值表达式分隔符分组 () 一元运算符 ! ~ - 算数运算符 * / % - 逻辑移位 << >> 按位“与” & 按位“或” | 按位“异” ^ 赋值 * / % - & ^ | << >>…

openhub_OpenHub框架–下一个有趣的功能

openhub这是有关OpenHub框架系列的第三篇文章-第一篇介绍OpenHub框架 &#xff0c;第二篇介绍异步消息传递模型 。 该系列的最后一篇文章将更详细地介绍其他一些有趣的功能&#xff0c;并说明为什么OpenHub可以成为您的集成项目的理想选择的原因。 节流 节流是一种功能&#…

Numpy常用基础

生成Numpy的一维数组 xnp.array([1.0,2.0,3.0]) #生成数组 print(x) xnp.array([1.1,2.2,3.3]) print(y.round(1)) #矩阵的结果保留一位小数#结果 [1. 2. 3.] #生成的数组默认省略小数点后面的0 [1.1 2.2 3.3]Numpy数组的算术运算 xnp.array([1,2,3]) ynp.array([4,5,6]) …

售票系统的组件图和部署图_识读配电箱系统图

配电箱确实有很多字母&#xff0c;要熟悉这些字母的基本含义&#xff0c;才能更准确地知道配电箱系统图的意思。网上查了一些资料&#xff0c;发现配电箱中的字母实在是太多了&#xff0c;先简单说几个需要基本认识的字母&#xff1a;GCK、GCS、MNS是低压抽出式开关柜&#xff…

Linux命令之 -- export 设置/显示系统环境变量

文章目录一、命令介绍二、export 的原理&#xff08;一&#xff09;什么是进程&#xff08;二&#xff09;父子进程关系&#xff08;三&#xff09;子 shell 如何访问父 shell 的变量&#xff08;export 实现原理&#xff09;&#xff08;四&#xff09;父 shell 如何访问子 sh…

packt_Packt和Java Code Geeks提供的$ 5 Java编程书籍!

packt你好&#xff0c;极客&#xff01; 今天&#xff0c;我们为您带来一些激动人心的消息&#xff01; Java Code Geeks和Packt联手为您提供广泛的书籍库每周折扣。 对于开发人员来说&#xff0c;Java仍然是最强大的选择之一&#xff0c;它是定义企业和移动设备的语言。 本…

Matplotlib常用库方法

模块pyplot常用方法 import matplotlib.pyplot as plt #pyplot模块包含很多用于生成图表的函数plt.plot(x,y,format_string) #x,y分别为x轴y轴的坐标值&#xff0c;第三个参数是风格&#xff0c;具体去查&#xff0c;这方法的参数很麻烦 plt.xlabel(x,fontsize14) #显示x轴的…