Первое появление окна при запуске программы JavaFX занимает слишком много времени - ~ 700 мс. Это заметная задержка.
Может ли JavaFX загружаться быстрее?
Что у меня есть:
У меня есть простой проект HelloWorldот Maven архетип org.openjfx:javafx-archetype-simple:0.0.3
. Я только добавил дополнительный класс с PSVM, который вызывает PSVM класса, который расширяет Application
class:
public class MainLauncher {
public static void main(String... args) {
System.out.println("MainLauncher...");
App.main(args);
}
}
public class App extends Application {
@Override
public void start(Stage stage) {...}
public static void main(String[] args) {
System.out.println("App...");
Application.launch();
}
}
MainLauncher
необходим для создания Uber-JAR с maven-shade-plugin
.
Я использовал запись экрана (60 кадров в секунду), чтобы проверить, сколько времени занимает запуск приложения.
Когда я запускаю java -jar app.jar
или java -p ${JARS_AND_FOLDER_WITH_CLASSES} -m com.company/com.company.MainLauncher
, другими словами - когда я запускаю MainLauncher
класс, я получаю:
- в 0 мс Я запускаю приложение
- в ~ 30-110 мс Я вижу консольный журнал
- в ~ 600-750 мс Я вижу окноначинает рисовать
- + 30 мс для окна заканчивает рисовать *
Когда я запускаю App
класс, поведение немного другое, но общее время остается тем же. В этом случае я вижу журнал "App...
" в консоли позже:
- в 0 мс. Я запускаю приложение
- в ~ 550 мс. Я вижу журнал консоли
- в ~ 600-750 мс. Я вижу, что окно начинает рисовать
- + 30 мс для оконного окрашивания *
* Оконная окраска занимает 2-3 кадра (для60 FPS): 1. Строка заголовка + границы 2. Фон 3. Содержимое