Skip to content
Jackway's Blog
Go back

使用Java编写脚本

Updated:

背景

在开发的过程中,经常会临时处理些任务需要编写一个脚本,比如shell,python,但是对于只会Java的开发人员(当然不是我)来说,肯定会期待使用Java编写脚本。但是因为Java的语言特性,编写一个Java脚本是非常复杂的,需要导入包,定义类,定义方法。

Java为了让我们轻松的编写脚本都做了哪些?

从Java11开始使用Java写脚本成为可能

其实从Java 11开始,就可以用其写脚本了。

JEP 330: Launch Single-File Source-Code Programs (openjdk.org)

JEP 330(启动单文件源代码程序)中描述到:

Enhance the java launcher to run a program supplied as a single file of Java source code, including usage from within a script by means of “shebang” files and related techniques.

增强 java 启动器,使其能够运行以单个 Java 源代码文件形式提供的程序,包括通过”shebang”文件和相关技术在脚本中使用。

Hello Wrold示例:

#!/usr/bin/java --source 11

public class Script {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

虽然Java 11是的shebang成为可能,但相比于其他脚本来说,实现过程还是相当繁琐。

现在更加简单

从Java 22开始,JEP 463: Implicitly Declared Classes and Instance Main Methods (Second Preview) (openjdk.org)允许我们省略类的声明,并可以将main函数从public static void main(String[] args)简化为void main。这样会大大降低我们写脚本的成本,因为类的定义和main方法的书写本身就是一个繁琐的、重复的过程。

Hello World示例:

#!/usr/bin/java --source 22 --enable-preview

void main() {
    System.out.println("Hello World");
}

在这个JEP的第三次迭代中,Java 23,将会允许使用print(obj)println(obj)readln(obj)来代替System.out.println(obj)


Share this post:

Previous Post
Python中设置的环境变量在当前shell环境生效
Next Post
瓷砖怎么选