Будущее разработки GUI в Java?

Учитывая, что

  • Sun/Oracle решили не развивать Swing дальше после того, как они "изобрели" JavaFX
  • JavaFX на самом деле не работает, и некоторые считают это ошибкой уже
  • не совсем независимый от платформы характер SWT, ручная задача по утилизации элементов GUI и необходимость связывания библиотек, специфичных для платформы.

есть другой выход?

Если я хотел бы сделать разработку графического интерфейса на JVM

  • с хорошим API (Swing и SWT неплохие, но они тоже не очень хорошие).
  • который "чувствует" отзывчивость (по-прежнему проблема сегодня с Swing и SWT, несмотря на утверждения, что это решено.)
  • который не будет устаревшим через несколько лет какое решение я должен сделать?

Имеется ли даже третий вариант или возможность его использования в будущем?

Опция

  • который является быстрым и отзывчивым (Not Swing идеология "Если это не быстро, это ошибка разработчика" )
  • с естественным внешним видом
  • с единой библиотекой, которая работает на всех платформах

Является ли это реалистичным?

Спасибо!

=========

Чтобы уточнить: если мне нужно запустить новый программный проект на JVM, существует несколько существующих опций, таких как использование SWT или Swing, с использованием Swing с сторонними библиотеками, такими как SwingX, JIDE, JGoodies, Flamingo или с использованием рамок приложений как платформа Netbeans или Eclipse RCP. Есть ли поддерживаемый/предложенный способ, который ослабляет боль, обычно связанную с разработкой графического интерфейса Java?

Ответы

Ответ 1

Вы не найдете объективного ответа на этот вопрос, только личные предпочтения и варианты.

SWT

Мое личное предпочтение - SWT. Я начал использовать его, когда Swing был плохим вариантом. SWT является "просто" слоем поверх собственных API окон, и, таким образом, приложения, написанные с помощью SWT, выглядят как написанные пользователем приложения. Они также могут быть испорчены. Никакой API никогда не будет защищен от плохих разработчиков. Производительность так же быстро, как может быть в моем опыте. Если это не так, есть другой способ его реализации, где он будет.

SWT API очень низкий уровень, который делает внедрение базового материала неожиданно утомительным, но, к счастью, наиболее типичные способы его решения могут быть решены с помощью JFace, что улучшает ситуацию. И когда вы используете API некоторое время, вы накапливаете свои собственные классы использования. Вы можете стать довольно быстрыми в реализации инструментов SWT.

Поскольку SWT дает вам только основы, вам нужно MigLayout и Nebula, чтобы выжить. Вам может понравиться Glazed Lists.

Qt Jambi

На самом деле, я бы хотел включить еще один вариант, кроме SWT и Swing для вас: Qt Jambi. Но Nokia отказалась от этого, и теперь он "поддерживается сообществом с открытым исходным кодом". Поэтому я не знаю, что "не устаревает через несколько лет".

Тем не менее, меня волнует эта текущая дискуссия . Некоторые люди написали реализацию SWT с использованием Qt Jambi в качестве "родного" API. Они пытаются понять, как внести свой вклад. Наличие Qt в качестве опции может включить вашу "единую библиотеку, которая работает на всех платформах" для SWT в один прекрасный день, хотя я не буду рассчитывать на нее в ближайшее время.

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

Качели

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

В наши дни внешний вид приложений Swing стал довольно хорошим, но вы не обманешь себя. Кроме того, производительность кажется действительно хорошей в новых и хорошо сделанных Swing-приложениях, но опять же, это только из моего ограниченного представления как пользователя.

Очевидно, что для Swing больше сторонних расширений, чем для SWT - просто выполните поиск Google. (Но опять же, если вы терпите боль от обучения Eclipse RCP, вы получите огромную, интересную инфраструктуру. Это не говорит о виджетах, но, например, EMF или RAP. Я не человек Eclipse RCP - у меня никогда не хватило терпения для этого...)

Действительно большим преимуществом для Swing, если вам нравится этот материал, является Matisse, графический дизайнер Netbeans. Кстати, Qt также хорошо сделал GUI-конструктор.

Резюме

Если вы планируете длительный срок, я не вижу больше вариантов, чем SWT или Swing для разработки графического интерфейса в Java. Оба они достаточно хороши, чтобы удовлетворить большинство потребностей, если вы проводите достаточно времени. Но они не идеальны. Вы всегда будете завидовать людям, использующим другие языки для своих виджетов, скорости внедрения, инструментария... Если вы не привязаны к Java, вы можете даже предпочесть Flash или Qt.

Ответ 2

Ответ предпочитает качать, я думаю.

  • с 1.4 есть большой прогресс на awt (солнце делает это, потому что java fx need awt, к счастью)
  • с 1,5-кратным прогрессом в управлении потоками (SwingWorker и concurrents things)
  • свинг отличный, отзывчивый (что проблема с ошибкой разработки?), native l & f и т.д.
  • есть отличные библиотеки, такие как swingx, trident и т.д., и платформа, например netbeans.

Конечно, это зрелая технология (немного старая), но я ничего не знаю. Это будет cobol разработки GUI: -)