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

preview_player
Показать описание
Рассказал, почему использовать Java для десктопа плохая идея. Ну и на чем с моей точки зрения лучше писать такие приложения. Спойлер - с моей точки зрения сейчас это C#

Рекомендации по теме
Комментарии
Автор

Вы забыли про целый пласт ПО - промышленная автоматика. Существует много видов АРМ-ов управления системами, изолированных от внешнего мира по понятным причинам, поэтому там нет Web-а в принципе. Случай из моего опыта - АРМ управления был написан на Java+Eclipse SWT под Windows, а насколько лет назад "сверху" пришло указание отказаться от Windows и перейти на opensource(Linux). Представьте, что было бы, если бы пришлось всё переписывать заново! А так пару месяцев на проверку и всё.

ВиталийВласов-ых
Автор

Категорически не согласен! 1) Время запуска десктопного Java приложения в наше время - совершенно не узкое место. Во первых JVM стали намного эффективнее, а во-вторых объемные библиотеки можно подгружать динамически по мере необходимости. 2) Среднему бизнес-приложению все эти свистелки-перделки, красоты и анимации на фиг не нужны, а чтоб окошки и кнопки выглядели не как жопа, а нормально и эргономично - есть кучи библиотек. В конце концов, для особо упоротых любителей "голубизны" есть JavaFX. 3) Конечно на всех осях есть свои средства разработки десктопных прилад, но какие ещё кроме Java позволяют скомпилить один раз и запускать везде? Тот факт, что на Java пишут сложнейшие IDE уже опровергает все аргументы против ее использования для десктопа.
Однако соглашусь с Сергеем, что Java действительно все реже применяется на десктопе, но не потому, что она плоха, а потому, что не модна. За 30 лет в IT я видел немало прекрасных технологий, которые ушли в небытие из-за агрессивного маркетинга "новых, улучшенных с банановым вкусом" фреймворков и языков

NickMukhin
Автор

Десктопные продукты от JetBrains, которые по сути написаны на Java, работают очень круто. Тот случай, когда "если очень захотеть, то можно".

JohnHeppner
Автор

Сергей, Вы не совсем правы в своих сравнениях - некоторые жопки очень даже ничего =)

Warfazer
Автор

Ну линейка ide от jetbains весьма сносна на разных ОС, и как я понимаю, написана на java.

alexandermaymin
Автор

Я использую. Через javafx. В этом случае все выглядит красиво (благодаря css). Пока доволен.

АлексейСергиенко-жв
Автор

Плохо как то тема раскрыта.
Нет упаминания конкретных библиотек графических элементов.
Типа Swing, SWT, JavaFX. Все три вполне годные.
JavaFХ сейчас очень активно развивается.

Для медицинских учреждений, кассовых аппаратов, инвентарного учета и тому подобному вполне себе пишут на Java. Особенно раньше, до того как все на WEB перешли.
Просто этот софт широкой публике не известен.

Если десктопное приложение грубо говоря состоит из окошек, кнопочек и полей для ввода, то Java вполне хороший вариант.

pahan
Автор

Помимо производительности есть такая штука как удобство разработки. Если нужно быстро наваять полноценное десктоп приложение под винду работающее с базочками данных, то на мой взгляд самое лучшее что было это FoxPro. Там всё заточено под работу с БД (перечислять вкусности долго). Если нужно тоже самое, но не только БД, а какая то графика, звук, то Delphi. На последнем можно как просто декстоп с окошечками, кнопочками, так и игрушки под DirectX/OpenGL, а так же всевозможные динамические библиотеки для других приложух (например WinAMP, да и встраивал мультимедиа в тот же FoxPro посредством самописных библиотек). Это просто, быстро, эффективно. Джава хороша в мобильных девайсах, в вебе, кросплатформенность (это её фишка, для чего её и создавали).

HowItWorks
Автор

У нас оффлайн приложение для проигрывания аудио и видео контента. Иногда взаимодействует с сервером для обновлений. Делать кросплатформенное решение для android/win/linux гораздо удобнее, чем держать 2/3 команды. Плюс тестированию проще, так как логика одинаковая. И необходимость в однотипных тестах на разных системах меньше.
У нас был опыт, когда под android писали на java, а под win писали на c#. Логика работы приложений была разная, не смотря на то что задачи ставил один и тот же человек. Так же разнился функционал. Тем самым кросплатформенная разработка на java бывает выгодна, просто всё как всегда зависит от задач.
Да и java удобна за счёт того, что если на ОС можно поставить java машину, то это означает, что там можно запустить наше приложение. Возможно понадобятся небольшие доработки, но это не разработка с нуля всего функционала.

AlexFeaT
Автор

Сейчас весьма быстро запускаются десктопные приложения, написанные на Java, и если руки программиста не кривые, то и красоты сейчас чтоб навести всего в Java достаточно. Игрушки вообще классно клепать. Хоть 2d, хоть 3d.. Рендеринг быстрый, всякая акселерация используется. JIT компилирует в бинарник при первом проходе, и это заметно, к стати, на десктопных приложениях очень хорошо. Да и на WEB, когда та же JSP-шка при первом проходе слегка подвисает, зато при втором моментально отрабатывает. Где там 3, 5 или больше проходов - я не знаю... Ну, не видел такого ещё.. Гарбидж-коллектор - тот да, подстраивается иногда заметно как.. Особенно, когда какую-нибудь графическую демку делаешь или игрушку - запускается быстро, но через некоторое время иногда бывают проглюки в скорости, особенно, если сильно много процессорного времени забрал... На Java, конечно, много разных инструментов для разработчика.. Почему-то мало джавовского софта для работы с мультимедиа. И часто как-то так криво написаны бывают такого рода поделки, что поплюёшься и снесёшь.. Хотя я пробовал работать со звуком - если сделать всё качественно, то вполне всё бегает без каких-либо глюков... С видео серьёзно не работал, но что делал - сносно работало. Видел WEB-морды для видеокамер, где видеопроигрыватели были написаны на Java, как апплеты (ещё в старые добрые времена :-) ). Так там они и расшифровывали поток, и показывали.. И, самое главное, работали под любой ОС, что меня, как линуксоида, радовало. Так что, ничего подобного: Java для десктопа - это нормальная идея. Не сказать, всё-таки, что отличная, но вполне годная, особенно если её помножить на преимущества кросплатформенного приложения. ИМХО

HITROME
Автор

Для C++ есть прекрасный фреймворк Qt (учил довольно долго), позволяющий писать код, работающий на основных операционках (и даже микроконтроллерах, но не углублялся), в т.ч. и использующие фичи каждой (хоть и небольшой список) - Android/MacOS/Windows Extras. Есть также GTK, Wx, но ну их в пень, скажу честно. Сейчас вот net core будет новый, мб там и Forms какие-то завезут, вот это уже что-то интересное будет. А так, Java элементарно не затачивалась под десктоп, вот задачи там такой не стояло (не смотря на Swing и JavaFX).

lynx
Автор

Не знаю, я балдею от ретро стиля окон в Swing :)))

volodymyrsukrut
Автор

Блин. Вы приводите пример из статейки про джаву, с момента ее выхода. Вы видели сколько стартует современные Microsoft Office например, Photoshop? Они ж не на джаве написаны. Серьезные декстоп приложения тоже часто запускают раз в день/неделю/месяц, апотом просто включают сон на компьютере вместо выключения. Или программисты ide и все тулзы для работы с БД и чем то еще кажды день перезапускают?)) Java FX дает замечательную картинку. В любом случаи программа должна быть со стандартным интерфейсом, а не с рюшиками, фиг пойми как пользоваться. В чем проблема вызвать с джавы нативку, под разными осями разную, если это действительно важно для работы этого приложения? SAAS подходит далеко на для всех приложений. Пример? Посмотрите сколько не клиент-серверных приложений под андроид в плей маркете. Увы даже html 5 с его канвой, не дает хорошо реализовать сложные юай интерфейсы. Точнее дает, но писать нужно многое с нуля. Пример - палнировщики мебели, есть онлайновые, но либо убогие в использовании, либо с кучей самописных фишичек. Я как бы тоже за то что б делать веб ориентированые приложения, где эт о только возможно. Из минусов нужен хостинг, с поддержкой той же джавы, которые обычно доступны только на VDS, ну или клауд, а это все не очень дешево для мелких приложений, особенно если интернет им не нужен для основных функций. Да и даже современные html+css требуют хорошего бекграунда для построения адекватных интерфейсов. Что начинающему джависту может быть сложно. Это не кнопочек натягать на формочку, и по двойному клику события поописывать.

FrickUA
Автор

а из чего вообще строится фротенд приложений для внутренних операций в компании? Например, вы пришли в банк и сотрудник банка заходит в систему работает с ней, на чем строится UI этой системы?

Roma
Автор

Вот ты говоришь java в десктопе плоха и т.д. А устроиться работать как раз на десктоп для первой работы у меня и вышло)
Про eclipce RCP почему-то не все говорят, хотя это очень масштабируемая технология для десктопа.

MaksymVashchenko
Автор

Здравствуйте, можете подсказать, у меня в городе появилась летняя академия от большой компании, она набирает студентов с небольшими знаниями и учит их бесплатно (если пройти небольшой экзамен )если успешно окончить курс то берут на работу, там есть курс Java я хотел пойти туда, но проблема в том что как оказалось это курсы по разработке софта на Java а софт клепать мне не очень нравится (но терпимо), душа лежит к web (front, beck оба направления оч нравятся). Подскажите пожалуйста что выбрать: идти к ним в академию ( просто это отличный шанс " войти в IT") или же самому учить web ?

foxil
Автор

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

velsah
Автор

Кроссплатформа - это плюс, а не минус. Выглядеть приложение должно одинаково и на виндовс и на Линукс, что в этом такого. Реагировать на перемотки рабочих столов оно будет так же как и другие приложения, потому что это не от приложения зависит.

ВладимирЛеденёв-эг
Автор

А почему бы не загрузить java машину в память и не выгружать? Или сделать java машину частью операционной системы (по моему лет 15 назад эти идеи были)?

zhabrovets
Автор

На Java написаны DBeaver, PyCharm и многое другое. На современных PC и Mac все быстро и хорошо работает.

sergeybure