Преобразование существующего веб-приложения в настольное приложение - PullRequest
4 голосов
/ 27 февраля 2012

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

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

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

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

  1. Awt - не похоже, что это хороший выбор.
  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 ]

5 голосов
/ 27 февраля 2012

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

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

  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.encoding 2 )
    • Разрыв строки (line.separator 2 )
    • Разделитель файлов (file.separator 2 )
  • Кодирование приложений фиксированного размера («абсолютное расположение»). это будет показано как приложения разных размеров. на других ОС.
  • ...

Примечание 2. Это показывает свойство для использования для каждого.


Расписание

Очевидно, я не могу говорить за вас, но я могу сказать вам, что у меня не было бы шансов перейти от «какой технологии» к «развертываемому приложению» в течение двух месяцев.

Надеюсь, ты более способный, чем я! ;)

0 голосов
/ 27 февраля 2012

Вы сказали, что хотите Java-решение, но учтите, что в Python имеется множество вариантов Gui, и у вас уже есть веб-приложение, написанное на Python.

Groovy - это другой язык программирования, чем Java, но Groovy работает на JVM.Вы хотите решение Java или решение JVM?Я спрашиваю, потому что вы упоминаете Griffon.

Предполагая, что вы хотите Java, я думаю, что ваши основные варианты - это Swing, SWT, JavaFX 2 и Apache Pivot.Oracle заявляет, что JavaFX намеревается заменить Swing в качестве платформы с графическим интерфейсом.Тем не менее, JavaFX 2 находится в зачаточном состоянии, и сейчас для Mac доступен только предварительный выпуск.В результате JavaFX и Apache Pivot вы можете использовать тот же код для своего веб-приложения, что и для настольного приложения.

0 голосов
/ 27 февраля 2012

Вы можете попробовать сделать это небольшими шагами: * В качестве первого шага вы можете создать приложение с помощью SWT и встроить свое приложение в элемент управления браузера. * Затем вы должны переместить страницы и некоторые элементы управления из веб-приложения на рабочий стол одну за другой.

Таким образом, вы можете получить минимальное приложение в часах:)

P.S. Если вы хотите приложение для iOS с таким подходом, стоит взглянуть на этот проект с открытым исходным кодом: http://en.wikipedia.org/wiki/PhoneGap

...