Подтвердить что ты не робот

Какую инфраструктуру графического интерфейса Java выбрать сейчас?

Какой графический интерфейс/библиотека GUI вы бы выбрали, если бы вы начали новый проект сейчас или в ближайшем будущем?

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

Я был счастливым пользователем swing, но Sun, похоже, нажал swing на устаревание, нажав Javafx, который еще не готов к прайм-тайму.

Там также SWT, но похоже, что он имеет проблемы с Linux.

Какова ваша библиотека/рамки Gui?

EDIT: Sun отменил проект swingx. Из комментариев на форуме http://swingx.dev.java.net кажется, что большинство ресурсов Sun, которые ранее работали над ядром, теперь разрабатывают JavaFx полный рабочий день.

4b9b3361

Ответ 1

Я думаю, что, несмотря на плохое управление Sun, Swing все еще отличная рамка. Вы можете многое сделать с этим, особенно если эта "партия" включает персонализированные элементы управления пользовательского интерфейса. Если вашему приложению нужен фирменный LAF или даже несколько сложных пользовательских элементов управления здесь и там, Swing - именно то, что вы хотите.

На другой стороне монеты я очень люблю SWT. Он получает плохой рэп, потому что все привыкли считать, что IBM-уловка перехватила Java, но это действительно просто еще одна инфраструктура пользовательского интерфейса, которая вполне дополняет Swing. Я бы не советовал использовать SWT для суперкомплексного графического рендеринга (в частности: композитинг) или для создания действительно нетривиальных пользовательских элементов управления, но для всего остального это действительно денди. Сам API получает много критики из-за таких вещей, как уверенность в бит-масках и управляемый пользователями цикл отправки событий, но большинство из этих вещей довольно прозрачны, как только вы привыкнете к ним. Сами компоненты намного проще, чем Swing (с точки зрения расширяемости и тому подобного), что означает, что API может быть пропорционально проще. Я действительно могу запомнить, как создавать и заполнять таблицу в SWT; тогда как я не думаю, что когда-либо занимался этим в Swing без помощи Google.

Самая большая проблема SWT прямо сейчас - стабильная версия зависит от Carbon в Mac OS X. Это означает, что приложения SWT могут запускать только 32-разрядные версии на Java 5 (или 32 бит на SoyLatte). Что касается других платформ, SWT феноменальна для Windows (Vista и XP) и почти так же хороша в GTK Linux. У меня нет (в последнее время) каких-либо проблем с SWT в Linux, поэтому я немного удивлен, что вы упомянули бы это как больной.

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

Ответ 2

Прямо сейчас я использую SWT или Qt (Jambi).

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

Между SWT и Qt я предпочитаю использовать Qt, потому что это очень зрелая и мощная инфраструктура, созданная людьми, которые знают, что они делают (ну, в большинстве случаев:)) и SWT, если лицензия на новый проект не совместим с Qt's.

Ответ 3

Я все еще использую Swing и буду продолжать делать это, пока он больше не будет поддерживаться. Спасибо, что подняли голову над Джавафсом, теперь я должен изучить этот.