Які недоліки має рамка GUI Java Swing? [зачинено]


11

Я використовував Java Swing для деяких настільних додатків. Але я не використовував так багато інших графічних інтерфейсів, щоб не міг їх порівнювати.

З Swing, безумовно, є деякі речі, які мені не подобаються, але це майже з усім.

Які найбільші недоліки в рамках GUI Java Swing?


2
Питання викликає інтерес. Мені теж цікаво, які є сили та слабкі сторони Swing, порівняно з QT, GTK, SWT, Winforms, какао тощо. Можливо, вам слід перефразовувати заголовок, щоб попросити порівняння , а не недоліки (які, як правило, дають не аргументовані відповіді)
barjak

Відповіді:


3
  1. Ви повинні десь встановити java. Це справедливо для всіх каркасів GUI, звичайно, але java сприймає 2-тонну горилу. Навантаження стає краще, але ці ранні дні яблучних яблук відмовили багатьох людей. Якщо вам потрібен лише для запуску однієї програми, це потребує великого обслуговування, щоб підтримувати його в курсі патчів безпеки тощо. У всіх має бути Flash для youtube, .Net Framework встановлюється поза кадром, і для всіх увімкнено JavaScript у своєму браузері. Ява, як правило, зайва річ.

  2. Незважаючи на те, що це сортування запису один раз, запустіть будь-де, ви все ще виявите, що в Mac OSX немає такої новомодної речі, яку ви хочете використовувати, або один клієнт відмовляється модернізувати свій мандраговий linux минулий JRE 1.4.

  3. Як диявол, ви повинні думати про різьблення. І це хитро, оскільки можлива багатонарізка, але розмахуючи видом, ніби все це однониткове. Але тоді половина бібліотек, які ви приваблюєте, мають певну ступінь багаторівневої нитки і припускають, що ви знаєте про EDT invokeLater і це примушує багато уроків нелегко.

  4. Досвід Swing не може легко передатись іншим розробникам інтерфейсу. Наприклад, якщо ви сидієте за таблицями в .css, ви збираєтеся повністю заповнити Jtables, рендерів, редакторів тощо.

Загалом, головна проблема Swing полягає в тому, що він не виправдав те, як продається. Це абсолютно адекватна технологія для багатьох випадків використання, але ті перші 5 чи 6 років були сповнені жахливих реалізацій та жорстоких аплетів. А тепер це стара технологія на Web 3.0 чи будь-що інше.

Все, що сказано, мені подобається Swing і думаю, що профі в цілому переважують мінуси, коли вам потрібно те, що він пропонує. Однак веб-досвід настільки всюдисущий зараз, що багатьом користувачам буде легше провести час з веб-додатком, ніж самий впорядкований дивовижний додаток. І там є дивовижні програми Swing, але вони, здається, не є основними.


1
Я в тій же ситуації, що і в ОП: я знаю Swing і мене цікавить порівняння його з іншими тактиками GUI. Для мене пункти 1, 2 і 4 не стосуються питання. Отже, я хотів би відреагувати на пункт 3: чи можете ви навести кілька прикладів багатопотокових наборів інструментів GUI? Дякую.
barjak

2
@barjak: Багатопоточний GUI - це помилка. Єдине, про кого я знаю - це стара Java AWT. Але вони вчилися на помилках, коли створили Swing, який є єдиним потоком, як і всі сучасні рамки GUI.
Йонас

@Jonas Робити розробника думати про багатопотоковість часто є помилкою, але ви не можете запускати анімацію, здійснювати RMI-дзвінки або робити інтенсивний розрахунок (пам’ятайте, що це жирний клієнтський інструментарій, пам’ятайте) без певної ступеня багатопоточності.
Стів Джексон

3
@Steve: Це правда. Але ви повинні НЕ робити RMI викликів і інтенсивні обчислення в GUI-потоці. Такі речі слід робити у фоновому режимі, як у Swing та WPF.
Йонас

@barjak - Форми Windows, MFC, SWT, pyQT, Juce .... Мені складніше думати про ті, які не мають багатопотокових передач. Однак, як правило, діють ті самі правила, ви не можете торкатися ваших графічних інтерфейсів, крім потоку, який їх створив.
Стів Джексон

2

Йонас,

Swing узагальнює основу вашої базової архітектури, щоб забезпечити вам нейтральну роботу користувачів на платформі. Єдиним важким компонентом (надається ОС) є контейнер JFrame, а решта в значній мірі обробляє Swing takeit. З іншого боку, AWT просить операційну систему намалювати всі його компоненти інтерфейсу, це означає, що це швидше в багатьох способах, як ви використовуєте рідні компоненти інтерфейсу, характерні для ОС. SWT намагається досягти середнього рівня, для різних стандартних компонентів, таких як кнопки та мітки (які доступні на більшості ОС), він дозволяє ОС працювати з тими, а також для інших спеціалізованих компонентів, SWT буде працювати з створенням для вас.

Коли було сказано, я можу окреслити недоліки.

(1) Оскільки інструментарій створює та надає вам компоненти, а не запитує ОС, ви не можете скористатися швидкістю вбудованих компонентів, що надаються ОС.

(2) Користувацький інтерфейс не є особливо привабливим, оскільки він виглядає чужорідним для більшості платформ ОС, що стосується того, яким виглядом і виглядом ви користуєтесь.

(3) Деякі з менеджерів макетів, тобто GridBadLayout тощо, можна краще спростити. Я втратив підрахунок кількості проектів, над якими працював, де люди загорнули GridBagLayout в якийсь замовлений код, щоб отримати більш простий спосіб його використання.

Я б радив вам написати просту програму в AWT, Swing та SWT і порівняти підходи до розробки кінцевого продукту між ними, а потім переглянути різні коментарі інших розробників і вирішити, який із них найкраще працює. Я багато років працював із Swing, і я використовував неприязний SWT, але я зрозумів, що Swing набагато складніше, ніж це потрібно, порівняно з іншими рамками.


4
Swing - це прискорений графічний графічний процес , що є рідним фреймворком не часто, тому я фактично думаю, що Swing швидше Це також стратегія, яку має WPF для Windows, але не WinForms (лише для деяких версій Windows). Як "[потворно] ... що стосується того, як виглядаєш та відчуваєш, що ти використовуєш" правдою, коли це дуже налаштовано, або ти можеш використовувати власні платформи LaF? Я погоджуюсь, що менеджери компонування дійсно погані
Йонас

Джонас, саме цей "настроюваний" аспект гойдалки робить його складнішим порівняно з іншими рамками. Якщо ви спробуєте відмовитися від можливостей, які надає ОС, то ви втратите багато переваг, які вона пропонує. Найперша версія Swing була кошмаром, що призвело до створення SWT в першу чергу. Пізніше Swing було вдосконалено набагато швидше, і ви отримали такі класи, як SwingUtilities, які пропонують кращу підтримку інтерфейсу для GUI.
Спустошена планета

Потворне може бути неправильним словом; інопланетянин може бути кращим словом, оскільки зовнішній вигляд не зовсім такий, як зовнішній вигляд користувальницького інтерфейсу, з того, що я пам’ятаю, у вас є Java, мотив, метал та кілька інших, але загалом вони не є ' т все, що гарненько.
Спустошена планета

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

Я думаю, виходячи з того, що ви сказали, ви використовували більш нову версію Swing, але коли вона з'явилася вперше, люди виявили сильну неприязнь до неї, а тим більше, коли намагалися забезпечити аплети на основі Swing. Існує багато історії з фреймворками інтерфейсу, розробленими на Java, і це цікаво прочитати, якщо ви заглянете в нього.
Спустошена планета

-2

Swing повільний (погана продуктивність), важкий / незграбний у використанні (порівняно з багатьма іншими), і він виглядає не дуже добре, насправді дуже погано, на деяких платформах.


5
Я знаходжу це швидко (він має прискорення графічного процесора, порівняно з багатьма рідними графічними інтерфейсами), тому я не можу погодитися з продуктивністю або у вас є приклади? Наскільки важко і незграбно порівняно з іншими рамками? Я погоджуюся, що це виглядає не так добре, але його можна налаштувати так, щоб виглядати як рідні програми або використовувати користувацький LaF.
Йонас

Це виглядає більш-менш завжди не рідним у GTK. Що я чув, це те, що, оскільки він покладається на Java 2D для малювання віджетів, це повільно, але мені нічого не доводити. І Qt, і GTK мені здаються менш незграбними, але смаки відрізняються.
Анто

Ах, це може бути гірше на деяких платформах. Я використовував його лише в Windows, де це GPU прискорено і дуже швидко.
Йонас

6
Люди все ще скаржаться на те, що щось не виглядає рідним, використовуючи все більше речей браузера (подумайте: stackexchange), де кожна сторінка виглядає по-різному? А швидкість? Більшу частину часу користувач чекає інтерактивну програму GUI.
користувач невідомий

2
Більшість "модних" програм вже не виглядають рідними. Гойдалка закінчується не кращою чи гіршою в цьому плані. Продуктивність нашого додатка 50-класових гойдалок (жирний клієнт) здається нормальним. Набагато простіше замахнутися на точку, коли не виходить з ладу, ніж "рідні" програми.
Тім Вілліскрофт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.