Почему Java для десктопа это плохая идея? Какие есть аналоги

Java на десктопе никто не использует – это понятное дело. Но почему?

Джава-машина — это программа, которая принимает скомпилированный байт-код и переводит его в команды вызова операционной системы. Т.е. написанный код исполняется не напрямую на вашей операционной системе. Этот процесс медленный.

Конечно, джава-машины развиваются. Сейчас они гораздо более умные, чем были в самом начале. Раньше вызовы транслировались буквально по командно, что естественно медленно. Сейчас джава-машины содержат так называемый Just In Time — JIT-компилятор. Он позволяет какие-то куски кода в байт-коде переводить на код, исполняемый непосредственно в операционной системе, и это сильно ускоряет процесс. Проблема в том, чтобы JIT работал как следует, нужно определенное время. JIT начинает работать только после того, как по определенному куску кода исполнение проходилось несколько раз. Он измеряет, какой кусок кода нужно оптимизировать и как, перекомпилирует его с разными ключами и т.д. Т.е. под большой нагрузкой джава начинает работать очень эффективно. И именно в этом загвоздка — вы не получите большую нагрузку на десктопе. Более того, у вас не получится создать нагрузку на одно и тоже место несколько раз.

Почему Java для десктопа не подходит

  • Медленный старт

Джава всегда медленно стартует. Чтобы заработала маленькая програмка на джаве нужно поднять огромную джава-машину. Если речь о сервере, который поднимается раз в несколько лет, такой недостаток несущественный — что он стартовал 2 секунды, что 2 часа — не важно, он потом будет работать годы без остановки. В десктопе все иначе.

  • Отсутствие красот

Код, исполняемый джава-машиной, не исполняется непосредственно на вашей операционной системе. Т.е. методы, которые доступны в вашей системе (различные всплывающие окошки, тени и прочие красоты) недоступны джава-машине, соответственно недоступны коду, который исполняется внутри джава-машины. Потому что предполагается, что этот код может исполняться на любой операционной системе (от Винды до Линукса). Значит конкретно на вашей операционке он будет не такой красивый, как код, написанный специально для этой системы. Именно поэтому большинство джавовских приложений выглядят довольно убого.

  • Отсутствие необходимости

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

Какие мы знаем распространенные приложения на джаве под Windows или Linux? Фактически только IDE. Потому разрабатывать джава-код удобно внутри джава-машины. Джава-машина может дебажить код, проверять переменные, ревьюить, автоматически рекомпилировать и т.д. Джавовский IDE пишется на джаве. А все остальное — просто не выгодно. 

Какие есть аналоги?

Язык С++ позволяет писать под любую операционную систему нативными средствами и компилироваться под соответствующую операционную систему.  Естественно, вы не можете просто взять код, написанный под одну операционку и перекомпилировать под другую. Потому что он не будет использовать специфичные для данной системы методы, соответственно получить «красоту» вы не сможете (выплывающие окошки, бульбашки, промотки и пр.).  Но под каждую систему вы можете написать свой собственный код с учетом особенностей именно этой системы.

Для Винды есть отличный стек языков шарп, которые позволят делать нативные виндовые приложения нативным виндовым языком (по синтаксису близким к джаве). Под Линукс обычно пишут на С++. 

Но стоит подумать, вы хотите писать приложения только под одну операционную систему? Современному бизнесу удобнее работать с SaaS-приложениями. Т.е. вы работаете через веб-интерфейс системы исключительно через браузер, ничего не устанавливаете себе на компьютер.

Автор Сергей Немчинский