我们都知道java是静态语言,也就是说,如果你想执行java程序,就必须先编译,再执行。
那本文为什么说,java可以不编译直接执行了呢?
其实,这个是OpenJDK11里新加的一个feature,目的是使单个文件的java源码可以无需编译,直接执行。
下面的JEP里对该特性做了详细的描述:
我们先写个小例子实验下:
$ cat Test.java
public class Test {
public static void main(String[] args) {
System.out.println("hello");
}
}
$ java Test.java
hello
真的可以执行,神奇。
JEP 330 中还提到,在类Unix操作系统下,上面的代码还可以以 "Shebang" 形式执行。
我们再写一个例子看下:
$ cat Test
#!/usr/bin/java --source 12
public class Test {
public static void main(String[] args) {
System.out.println("hello");
}
}
$ chmod +x Test
$ ./Test
hello
看到没,我们用java写的代码居然可以像shell脚本一