Является ли main ненужным при использовании метода `start` в JavaFX? - PullRequest
0 голосов
/ 26 октября 2018

При использовании JavaFX мы переопределяем метод start, который запускает приложение.

@Override
public void start(Stage primaryStage ) {}

Я обнаружил, что компилятор Java понимает, что начало - это отправная точка, когда нет основного метода. Основной метод кажется ненужным. Есть ли еще причины для реализации основного?

Существуют ли также функциональные причины для реализации основного метода?

1 Ответ

0 голосов
/ 27 октября 2018

Примечание. Мой ответ предполагает использование OpenJDK / OracleJDK.Я не знаю, ведут ли себя другие поставщики так же .

В документации, цитируемой другими, основное внимание уделяется инструменту JavaFX Packager, которого больше не существует 1 .Стоит отметить, что инструмент не кажется необходимым (по крайней мере для Java 10 и 11).Единственное, что требуется, - это наличие библиотек JavaFX и то, что назначенный основной класс расширяется Application;тогда вам не нужен метод main независимо от того, как собран код.

Существуют ли также функциональные причины для реализации основного метода?

Внормальное приложение JavaFX, я бы сказал, нет.Практически любая инициализация, которую вы хотели бы выполнить в main, могла бы быть выполнена внутри Application.init.У вас также есть доступ к аргументам командной строки через Application.getParameters.

PS самый важный вопрос, почему компилятор принимает запуск в качестве отправной точки ... Это противоречит моему невротизму программирования

См. мой ответ здесь для получения подробной информации о внутренней процедуре запуска для приложений JavaFX (по крайней мере для 10 и 11).

Кроме того, компилятор не "принимает запуск в качестве отправной точки".Компилятор просто компилирует код и видит start - и main - так же, как и любой другой метод.Это среда выполнения, которая ищет main и вызывает ее.Тем не менее, связанный ответ идет о том, как start (и приложения JavaFX в целом) получает специальную обработку.


1.Инструмент упаковщика был удален в Java 11. Однако возможна замена: jpackager .

...