Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/37: Рейтинг темы: голосов - 37, средняя оценка - 4.76
1 / 1 / 5
Регистрация: 22.07.2007
Сообщений: 366

Графический интерфейс на Java. Есть ли в них смысл ?

02.07.2010, 08:55. Показов 7446. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот смотрю что люди на форме где то 40 процентов вопросов
задают по вопросам разработки графического дизайна на
яве. Уже работаю не первый год и работал не только на
винде но видел очень мало удачных примеров реализации
явоского графического интерфейся. Я не имею ввиду
веб-прилажения где ява работает прекрасно. Не хочется
возвращаться к этой теме но уже много раз обсуждали
то что Java IDE все немного тормознутые. А ведь их
пишут лучшие из лучших програмистов. Я не хочу
что бы меня упрекнули в том что я ругаю яву. Наоборот
я её очень люблю но server side которая работает
на Application Server. А вот насчёт графического
интерфейса. Есть ли в нём смысл и есть ли у него
будующее ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.07.2010, 08:55
Ответы с готовыми решениями:

Java графический интерфейс
Вопросы: 1.) Что такое Фрейм, панель, слой? 2.) Для чего используется, так называемая панель? 3.) Как правильно пользоваться слоями?...

Графический интерфейс (GUI в Java)
Всем привет, посоветуйте мне какую книжку читать для изучения GUI в Java а то книга Сьерра К. Бейтс Б. как-то не то, старое слишком там...

Графический интерфейс java приложения
Доброго времени суток. Недавно начал изучать язык java. Работаю в платформе netbeans. Вот такой вопрос друзья. Как в мобильном...

20
0 / 0 / 0
Регистрация: 05.04.2009
Сообщений: 78
04.07.2010, 10:13
а на чем же еще java программисту писат графический интерфейс
0
1 / 1 / 2
Регистрация: 07.01.2010
Сообщений: 128
04.07.2010, 15:12
Я вот пишу GUI на свинге. Проблемы конечно есть, но отсутствие смысла среди них вроде не числится ;-) Конечно, невозможно написать гуй на Swing так, чтобы он конкурировал по производительности с писанным на VC, но я, к счастью, разрабатываю не среды разработки, а АРМ, а в них бОльшая часть работы (читай, большая часть задержек) делается на сервере.
0
0 / 0 / 2
Регистрация: 08.04.2009
Сообщений: 271
04.07.2010, 15:27
Точку в этом деле ставить по-моему рано. Ее можно было бы поставить, если бы HTML формы совместно с браузерами закрывали вопрос о клиентском приложении, однако это не так. Если для внешних клиентов HTML формы вполне достаточно (так как, по определению, эти клиенты мало что могут), то построить 'АРМ' для Интранет и сотрудников фирмы выполняющих сложные действия с помощью HTML форм кажется невозможным. Если Вы это все-же сумеете сделать, возникает вопрос контроля ввода пользователей (как минимум). В случае HTML формы Вы можете либо проверять ввод с помощью Java Script, либо выполнять проверки на сервере приложений. Во втором варианте, когда пользователи в массовых количествах вводят сложные данные это решается с повышением нагрузки на сервер приложений и повышением сетевого трафика.

Что касается фразы 'А ведь их пишут лучшие из лучших програмистов.' Я как-то, по нужде, попытался посмотреть коды Oracle Enterprise Manager. Почему-то они мне не понравились. Они пишутся не одним человеком, а командами. Пишутся так, чтобы быть reusable в чистом виде. Такое впечатлеие, что основная забота не об эффективности, а о повышении скорости разработки и повторном использовании. Не всегда разумно используется наследование.

В том то и дело, что вопрос - каким должен быть клиент Интранет, в отличие от задач сервера приложений и сервера базы данных, остается открытым. Если нам web приложение нужно только для работы с внешними клиентами, то можно ограничится HTML формами. Однако очень заманчиво построить всю работу организации однородным образом. И тут мы натыкаемся на ограничения HTML форм.
Так что вопрос этот рано сдавать в архив.
0
1 / 1 / 2
Регистрация: 07.01.2010
Сообщений: 128
04.07.2010, 16:26
Ну, раз уж пошла речь о 'сдаче в архив' вопроса о GUI, то тут нужно сказать, что он будет 'сдан в архив' только вместе с HTML и JavaScript. Обе эти технологии для программирования слабо пригодны. Все GUI с более или менее серьезной функциональностью, которые мне приходилось наблюдать, либо сразу были сделаны на апплетах/Swing&JNLP, либо начинались как HTML&JS приложения, а потом были переведены на Swing тем или иным способом.

Очевидно, что Swing - далеко не идеальное решение для сетевых приложений, но лучшие технологии (например, X-win) сейчас не популярны.
0
1 / 1 / 5
Регистрация: 22.07.2007
Сообщений: 366
04.07.2010, 18:49  [ТС]
Свинг тормозной. Вообще скорость всего что касается графического интерфейса на яве лично меня не устраивает. А насчёт АРМ через веб приложение. То тут как в анекдоте про кошек 'Вы не любите кошек ? вы просто не умеете их годовить'. В основном весь ввод данных это заполнение форм. А генерация отчётов через веб приложения работает прекрасно. Едиснтвенное с чем я согласен это валидация данных. Частично её решает стратс через java-script или server-side код. Но в принципе в плане загрузки сервера это не такая уж большая проблема. Железо нынче дешёвое и купить пару неплохих серверов, объеденить их в кластер стоит того что бы не мучить конечного юзера жуткими(именно жуткими) задержками при работе с Java GUI (не web based). Конечно если у пользователя P4-2800 MultiThreading то ему уже наверно без разницы. Но если это обычные бухгалтер и у нег PII-400 (по советским меркам ещё очень приличный компьютер да и по американским такие же стоят у большинства клерков) - так вот для такого компьюетра Swing или AWТ это смерть.
0
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
04.07.2010, 22:21
Про смерть, это сильно. У нас AWT аплет нормально работает. Свинг действительно тормозит (по слухам). Мне кажется, впечатление о 'чудовищных' тормозах возникает потому, что многие используют готовые универсальные пакеты (тот же свинг). И если на серверной стороне готовые решения работают нормально (типовые задачи, хорошо отлажено и можно увеличить скорость за счет железа), то клиентские приложения всегда более индивидуальны. Поэтому универсальные пакеты в GUI труднее применять. Я могу предположить, что GUI чаще чем сервер программируют с 'чудовищными' ошибками.
0
1 / 1 / 2
Регистрация: 07.01.2010
Сообщений: 128
05.07.2010, 10:34
To simplepilot:
Отвечаю по пунктам:
1. Не согласен, что GUI - это только заполнение форм. Существует немало задач, где гуй должен вразумительным (и незамедлительным) образом реагировать на значения, вводимые в какие-то поля. Эта реакция может заключаться не только в валидации, но и, например, в изменении внешнего вида формы. Вспомните хотя бы property panes. Широкое распространение wizards в последнее время вызвано как раз тем, что в HTML/JS все это сделать малореально. Но wizard далеко не всегда удобен.
2. Валидация данных через JS код - это принципиально неверный подход, поскольку JavaScript - принципиально неверный язык. Хотя бы из-за отсутствия контроля типов. Опять же, хотя бы из-за невозможности хоть как-то протестировать код до выполнения (вы где-нибудь видели unit tests для JS кода?). С другой стороны, валидация на сервере - обязательная вещь, но недостаточная. Основная причина в том, что верх изуверства - заставлять оператора набить целую форму, послать ее на сервер, и только после этого объявлять, что самое первое поле было заполнено неверно и из-за этого все нужно переделать.
3. На самом деле говорить о том, что мощный сервер дешевле умеренно толстых клиентов (всегда ?) неправомерно. Когда пользователей много, и сервер выполняет интенсивные вычисления (не такая уж редкая ситуация), покупка гранд-серверов становится накладной. Кластер многопроцессорных RISCов старших моделей от любого вендора легко потянет на миллион баксов. Скольким бухгалтерам можно сделать upgrade рабочих станций за эти деньги? Не даром ведь никак не желает умирать концепция распределенных вычислений, несмотря на все присущие ей проблемы.
4. GUI на Swing действительно получается довольно неторопливый, и этому есть две основные причины:
4.1. Архитектура Swing. Она обладает большой избыточностью, и это ведет к тормозам. Если уж совсем невмоготу, можно этот вопрос решить принципиально: Swing - не единственная GUI библиотека для Java. Для апплетов можно на худой конец пользовать AWT, для приложений есть Eclipse. Рискну предположить, что существует и еще что-нибудь.
4.2. Стиль прогрммирования. Java вообще провоцирует неаккуратное программирование. Это вызвано тем, что есть garbage collector, collection framework, и другие универсальные, удобные, но неэффективные фишки. В результате народ часто создает объекты там, где можно было бы обойтись простыми типами, memory allocation становится самой частой операцией в программе, приведение типов - вообще чуть ли не в каждой строке. Немалые иерархии классов создаются на всякий случай, совершенно без реальной необходимости. And on, and on... Я мог бы здесь привести примеры кода, которые можно было бы посчитать приколом, если бы они не работали в production. К сожалению, таких примеров полно.

Резюме: Вы не любите кошек? Вы просто не умеете их готовить!
0
0 / 0 / 2
Регистрация: 08.04.2009
Сообщений: 271
05.07.2010, 12:04
Маленький личный опыт имею по созданию GUI со Swing.
Состряпал небольшую универсальную форму для запроса из базы даных, при этом описание расстановки полей формы хранится в базе данных. В этом же прилижении имеется самописаный графический редактор, в котором рисуются квадратики и полилинии, а коррдинаты точек 'просовываются' в базу. На машине с P-IV и 512 памяти запускаются одновременно : база данных Oracle, JDeveloper (а эта штука совсем не хилая по объемам), а также запускаю приложение и выполняю редактирование объектов - Drag & Drop и т.п. Никаких тормозов не заметил. Правда я принципиально не использую монстров верхнего уровня типа JTable и переписал кое-какие классы моделей документов, а также Layout Manager'ов, но это непринципиально.
0
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
05.07.2010, 18:25
На rsdn.ru как-то прозвучал крик души - у людей была таблица на AWT и она летала. Потом поступила команда перейти на свинг, знаменитый JTable. Все стало умирать, особенно при большом количестве строк. Однако большинство учебников раздел GUI начинают так: вот есть устаревший 'тяжеловесный' AWT, а мы сейчас подробненько рассмотрим современный 'легковесный' Swing.
0
1 / 1 / 5
Регистрация: 22.07.2007
Сообщений: 366
05.07.2010, 18:31  [ТС]
Ну тут как я понимаю дело не в том что Свинг легковесный а в том что свинг имеет больше стандартных графических элементов (widget). AWT как изветсно ограничена набором графических элемнтов которые могут быть отображены самой простой поддерживающей Java операционной системе. Я когда то работал с AWT написал игру Lines в виде аплета и мне понравилось. Простенько но быстренько. А Swing я никогда не трогал но слышал что там могут быть тысячи (!) слушателей (listener) различных событий и все они требуют для себя память.
0
0 / 0 / 2
Регистрация: 08.04.2009
Сообщений: 271
05.07.2010, 19:05
Извините по-поводу Listener'ов.
Если генерить их в GUI'вой графике, то Вам накидают кучу анонимных классов так, что мало не покажетя. А я ручками (один раз) прослушивателем сделал один объект (контроллер) и регистрирую его у всех порождающих события, а кто порождает события определяю по коду команды. Если аккуратно и со смыслом, то и Swing'и сгодятся.
Когда года три назад у меня на курсе по Oracle Александр Цибал флегматично сказал слушателям : поставьте 256 на клиента и Java будет нормально работать, все слушатели 'заржали' - тогда 256 на клиента было смешно. Завтра и 512 на клиенте будет не смешно, тогда может и JTable сгодится.
0
1 / 1 / 5
Регистрация: 22.07.2007
Сообщений: 366
05.07.2010, 19:08  [ТС]
Кстати немного офтопик. А этот Oracle JDeveloper. Как он вообще ? а то они в последнее время активно его продвигают. Интересно услышать мнение людей которые с ним работали.
0
1 / 1 / 2
Регистрация: 07.01.2010
Сообщений: 128
05.07.2010, 19:58
to simplepilot:
На самом деле проблема не в том, что каждый listener требует память, а в том, что каждое событие является объектом и требует память. Если учесть, с какой частотой они генерируются, например в том же JTable, получается действительно безобразие. И самое интересное, что это реально не нужно: асинхронная обработка событий (что-нибудь типа message system) в Swing отсутствует.
0
0 / 0 / 2
Регистрация: 08.04.2009
Сообщений: 271
06.07.2010, 11:26
to simplepilot
Файл jdev905preview.zip (это последняя версия JDeveloper), который Вы можете скачать с www.oracle.com имеет вес в 250 Mб.
При развертывании никой инсталляции, настроек и переменных окружающей среды не требуется. При деинсталляции надо просто вытереть его из директории. Изначально он был построн по образу и подобию JBuilder, потому на него и похож. В его состав входит сервер приложений OC4J, прообразом которого явился сервер Orion. Так, что Вы можете смело стряпать в нем сервлеты и EJB. Масса 'Мастеров' - на каждый чих. Мне нравится простота создания разных архивов и доставка их на сервера приложений. Графическое редактирование не идеально, но редактор текстов и трассировщик неплохие. Имеются подсказки (например ошибок) уже на этапе набора текста, если кого-то это раздражает можно отменить. Легко встраиваются новые библиотеки. 'Мастера' также обеспечивают развертывание приложений на серверах приложений (не на всех, естественно). В последние версии встроена поддержка Ant и UML диаграмм - красота неописуемая ! Имеется еще целая куча 'прибамбасов', до которых у меня руки не доходят.
Я читаю курсы на этом инструменте и поэтому вынужден его использовать. Однако полагаю, что несмотря на то, что он 'тяжеловат' - во всем остальном очень неплох.
0
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
08.07.2010, 01:06
Вдогон по поводу медленности. Попробовал наш AWT апплет в браузере при включенном джава плагине. Скорость просто открытия всяких фреймов заметно упала по сравнению с режимом без плагина. Можно было бы советовать клиентам отключать плагин, да не у всех уже есть встроенная джава.
0
0 / 0 / 0
Регистрация: 11.02.2010
Сообщений: 111
11.07.2010, 22:19
Согласен, Java 2D работает медленно, сам писал лабы по маш графика на ней - видно оптимизация под win API не особо крутая. Но я не соглашусь, что Swing будет медленный для приложений уровня предприятия (ERP). Как показатель - Oracle Forms Developer 9i создает приложения как Java апплеты, а Forms Developer позиционируется как средство поддержки Oracle Application.
0
0 / 0 / 0
Регистрация: 11.02.2010
Сообщений: 111
11.07.2010, 22:21
Вот когда Oracle Application будет написан на .NET, тогда я поверю, что Java бесперспективна.
0
0 / 0 / 5
Регистрация: 16.07.2010
Сообщений: 79
16.07.2010, 13:08
Вот пример полного комплекса написанного полностью на Java (за исключением драйверов оборудования). У них есть демо версия которую можно посмотреть (если не жалко трафика).
http://www.aamsystems.com/production/programms/lyrix/
Я запускал клиента на Celeron 1300 256Мб и никаких тормозов не наблюдал (если быть честным то подтормаживали графические планы с большим количеством объектов, но тут виноват и сервер т.к. он запускаля на значительно более слабой машине), а по нынешним меркам это весьма слабая машинка.
0
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
29.07.2010, 23:23
Обнаружил удивительную для себя вещь. AWT фреймы в апплете быстро открываются в браузере с явой 1.1 и в десятки раз медленнее с 1.4 Оказалось, что на этапе инициации тормозит операция add, которая добавляет панели в видимый фрейм. Решение проблемы оказалось простым - создаем фрейм и делаем его setVisible(false), потом добавляем все компоненты (которые тоже невидимы). Только после этого делаем фрейм и все его компоненты видимыми. Теперь все летает. Если сначала открытие фрейма занимало 3-5 сек, то теперь 100-200 мсек.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.07.2010, 23:23
Помогаю со студенческими работами здесь

Простой графический Java интерфейс
Доброго времени суток, недавно начал изучать GUI фреймворки, остановился на JavaFX. Вопрос простой, как вывести результат работы...

Графический интерфейс java-приложений. Swing и AWT
Создать апплет со строкой, движущейся горизонтально, отражаясь от границ апплета и меняя при этом свой цвет, на цвет выбранный из...

Есть ли в Intellij IDEA 15 графический интерфейс?
Буквально неделю назад начал изучать java. Скачать Intellij IDEA 15 Community, и хотел бы у вас спросить, а есть ли в ней графический...

Как в Visual Studio Code компилировать java файлы через графический интерфейс?
Как можно по простому добавить эту возможность? Не хочу лезть в дебри редактора, чтобы вручную задавать в нём команду на компиляцию.

База данных "учебный план специальности". GUI. Графический интерфейс. Пользовательский интерфейс
Всем привет. Свалилась на меня, значит, курсовая по прологу. Все бы ничего, да реализовать ее надо через графический интерфейс. На турбо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru