看下面的代码。
// 编译
javac Javastack.java
// 运行
java Javastack
在我们的认知里面,要运行一个 Java 源代码必须先编译,再运行,两步执行动作。而在未来的 Java 11 版本中,通过一个 java
命令就直接搞定了,如以下所示。
java Javastack.java
然而,这也并没有什么卵用。我们大部分开发工作都在 IDE 工具中,所有的编译运行过程都由 IDE 完成的,真正用到命令行来编译、运行的场景真的非常少。当然,如果你是记事本大神,请收下这个功能。
从另外一面来看,这是不是意味着 javac
要退出历史舞台了呢?不会。因为,还是需要编译源代码的命令的,而不是直接运行。
Shebang #! 这是什么鬼?这也是 JEP330
里面的相关技术,它能支持在 UNIX 系统脚本中运行 Java 程序,如以下代码所示。
#!/path/to/java --source version
Oracle JEP330
这个特性只是为了为了编译和运行小型的 Java 应用程序而提供的,而不是使用 Java 变成成能通用性语言。这个特性评审时就饱受争议,但最终达成共识确认会被加入到 Java 11 新版本当中。
参考资料:https://securityonline.info/jdk-11-will-introduce-shebang-symbol/