Java 11单文件源代码

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值