null

Java 11 и запуск програм, состоящих из одного файла

При изучении языка программирования Java начинающие программисты часто путают команды java и javac. Например, распространенной ошибкой является попытка запустить программу, передавая в качестве аргумента java исходный код требуемой программы:

java MyJavaProgram.java

После этого появляется следующая ошибка:

Error: Could not find or load main class MyJavaProgram.java

Для исправления данной проблемы начинающему программисту необходимо глубже изучить принципы работы java программ, а именно понять, что программу необходимо сначала скомпилировать, а далее запустить.

Однако часто в процессе тестирования приходится писать небольшие программы-примеры, весь код которых располагается в одном файле. Такие программы приходится часто перекомпилировать и заново запускать, что приводит к монотонному повторению двух действий, а именно запуску команд javaс и java. В связи с этим в Java 11 предлагается ввести возможность упрощенного запуска программ, состоящих из одного файла (JEP 330). То есть такая команда будет исполнена без ошибок (если сама программа написана без ошибок):

java MyJavaProgram.java

Выполнение такой команды должно быть аналогично следующим двум командам (предполагаем, что MyJavaProgram.java содержит класс MyJavaProgram):

javac -d <в памяти> MyJavaProgram.java
java -cp <в памяти> MyJavaProgram

Если необходимо передать аргументы в программу, их можно будет добавить после имени файла:

java MyJavaProgram.java "Ivan" "34"

Для того, чтобы использовать упрощенный синтаксис запуска, класс должен иметь метод publiс static void main(String[] args) { ... } . Опции компилятору можно передать, если записать их перед именем файла.