Java 11的许多显着特性之一是能够直接运行单个Java源代码文件而无需首先编译源代码。作为JShell的补充,此功能有助于学习Java和编写简单的实用程序应用程序和CLI。
(想自学习编程的小伙伴请搜索圈T社区,更多行业相关资讯更有行业相关免费视频教程。完全免费哦! 需要编程软件及教程中的源码的请企鹅:2726811956)
假设您创建了一个HelloWorld.java文件,您猜对了,打印出“Hello World:”
公共 类 HelloWorld {
public static void main(String ... args){
系统。出。println(“Hello World”);
}
}
安装JDK 11后,您可以使用“java”启动器运行此文件:
java HelloWorld.java
JDK 11中的“java”启动程序已更新为以四种模式运行:
- 启动一个类文件
- 启动jar的主类
- 启动模块的主类
- 启动在单个源文件中声明的类
当以下两个条件之一匹配时,“java”启动器标识单个文件模式:
- 传递给它的第一个项是具有“.java”扩展名的类文件
- 指定了“–source”选项
Shebang支持
如前所述,单文件模式可用于创建小型实用程序。基于Unix的系统上可用的Shebang(“#!”)机制非常适合运行这样的单文件实用程序。使用单一文件模式调用Java启动程序的shebang文件应该以:
#!/ path / to / java --source version
shebang行可以包括其他启动器选项,例如添加额外的类路径jar。当然,该文件应标记为可执行文件。请注意,当您包含shebang行时,单个文件源代码名称不必遵循Java类命名约定。例如,HelloWorld.java可以重命名为“hello”。
Windows中不支持Shebang支持 |
---|
有了这些知识,让我们创建一个运行Tomcat作为嵌入式(TED)服务器的小程序。下载嵌入式tomcat zip文件并将所需的jar解压缩到“lib”文件夹中。接下来,创建一个名为“ted”的文件并将其标记为可执行文件:
触摸泰德&& \
chmod + x ted
将以下代码添加到文件中:
#!/ usr / bin / java --class-path ./lib/* --source 11
import org.apache.catalina.Wrapper;
import org.apache.catalina.startup.Tomcat;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
公共类TomcatEmbedded {
private static final String EMPTY =“”;
public static void main(String ... args)
抛出异常{
文件baseFolder = new File(System.getProperty(“user.dir”));
文件appsFolder =新文件(baseFolder,“apps”);
Tomcat tomcat = new Tomcat();
tomcat.setBaseDir(baseFolder.getAbsolutePath());
tomcat.setPort(8080);
。tomcat.getHost()setAppBase(appsFolder.getAbsolutePath());
//调用连接器以创建默认连接器。
tomcat.getConnector();
tomcat.addWebapp(EMPTY,“。”);
包装器包装器= tomcat.addServlet(EMPTY,“hello”,新的HelloServlet());
wrapper.setLoadOnStartup(1);
wrapper.addMapping( “/ *”);
tomcat.start();
tomcat.getServer()等待();
}
私有静态类HelloServlet扩展HttpServlet {
@覆盖
protected void doGet(HttpServletRequest req,HttpServletResponse resp)
抛出IOException {
resp.setStatus(200);
var writer = resp.getWriter();
writer.write(“Hello World”);
writer.flush();
writer.close();
}
}
}
保存文件并将文件作为常规可执行文件运行:
./ted
在浏览器中导航到http:// localhost:8080以查看实用程序的运行情况。当然,“ted”在其当前版本中没有用,但可以扩展它以构建一个小型开发人员“Dropbox”实用程序,以跨VM共享文件。
使用这种新的单文件源代码功能,可以在Java中创建自包含的实用程序。
快乐的编码!
原文链接:https://dzone.com/articles/single-file-source-code-with-java-11