Позавчера на сайте OpenJDK появился новый черновик JEP, в котором предлагается наделить лаунчер java способностью запускать исходные файлы Java напрямую без необходимости предварительной компиляции. Например, программу HelloWorld.java
можно будет запустить, просто исполнив команду java HelloWorld.java
. Это будет эквивалентом к компиляции HelloWorld.java
через javac
и последующим запуском Main-класса через java-лаунчер. Таким образом, запуск исходных файлов будет четвёртым способом запуска Java-программ. Первые три – это запуск class-файлов, JAR-файлов и модулей (java --module <module>[/mainclass]
).
Исполнение java-файлов напрямую будет весьма полезной возможностью, которая может пригодиться, например, при обучении программированию на Java, для запуска скриптов, тестирования и т.д.
Перечислим основные пункты JEP:
- Запуск java-файлов будет поддерживать аргументы командной строки (
java Factorial.java 3 4 5
). - На Unix-совместимых платформах Java-программы можно будет писать в виде shebang-файлов и исполнять как обычные исполняемые файлы. Такие файлы должны начинаться со строки
#!/path/to/java --source
. - Для запуска java-файлов необходима их компиляция, а это означает, что их можно будет запускать только на тех образах Java, в которых присутствует модуль
jdk.compiler
. Другими словами, запустить java-файлы можно будет на JDK, но не на JRE.