ТЛ; др
См. JEP 330 с описанием этой новой функции в OpenJDK 11 и более поздних версиях, где java MyClass.java
будет компилировать и запускать один файл исходного кода.
Java 11
Вы обнаружили новую функцию в реализациях Java 11, построенных на OpenJDK 11. Для удобства теперь один файл .java
можно скомпилировать , а можно выполнить, просто вызвав java
в командной строке.
java
автоматически вызывает javac
для выполнения компиляции. Полученный скомпилированный класс запускается.
См. JEP 330: Запуск однофайловых программ с исходным кодом . Чтобы процитировать этот JEP:
Однофайловые программы, в которых вся программа помещается в один исходный файл, распространены на ранних этапах изучения Java и при написании небольших служебных программ. В этом контексте, это чистая церемония, чтобы скомпилировать программу перед ее запуском. Кроме того, один исходный файл может компилироваться в несколько файлов классов, что добавляет издержки на упаковку к простой цели «запустить эту программу». Желательно иметь возможность запускать программу непосредственно из исходного кода с помощью Java Launcher:
java HelloWorld.java
И, да, эта простая функция должна была быть создана десятилетия назад, чтобы помочь бесчисленным начинающим, пытающимся изучать Java.
Предостережение: реализация Java , а не , построенная из исходного кода OpenJDK, может включать или не включать такую функцию. В этом разница между JEP (только OpenJDK ) и JSR (определено в спецификациях Java ).