LINUX.ORG.RU

Кто пишет gui на яве?

 ,


1

5

Правда, что одно и тоже приложение javaFX можно запустить на десктопе, в браузере и на мобильном устройстве? Насколько это хорошо работает?

Хотя ни одной такой программы не встречала, интересно кто их пишет и для кого?

PS Встретила здесь скептическое отношение к ява, но мне она нравится больше чем питон или перл. Возникает ощущение какой-то фундаментальности языка и делает его очень солидная компания.


* большинство оценивают тот же swing по монструозным java-ide и сравнивают его с средними-мелкими приложениями на других тулкитах. это не правильно, т.к. монструозное приложение на чем угодно будет более громоздким и неповоротливым. нужно смотреть как работают jedit и mucommander какие-нибудь, а не idea

* многие забывают, что java gui написан на целиком java, и поэтому отзывчивость хромает. нужно это для реализации фичи «собрали jar-ку один раз и она работает везде». иначе начались бы типичные сношения с версиями библиотек, битностью, перепаковкой всего этого под разные платформы. напишите gui тулкит на своем любимом лиспе, хачкеле, питоне, и он точно так же будет иметь фиговую отзывчивость, а в случае с питоном будет просто слайдшоу

* большие java приложения только после старта могут тупить и заикаться. после того как vm прогреется и сработает jit, все начинать летать. на примере той же idea, при страте меню открывается с заметными лагами, после того как пробежишься указателем мышки по разделам несколько раз, оно становится реактивным и лагов нет в принципе.

java так работает, это нужно просто понять и простить

ertgblasd ★★
()
Ответ на: комментарий от ertgblasd

java так работает, это нужно просто понять и простить

Джва чая

Но мнение, что для мелких проектов использовать джавку для гуя - стрельба из пушки по воробьям(а в больших дарит доп. ручной тормоз), не меняю.

Софт на джавке пользую и не считаю, что он должен быть переписан на что-нибудь еще.

nihirash ★★★
()
Ответ на: комментарий от nihirash

и да, ещё одна ремарка, уже не относящаяся к джаве:
любой графический интерфейс — это GUI, например в браузере.
подменять понятие web интерфейс и gui — заблуждение после промывки мозгов маркетологами.

system-root ★★★★★
()
Ответ на: комментарий от ertgblasd

Это следствие не только jit, жаба загружает классы из classpath по мере обращения к ним.

Aber ★★★★★
()
Ответ на: комментарий от Stanson

Изумительно. Что и требовалось доказать. Жабодрочеру абсолютно насрать на конечного пользователя ...

Ты обкурился, нажрался или болен, где ты увидел, что надо писать на Java?

А потому как жабодрочер отвечает только перед своим надсмотрщиком^W менеджером,

Откуда ты берёшь всё обвинения для незнакомых тебе людей, тебе кто-то шепчет в твоей голове? Зачем ты превращаешь технический раздел в свой не технический бред?

А для тебе, болезного, скажу, что именно мне нужно решать на чём начинать проект, сколько я потрачу денег, во сколько мне выльются разработка (для таких как ты напишу, что тут, помимо всего прочего, нужно рассчитать, а сколько будут стоить разработчики (даже такие которые не знают, что такое UML и прочие технологии, они тоже бывают полезны) ). И есть люди которые думают перед написанием софта для людей, а не болтуны как ты.

t_r
()
Ответ на: комментарий от t_r

Откуда ты берёшь всё обвинения для незнакомых тебе людей, тебе кто-то шепчет в твоей голове? Зачем ты превращаешь технический раздел в свой не технический бред?

А что технического в маркетинге кривого поделия или хайпе вокруг очередного «фреймворка»?

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

Хочешь ответ от практика? Да легко.

1. Выкинь из головы всю корпоративную шелуху про UML, «технологии» и пр. Всё что ты прочитал про организацию разработки - туфта. Реальность всегда порушит всё что напридумывали всякие любители поучить управлению компанией за 19.95. Не нужно натягивать сову на глобус, универсальных решений нету, а все эти «технологии» будут только мешать получить результат.

2. Организуй написание на C/C++ движка (то, что реализует алгоритм, математику, всю мякотку) твоего проекта. Это обеспечит максимальную эффективность и портируемость на любую платформу. Если есть какая-то специфика, типа аццкой многопоточности или масштабируемости - можно на эрланге каком писать, но вряд-ли это на самом деле нужно. Если без гуйни никак - делай псевдогуйню на родном тулките платформы которая используется для разработки. Только отдельно от движка, в движке не должно быть никаких привязок к гуйне и платформе. В итоге получишь лёгкую быструю библиотеку содержащую всю суть твоего проекта. Срок - когда будет готово, и не раньше. Затраты зависят от навороченности твоего проекта. Возможно понадобятся не только программисты, но и математики, например.

3. Имея отлаженный быстрый движок не привязанный к гуйне, можно нанимать тех, кто сделает тебе нативную гуйню на все нужные тебе платформы. Гуйня даже самой сложной софтины - это не так много кода, чтобы вообще напрягаться по этому поводу.

4. PROFIT!!!111 У тебя продукт, который работает на всех платформах, не тормозит, не жрёт память и который лекго развивать.

Всё это, конечно, имеет смысл если ты действительно собираешься делать какой-то стоящий софт, а не «херак-херак и в продакшен».

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от stevejobs

тупо юзают Java Web Plugin. Который кстати, не должен рабоать в свежих Хромах

Оно и в тухлых хромах уже давно не работает. И вообще оно не работает в свежих нигде.

WereFox ★☆
()
Ответ на: комментарий от Stanson

По второму и третьему пункту , звучит логично. Я конечно не сишник, работал только в java. Но в тех проектах, когда продукт продавали (т.е. не внутренний тул), требовали постоянно репрезентативный ui, чтоб демонтировать тем кому собирались втюхать. Т.е. всегда был разговор о MVP но коли заявлена мультиплатформенность, её нужно было продемонстрировать, причем linux не интересовал, нужен был mac и винда. Причем сейлсам или тем кто исполнял их роль, нужно было чтоб сразу красиво. А что там за логика было не очень важно, главное внешний вид. А так да, твой план очень хорош.

Aber ★★★★★
()
Ответ на: комментарий от Stanson

Имея отлаженный быстрый движок не привязанный к гуйне, можно нанимать тех, кто сделает тебе нативную гуйню на все нужные тебе платформы. Гуйня даже самой сложной софтины - это не так много кода, чтобы вообще напрягаться по этому поводу.

Что есть движок? Если мне нужно отобразить какие-то данные в таблице - что мне делать? Перегонять данные движка в данные модели нужного тулкита? А у разных тулкитов совсем разные модели представления данных. Получаем тонну головной боли на пустом месте. И при обновлении данных получаем двойную работу по переносу данных.

Вы явно никогда не писали GUI сложнее двух кнопок.

RazrFalcon ★★★★★
()
Ответ на: комментарий от Stanson

Вы таки будете смеяться, но я использую по крайней мере две софтины которые именно так и сделаны. Только в п. 3 там ява. См. MATLAB и Vivado.

anonymous
()
Ответ на: комментарий от EXL

Поэтому даже GUI-приложения на Electron'е (вариант ношу Chromium всегда с собой) выглядят для конечного пользователя более адекватно, чем GUI-приложения на Java.

Они выглядят одинаково хреново

WereFox ★☆
()
Ответ на: комментарий от Aber

Но в тех проектах, когда продукт продавали (т.е. не внутренний тул), требовали постоянно репрезентативный ui, чтоб демонтировать тем кому собирались втюхать.

Для этого удобно использовать псевдогуй сделанный в п.2. Его достаточно чтобы продемонстрировать потенциальному покупателю что софтина работает и делает то, что нужно, и юзер сможет оформить свои хотелки вменяемым образом, понимая о чём речь.

На самом деле, всем всегда в идеале нужна одна большая кнопка «сделать зашибись». Наличие псевдогуя помогает излечить их от этого, и написать гуй который будет хотя бы примерно соответствовать хотелкам среднестатистического юзера.

Если это какая-то хрень на заказ, а не для массового пользователя, обязательно нужно с заказчика стрясти ТЗ, иначе доработка гуйни может стать вечной.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

IDE

недотягивающее по фичам даже до допотопного вима

А ты пробовал пользоваться в IDE чем-нибудь кроме текстового редактора? И, да, для мазохистов-вимодрочеров как минимум в idea есть vim-mode.

WereFox ★☆
()
Ответ на: комментарий от RazrFalcon

Что есть движок?

То, что обрабатывает данные.

Если мне нужно отобразить какие-то данные в таблице - что мне делать? Перегонять данные движка в данные модели нужного тулкита?

Выдавать данные в виде двумерного массива, например, или вообще текстом, в виде csv какого. А перегонкой их в представление тулкита и будет заниматься написанная тобой гуйня.

Получаем тонну головной боли на пустом месте.

Откуда тонна боли? Это теперь так сложно - прочитать доку на тулкит и в тупейшем цикле загнать массив в виджет? Это вызывает тонну головной боли у жабомакаки? Это вообще уже что-ли днише деградации?

И при обновлении данных получаем двойную работу по переносу данных.

О, и дофига ли данных влезает в табличку даже на самый супер-пупер огромный монитор? Ну чтоб они читаемы были? 10 килобайт? 20? И откуда у жаболюба такая забота о ничтожном по сравнению с жабой оверхеде?

Вы явно никогда не писали GUI сложнее двух кнопок.

О как. А мужики-то не знают.

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 2)
Ответ на: комментарий от WereFox

А ты пробовал пользоваться в IDE чем-нибудь кроме текстового редактора?

И что же там такого есть полезного, интересно? Дебаггер курсор гоняет? Так это и вим умеет. Скомпилить по кнопке можно? Это тоже. Мышетыкательное говно для редактирования мейкфайла (ну или какая там система сборки)? Так его в текстовом виде удобнее редактировать, плюс доступна не только декларативность для дебилов.

И, да, для мазохистов-вимодрочеров как минимум в idea есть vim-mode.

Я не пользуюсь вимом. И речь не о каких-то там сочетаниях клавиш. Речь о том, что если из двух софтин с одинаковым функционалом одна работает даже на самом дохлом компе без тормозов, а вторая требует 100500 гигов и ядер, а так же минут ожидания запуска и по прежнему тормозит, то это значит что вторая - говно. Тут вообще даже нет места для каких-то там обсуждений.

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от Stanson

Если это какая-то хрень на заказ, а не для массового пользователя, обязательно нужно с заказчика стрясти ТЗ, иначе доработка гуйни может стать вечной.

Это уже разговор не про UI тулкиты, а про управление проектом. Когда над тобой продукт овнер и проджек менджер, рулят не в ту сторону, наверное не сами по себе, то не знаю как взять и остановить вакханалию, я бы хотел уметь, я вообще многими техниками не владею, ну например хотел бы уметь класть болт на стол, чтоб всем неудобно было, не получается. Это так, риторически.

Aber ★★★★★
()
Ответ на: комментарий от Stanson

Вим не умеет ast, там даже хайлайтинг не всегда работает правильно. По этой причине интелисенс в вим всегда будет ущербным, если он вообще там есть. В жабе практически весь статический анализ идет в ide, можно настроить так, что ворнинг на «неправильный» код не зальешь.

Aber ★★★★★
()
Ответ на: комментарий от Aber

А это как раз очень просто работает.

Простой пример, чтобы понятно было как себя вести во всяких таких ситуациях:

Например, ты работаешь наёмным работником, и внезапно, твой начальник, сообщает тебе, что до завтра надо сделать некую работу, ибо закзчику пообещали и всё такое.

Ответ должен быть простым и понятным: Когда заказчику обещали - у меня спросили? Нет. Я заказчку что-то обещал? Нет. Так что по всем понятиям это ваши личные с заказчиком проблемы и меня они никак не касаются. И хомячков пусть ко мне больше не присылают, я их в детстве отлюбил.

В общем, достаточно понять реальную субординацию в конторе и немного подумать.

Если ты чего-то стоишь, всегда надо считать, что это не тебя на работу наняли, а ты за деньги соизволяешь оказывать компании большую услугу.

А уж если ты сам себе хозяин, то это не заказчик тебе нужен, а ты заказчику. Потому что можешь решить его проблемы.

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 2)
Ответ на: комментарий от Aber

В жабе практически весь статический анализ идет в ide, можно настроить так, что ворнинг на «неправильный» код не зальешь.

Круто. :) Собственно, даже если бы я очень постарался, ещё больше обосрать бы жабу я не смог. :)

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

У сишников тоже есть статические анализаторы, только они медленные и работают на ci, конечно если процесс налажен. Скажи что не удобно отловить все еще в ide?

Aber ★★★★★
()
Ответ на: комментарий от Aber

Скажи что не удобно отловить все еще в ide?

Отловить что? Если постоянно пишешь, то синтаксические ошибки это такая редкость, что смысла никакого нету перекладывать это с комилятора/интерпретатора на какую-то overbloated хрень. Я за день больше времени потеряю на ожидании запуска какого-нибудь эклипса, чем на отлов синтаксических ошибок.

Я вообще пользовался IDE только когда идиот-производитель вкорячивал какой-нибудь программатор в эту IDE, чисто потому, что не было другого способа залить прошивку. IDE неудобна, она всегда ограничивает в использовании системы сборки, компилятора, линкера и всего остального.

Для работы вполне достаточно редактора с подсветкой синтаксиса.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

синтаксические ошибки это такая редкость

Я ж не про синтаксические ошибки говорю, про bad practice, потенциальные утечки и прочее, т.е. если нет мощного статического анализа, то обычно практикуют постоянный код ревью. Из сишных статически анализаторов я слышал только про проприетарный от PVS-Studio и открытый компилятор шланга.

Aber ★★★★★
()

и делает его очень солидная компания

одна такая солидная компания от использования явы уже загнулась - sun называется

Einstok_Fair ★★☆
()
Ответ на: комментарий от Aber

Я ж не про синтаксические ошибки говорю, про bad practice, потенциальные утечки и прочее, т.е. если нет мощного статического анализа, то обычно практикуют постоянный код ревью.

Так когда код пишешь надо головой думать, понимать что пишешь и к чему это в итоге приведет. Для простых языков типа C или лиспа какого статический анализатор нафиг не нужен, достаточно мозгов. То, что много кода пишется из-под палки макаками, не делает всякое говно типа статических анализаторов необходимым для написания нормального кода.

С другой стороны - что может написать человек, который даже не знает, как работает язык на котором он пишет? Это ж получается IDE за него код пишет, чтобы сочиняемое хоть как-то работало. Понятно, что такой макаке и платить можно как за работу по нажиманию кнопок, но в результате получается полнейшее дерьмо. Да оно работает, но исключительно через жопу.

Вот и выходит, что нет ни одного популярного гуёвого десктопного приложения на жабе, зато куча на ненавидимых жаболюбами сишечке и цпп. Потому что сишечка с цпп дают более эффективный и юзабельный результат даже без всех этих IDE cо статическими анализаторами и пр.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Отловить что? Если постоянно пишешь, то синтаксические ошибки это такая редкость, что смысла никакого нету перекладывать это с комилятора/интерпретатора на какую-то overbloated хрень. Я за день больше времени потеряю на ожидании запуска какого-нибудь эклипса, чем на отлов синтаксических ошибок.

Речь идет о варнингах типа тех, которые показываются по gcc -Wall. Они сразу подсвечиваются на соотвествующих местах в коде не выходя из текстового редактора.

В этом плане это действительно удобно. Но думается мне, такое можно и к ViM прикрутить при некотором желании. Банально в фоне пускать на измененный файл что то типа

clang -fsyntax-only -Wall /tmp/current.c
парсить вывод и выделять цветом прямо в исходнике. Правда тормозить это будет...

Точно так же в IDEA встроены свои инспекции по коду, дополняющие компиляторы. Это уже аналог PVS-Studio и подобных вещей.

TheKnight ★★★
()
Ответ на: комментарий от TheKnight

Речь идет о варнингах типа тех, которые показываются по gcc -Wall.

Да понял я.

Правда тормозить это будет...

Да не особо. на не очень шустрой машине - сотни миллисекунд на файло размером 50кил, что уже многовато для одного сырца. Если запускать только на смену строки - не сильно незаметно будет.

Другое дело, что это нафиг не нужно.

Stanson ★★★★★
()
Ответ на: комментарий от TheKnight

Банально в фоне пускать на измененный файл что то типа

Банально YCM, не?

anonymous
()
Ответ на: комментарий от nihirash

jb свою idea на жабафуфыкс делают.

Во-первых там правильно приготовленный swing (пруфы тут: https://github.com/JetBrains/intellij-community), а во-вторых — «фуфыкс» у тебя в штанах.

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

env ★★☆
()
Ответ на: комментарий от Stanson

Я вообще пользовался IDE только когда идиот-производитель вкорячивал какой-нибудь программатор в эту IDE, чисто потому, что не было другого способа залить прошивку. IDE неудобна, она всегда ограничивает в использовании системы сборки, компилятора, линкера и всего остального.

Типичное «я не пользуюсь — значит никому не нужно». Мысли, что не пользуешься потому что недорос, конечно, не возникает (конечно, как недорос, я же линуксоед, а значи самый умный).

В среде профессиональных разработчиков вопрос «нужна ли IDE?» просто не возникает. Потому что делать руками то, что лучше получается у машины — глупость. Впрочем у многих линуксоедов количество ручной суходрочки — показатель «крутости».

env ★★☆
()
Ответ на: комментарий от EXL

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

Можно также прицепить ява машину, как в случае с Electron'ом и таскать всё с собой. И лучше уж таскать java vm, чем хромого.

crutch_master ★★★★★
()
Ответ на: комментарий от Stanson

а даже извращение в виде электрона не кажется таким уж говном по сравнению с жабогуйнёй

Да ты фанатик отбитый.

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

И еще squirrelSQL и SQL workbench. Они такие себе, но можно работать с любыми [су]бд для которых есть jdbc драйвер (а они есть почти для всего).
Angry ip scaner еще на жабе вроде.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 3)
Ответ на: комментарий от crutch_master

squirrelSQL и SQL workbench

Интересно, я пользовался dbeaver-ce (java+swt). Еще из приложений написанных на java, помимо ide и баз, я пользуюсь freemind.

Aber ★★★★★
()
Ответ на: комментарий от Aber

Интересно, я пользовался dbeaver

Крутотень. Почему-то я его упустил из виду.

crutch_master ★★★★★
()
Ответ на: комментарий от Eva

Скажем на i5/8Gb будет тормозить?

Не будет.

На хосте с похожей конфигурацией моя поделка не тормозит, но когда я втыкаюсь в сетку с ноутом и подключаюсь к поделке для манипуляции с данными, начинаются фокусы. Да, ноут слабенький. Но, извините, покупать мощный ноут только для джавы - это слишком жирно.
И, кроме того, у поделки имеются некие архитектурные изыски, и gui на джаве только утяжеляет всю конструкцию.

Ну и куча других штук, не хочу их описывать. И лень, и сегодня мне несколько хреново на душе, слегка не до гуев.
Ту би ор нот ту би, короче.

Deleted
()

Кто пишет gui на яве?

Содомиты-наркоманы?

anonymous
()
Ответ на: комментарий от env

Во-первых там правильно приготовленный swing

Постами выше уже признал свою неправоту в этом вопросе, но почему то был уверен, что там JavaFX(возможно, из за рендеринга Markdown, который был поверх него сделан).

Касается не только этого типичного «фуфыкса», но и всех этих полуграмотных свидетелей тормозов жавы, которые ничего сложнее хелооворлдов не писали и понятия не имеют о производительности языков.

Я где то написал, что сама джавка мегатормоз? Или что не стоит писать совсем на ней?

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

Я вот, сейчас не могу назвать ни один правильный и прямой способ делать гуй. Вот серьезно. Они все, относительно друг друга, в чем то компромисны.

nihirash ★★★
()

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

robby
()
Ответ на: комментарий от ertgblasd

* многие забывают, что java gui написан на целиком java, и поэтому отзывчивость хромает. нужно это для реализации фичи «собрали jar-ку один раз и она работает везде». иначе начались бы типичные сношения с версиями библиотек, битностью, перепаковкой всего этого под разные платформы. напишите gui тулкит на своем любимом лиспе, хачкеле, питоне, и он точно так же будет иметь фиговую отзывчивость, а в случае с питоном будет просто слайдшоу

Чушь! CAPI из LispWorks довольно быстро реагирует. Приложение запускается очень быстро.

В случае с java две вещи возникают: (1) медленный старт самой JVM (в лиспе нативный код); (2) swing, ну, просто очень неоптимально написан

dave ★★★★★
()
Ответ на: комментарий от robby

Есть пруф, что swing стал быстрее по сравнению со своей самой первой версией swing, у которой демка (Swing2Set или как-то так) на Pentium II с памятью 32 Мб грузилась минуты полторы-две. Сейчас быстрее, однако, но все равно это ничто по сравнению с мгновенным стартом гуишных приложений на лиспе

dave ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.