Преобразование существующего веб-приложения в настольное приложение

Я видел некоторые другие подобные вопросы по этой теме здесь, но они не очень помогли, поэтому я задаю этот вопрос.

Какой самый быстрый способ преобразовать простое веб-приложение разумного размера в настольный клиент Java, предназначенный для ПК и Mac? К сожалению, я не могу поделиться здесь множеством подробностей о приложении по разным причинам. Самым сложным пользовательским интерфейсом в приложении является страница, которая содержит многоуровневые многопоточные обсуждения (см. Здесь иллюстративный пример того, о чем я говорю.) Текущее веб-приложение основано на python, поэтому я не могу повторно использовать что-либо из код на стороне сервера (не думайте, что это проблема)

Я никогда не делал ни размаха, ни awt, ни какой-либо другой работы с толстым клиентом на основе Java. Мое мышление более или менее определяется веб-приложениями. Я способен делать сквозную разработку веб-приложений (включая бэкэнд и достойный пользовательский интерфейс с использованием HTML, CSS и JS) с использованием Java или python. Для ваших ответов, пожалуйста, обратите внимание только на Java-решения.

Итак, вот мои вопросы. Каков лучший фреймворк или инструмент, который я должен использовать? Я нашел некоторые из следующих инструментов в сети как часть моего исследования.

  1. Оу - не похоже, что это хороший выбор.
  2. Swing, который я считаю, в комплекте с обычным Java SDK/JRE. - Это может быть моим лучшим выбором.
  3. SWT, который, кажется, дополняет Swing каким-то образом.
  4. Гриффон по статье здесь. Этот фреймворк использует Groovy (я понятия не имею о Groovy, кстати) Adobe Air flex. Какие-нибудь фреймворки с открытым исходным кодом?

Какие еще вопросы я должен иметь в виду? Я хотел бы услышать ваши комментарии:

  1. Как усложняет тот факт, что его необходимо развернуть на клиенте? Поскольку мы используем Java, я считаю, что это не проблема. Мне известны обычные компромиссы между веб-приложением и настольным приложением (например, простота развертывания, обновления и т. Д. И т. Д.)
  2. Насколько легко создать установщик одним щелчком и связать приложение и необходимую среду - например. JRE и т. Д.?
  3. Продукт должен работать на Mac и Windows. Это как-то усложняет (Опять же, поскольку это Java, я предполагаю, что нет ошибок, но хотел бы быть предупрежден, если таковые имеются)
  4. Какие рамки или технологии могут быть полезны при составлении резюме?

Мой крайний срок - максимум 2 месяца - будет ли этого достаточно для достаточно простого веб-приложения, учитывая, что мне нужно изучить все эти технологии? Я просто пытаюсь понять это здесь - я знаю, что, скорее всего, невозможно дать точный ответ - просто предположим, что я достаточно умен и могу достаточно быстро собрать любой незнакомый технический стек.

Спасибо!

3 ответа

Решение

GUI инструментарий

Учитывая "Mac и Windows", я бы сказал, что моя рекомендация считается "Swing" (возможно, с SwingX1).

  1. Я согласен с вашей оценкой AWT. Он не поддерживает форматированный текст в любом компоненте из коробки. Ему также не хватает деревьев, таблиц (и других компонентов) и людей с недавним опытом его использования. Обратите внимание, что он также "в комплекте с обычным Java SDK/JRE", как и Swing, просто он старше и менее активен, чем Swing в целом.
  2. Если что-то дополняет Swing, это будет SwingX. SwingX построен на Swing и предоставляет расширенные элементы управления, которые не доступны "из коробки" в J2SE.
  3. Swing и SWT взаимно несовместимы - используйте один или другой.
  4. У меня нет опыта работы с Гриффоном.

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

Примечание 1) Добавьте SwingX, если у них есть какие-то отличные компоненты, которые легко представляют многопоточные разговоры, но я подозреваю, что JTextPane было бы достаточно.


развертывание

Что касается развертывания, это немного сложнее, чем кажется. Многие настольные компьютеры не поставляются с Java в стандартной комплектации. Те, у кого уже есть, могут иметь старую версию.

  1. Чтобы обеспечить JRE правильной минимальной версии для запуска приложения. доступно, используйте deployJava.js (упомянуто со ссылками на странице JWS ниже).
  2. Чтобы предоставить пользователю возможность запуска в один клик, обратитесь к Java Web Start.

Кроссплатформенный Гоча

К сожалению, хотя Java и является платформой x-plat, программисты могут многое сделать для этого. НАПРИМЕР

  • Не учитывая платформу по умолчанию:
    • Кодировка файла (file.encoding2)
    • Разрыв строки (line.separator2)
    • Разделитель файлов (file.separator2)
  • Кодирование приложений фиксированного размера ("абсолютный макет"). это будет показано как приложения разных размеров. на другой ОС.
  • ...

Примечание 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

Другие вопросы по тегам