Преобразование существующего веб-приложения в настольное приложение
Я видел некоторые другие подобные вопросы по этой теме здесь, но они не очень помогли, поэтому я задаю этот вопрос.
Какой самый быстрый способ преобразовать простое веб-приложение разумного размера в настольный клиент Java, предназначенный для ПК и Mac? К сожалению, я не могу поделиться здесь множеством подробностей о приложении по разным причинам. Самым сложным пользовательским интерфейсом в приложении является страница, которая содержит многоуровневые многопоточные обсуждения (см. Здесь иллюстративный пример того, о чем я говорю.) Текущее веб-приложение основано на python, поэтому я не могу повторно использовать что-либо из код на стороне сервера (не думайте, что это проблема)
Я никогда не делал ни размаха, ни awt, ни какой-либо другой работы с толстым клиентом на основе Java. Мое мышление более или менее определяется веб-приложениями. Я способен делать сквозную разработку веб-приложений (включая бэкэнд и достойный пользовательский интерфейс с использованием HTML, CSS и JS) с использованием Java или python. Для ваших ответов, пожалуйста, обратите внимание только на Java-решения.
Итак, вот мои вопросы. Каков лучший фреймворк или инструмент, который я должен использовать? Я нашел некоторые из следующих инструментов в сети как часть моего исследования.
- Оу - не похоже, что это хороший выбор.
- Swing, который я считаю, в комплекте с обычным Java SDK/JRE. - Это может быть моим лучшим выбором.
- SWT, который, кажется, дополняет Swing каким-то образом.
- Гриффон по статье здесь. Этот фреймворк использует Groovy (я понятия не имею о Groovy, кстати) Adobe Air flex. Какие-нибудь фреймворки с открытым исходным кодом?
Какие еще вопросы я должен иметь в виду? Я хотел бы услышать ваши комментарии:
- Как усложняет тот факт, что его необходимо развернуть на клиенте? Поскольку мы используем Java, я считаю, что это не проблема. Мне известны обычные компромиссы между веб-приложением и настольным приложением (например, простота развертывания, обновления и т. Д. И т. Д.)
- Насколько легко создать установщик одним щелчком и связать приложение и необходимую среду - например. JRE и т. Д.?
- Продукт должен работать на Mac и Windows. Это как-то усложняет (Опять же, поскольку это Java, я предполагаю, что нет ошибок, но хотел бы быть предупрежден, если таковые имеются)
- Какие рамки или технологии могут быть полезны при составлении резюме?
Мой крайний срок - максимум 2 месяца - будет ли этого достаточно для достаточно простого веб-приложения, учитывая, что мне нужно изучить все эти технологии? Я просто пытаюсь понять это здесь - я знаю, что, скорее всего, невозможно дать точный ответ - просто предположим, что я достаточно умен и могу достаточно быстро собрать любой незнакомый технический стек.
Спасибо!
3 ответа
GUI инструментарий
Учитывая "Mac и Windows", я бы сказал, что моя рекомендация считается "Swing" (возможно, с SwingX1).
- Я согласен с вашей оценкой AWT. Он не поддерживает форматированный текст в любом компоненте из коробки. Ему также не хватает деревьев, таблиц (и других компонентов) и людей с недавним опытом его использования. Обратите внимание, что он также "в комплекте с обычным Java SDK/JRE", как и Swing, просто он старше и менее активен, чем Swing в целом.
- Если что-то дополняет Swing, это будет SwingX. SwingX построен на Swing и предоставляет расширенные элементы управления, которые не доступны "из коробки" в J2SE.
- Swing и SWT взаимно несовместимы - используйте один или другой.
- У меня нет опыта работы с Гриффоном.
Swing является наиболее часто используемым из перечисленных вариантов, поэтому для получения помощи (игнорируя другие потенциально важные факторы при принятии решения), это был бы хороший выбор.
Примечание 1) Добавьте SwingX, если у них есть какие-то отличные компоненты, которые легко представляют многопоточные разговоры, но я подозреваю, что JTextPane
было бы достаточно.
развертывание
Что касается развертывания, это немного сложнее, чем кажется. Многие настольные компьютеры не поставляются с Java в стандартной комплектации. Те, у кого уже есть, могут иметь старую версию.
- Чтобы обеспечить JRE правильной минимальной версии для запуска приложения. доступно, используйте
deployJava.js
(упомянуто со ссылками на странице JWS ниже). - Чтобы предоставить пользователю возможность запуска в один клик, обратитесь к Java Web Start.
Кроссплатформенный Гоча
К сожалению, хотя Java и является платформой x-plat, программисты могут многое сделать для этого. НАПРИМЕР
- Не учитывая платформу по умолчанию:
- Кодировка файла (
file.encoding
2) - Разрыв строки (
line.separator
2) - Разделитель файлов (
file.separator
2)
- Кодировка файла (
- Кодирование приложений фиксированного размера ("абсолютный макет"). это будет показано как приложения разных размеров. на другой ОС.
- ...
Примечание 2. Это показывает свойство для использования для каждого.
Расписание
Очевидно, я не могу говорить за вас, но могу вам сказать, что у меня не было бы шансов перейти от "какой технологии" к "развертываемому приложению" в течение двух месяцев.
Надеюсь, ты более способный, чем я!;)
Вы сказали, что хотите Java-решение, но имейте в виду, что в Python есть множество вариантов Gui, и у вас уже есть веб-приложение, написанное на Python.
Groovy - это другой язык программирования, чем Java, но Groovy работает на JVM. Вы хотите решение Java или решение JVM? Я спрашиваю, потому что вы упоминаете Гриффон.
Предполагая, что вы хотите Java, я думаю, что ваши основные варианты - это Swing, SWT, JavaFX 2 и Apache Pivot. Oracle заявляет, что JavaFX намерена заменить Swing в качестве предпочтительной графической платформы. Тем не менее, JavaFX 2 находится в зачаточном состоянии, и сейчас для Mac доступен только предварительный выпуск. В результате JavaFX и Apache Pivot вы можете использовать тот же код для веб-приложения, что и настольное приложение.
Вы можете попробовать сделать это небольшими шагами: * В качестве первого шага вы можете создать приложения с помощью SWT и встроить ваше приложение в элемент управления браузера. * Затем вы должны переместить страницы и некоторые элементы управления из веб-приложения на рабочий стол одну за другой.
Таким образом, вы можете получить минимальное приложение в часах:)
PS Если вы хотите приложение для iOS с таким подходом, стоит взглянуть на этот проект с открытым исходным кодом: http://en.wikipedia.org/wiki/PhoneGap