Есть ли хорошая платформа для настольных приложений Java?
Я разработал множество настольных приложений на Swing, даже несколько более сложных, с интеграцией Hibernate и Spring. Я обнаружил, что многие вещи повторяются и должны быть выполнены быстро и удобным способом, например, жизненный цикл приложения, ведение журнала, оповещения, авторизация, формы и их проверка. Я начал искать рамки. Я встретил Swing Application Framework, который, как оказалось, уже несколько лет не работает. Spring RCP действительно оправдал мои ожидания, особенно мне нравилось создавать формы на основе Java Bean, но я понял, что он тоже мертв. NETbeans RCP не для меня, я использую Eclipse и не хочу использовать другую IDE для разработки десктопов. Меня не очень волнует Eclipse RCP, я почувствовал, что он слишком ориентирован на Eclipse, я бы предпочел что-то слабо связанное с любым инструментом, кроме того, его не так просто изучить.
Я удивлен, что существует настолько слабая поддержка для разработки настольных бизнес-приложений на Java. Как будто Java использовалась только в веб-среде. Какой язык предпочтительнее для создания таких приложений? И если я хочу остаться с Java, есть ли шанс найти что-то похожее на Spring RCP (пока я не смог)?
6 ответов
Я задал похожий вопрос некоторое время назад, см. Swing desktop-development, если вам интересно.
Я пришел к выводу, что просто нет никаких фреймворков, которые могли бы сделать для вашего настольного приложения, что может сделать любой из огромного количества WEBframeworks для вашего веб-приложения. Это кажется абсурдным, но по моему опыту из-за отличных веб-фреймворков и отсутствия настольных фреймворков стало намного проще разрабатывать веб-приложения.
Я использую Spring-RCP для 2 проектов. Это было здорово, но в настоящее время довольно непригодно для использования, потому что вы застряли с ним на весне 2.5. Кроме того, он "чувствует" себя немного медленно и действительно требует много памяти на 64-битных машинах, что, скорее всего, является проблемой Spring-Swing: https://jira.springsource.org/browse/SPR-9628
Я ждал Project Valkyrie, но он, кажется, уже мертв
Я думаю, вы не найдете ничего, что полностью соответствует вашим требованиям. http://swingx.java.net/ может предложить вам несколько GUI-виджетов, таких как JXDatePicker. Я также рекомендую JGoodies Binding и JGoodies Form, оба великолепны. Если вы используете клиент-серверное приложение, я настоятельно рекомендую использовать Spring-Remoting (например, HTTP Invoker) с Spring-Security. Действительно делает вещи проще.
Мне нравится разрабатывать настольные приложения на Swing, но, к сожалению, вам действительно нужно "пройти лишнюю милю". Связь клиент-сервер, безопасность или даже проверка - это лишь несколько примеров многих вещей, которые кажутся слишком сложными в наши дни (по сравнению с современными веб-структурами). Также вы можете узнать, что не так просто автоматически создать, подписать и развернуть приложение с помощью java-webstart, как это должно быть.
Spring-RCP был самым близким к "полной" настольной платформе, которую я нашел до сих пор, и она была мертва в течение многих лет.
Удачи!
Пожалуйста, попробуйте грифон. Это основано на отличном языке и вдохновлено рамками Grails. Он работает на JVM, язык очень дружелюбен для Java-программистов.
Цитата с сайта
Griffon - это прикладная среда для разработки настольных приложений в JVM, причем основным языком является Groovy. Вдохновленный Grails, Griffon следует парадигме "Соглашение о конфигурации" в сочетании с интуитивно понятной архитектурой MVC и интерфейсом командной строки.
.... Архитектура очень расширяемая.
Каркас Griffon расширяется с помощью плагинов. Есть из чего выбирать. Например, вы найдете плагины для сторонних компонентов Swing, таких как Swingx, Jide и Macwidgets; плагины, связанные с постоянством, такие как DataSource, GSQL, Hibernate и другие; Поддержка 3D-графики и анимации возможна через JOGL, LWJGL и Processing. И многое другое!
В основном это зависит от размера приложения.
Для приложений меньшего и среднего размера имеет смысл использовать JavaFX 2, который не использует другой язык, о котором вы можете начать с некоторых основных учебных пособий.
Как вы упомянули для приложений уровня предприятия, Eclipse RCP и Netbeans RCP - хороший выбор.
Netbeans RCP намного проще для разработки, вы не должны отклонять его только из-за предпочтений IDE. Есть бесплатная книга об этом, которая является хорошей отправной точкой.
Есть также вариант e4, который должен быть значительным улучшением для затмения, но я не могу сказать, что использовал его еще
Связанный ресурс, на который стоит обратить внимание:
http://netbeans.dzone.com/why-from-eclipse-rcp-to-netbeans-platform
Проверьте JGoodies. Мало того, что Look and Feel намного лучше, они также предлагают основу для разработки приложений Swing.
Большая проблема, когда дело доходит до настольных приложений, состоит в том, что это действительно зависит от того, что вы пытаетесь создать. В отличие от веб-приложений, где это веб-страница-> запрос-> веб-страница, настольное приложение может делать практически все. Там нет стандартного цикла, даже для бизнес-приложений. Это намного больше похоже на AJAX, чем на обычное веб-приложение Java EE или PHP. И сколько библиотек AJAX на самом деле предлагают структуру, отличную от вызова и обновления определенных компонентов.
У вас могут быть меню, кнопки, панели, которые обновляются, объекты отображаются на лету, меняются графики, обновляются данные и т. Д.
Если вы просто ищете формы, то JGoodies, вероятно, ваш лучший выбор.
Я не знаю никаких рамок как таковых, но Netbeans
предоставляет мастер перетаскивания для компонентов Swing. Eclipse
также имеет аналогичный плагин, но он основан на плагине Netbeans.
Я обнаружил, что многие вещи повторяются и должны быть выполнены быстро и удобным способом, например, жизненный цикл приложения, ведение журнала, оповещения, авторизация, формы и их проверка.
Я бы порекомендовал извлечь их в вашу личную библиотеку "Core", которую вы можете использовать и использовать во всех своих проектах. Поскольку вы уже реализовали то, о чем говорите, вам будет проще обобщить их, чем изучать совершенно новую структуру. Возможно, частный проект Maven?
Основное внимание в разработке уделяется Web и Mobile, поэтому мы не должны ожидать каких-либо значительных усилий со стороны поставщиков фреймворков для Desktop.