Есть ли лучшая инфраструктура Java-приложений, чем Swing?
Я планирую работать над некоторыми хобби Java-проектами. Я сделал несколько небольших проектов, поэтому я знаком с самим языком и строю графический интерфейс с Swing. Я хотел бы сделать свою работу немного менее специализированной и, возможно, найти некоторые инструменты, которые могут быть полезны в реальном мире.
NetBeans теперь поставляется в комплекте с платформой Swing Application Framework, которая представляется очень полезным инструментом. Это помогает преодолеть пропасть между знанием того, как создать JFrame и как эффективно его использовать в контексте более крупного приложения. Проблема в том, что есть большие части API, полностью недокументированные, и практически нет документации о том, как его использовать. В FAQ есть только два вопроса, списки рассылки практически мертвы, и я даже не могу сказать, активно ли развивается проект или он был заброшен. Мне удалось начать работать с ним, основываясь в основном на двухлетней презентации JavaOne, размещенной на домашней странице проекта.
Есть ли лучшая альтернатива? Есть ли другой инструмент / библиотека /API, который делает то же самое немного более дружественным для новичка способом? Обратите внимание, что в настоящее время я планирую разрабатывать настольные приложения и не ищу J2EE-фреймворки, такие как Spring и Hibernate.
5 ответов
Основные принципы создания хорошего рабочего стола одинаковы для создания веб-приложений или приложений для предприятий. Таким образом, ядро Spring или других сред, таких как OSGi или PicoContainer, можно легко использовать за пределами J2EE. Например, Eclipse использует OSGi в качестве своей внутренней структуры. Первоначальное использование шаблона Model-View-Presenter (MVC) было для графических виджетов Smalltalk.
Фактически, для себя я впервые нашел и работал со средами "IoC" (задолго до весны) именно потому, что искал структуру и принципы организации для разработки приложений для настольных компьютеров.
Обновление на RCP
Я вижу, что некоторые люди рекомендуют Eclipse RCP или Netbeans. Я провел довольно много разработки для Eclipse RCP, и для некоторых классов приложений это здорово. Тем не менее, кривая обучения очень крутая, и набор функций может быть намного больше, чем вам нужно. Имейте это в виду для любой структуры, которую вы исследуете.
Для более полных структур:
Платформа NetBeans, возможно, http://www.netbeans.org/kb/trails/platform.html
Или Eclipse RCP http://www.eclipse.org/articles/Article-RCP-1/tutorial1.html
Для библиотеки GUI я бы склонялся к SWT. Eclipse поддерживает его и использует для своей IDE. Я думаю, что Азуреус тоже использовал это. Хорошо выглядит на нескольких платформах и довольно прост в использовании.
Если бы я запускал настольное Java-приложение сегодня, я бы использовал JavaFX.
Вы также можете использовать Java-привязки Qt. Qt - это мультиплатформенная среда C++, которая, на мой взгляд, является одной из самых читаемых объектных моделей для проектирования GUI.
Загляните на веб-сайт Trolltech (Nokia) Qt.
Вы можете увидеть демонстрацию (которая также имеет исходный код) с помощью функции Java Web Start. Это дает хорошее представление о том, что можно и нельзя делать, и как выглядит исходный код.