Как я решаю между использованием GUI Swing или легкого веб-клиента для пользовательского фронтэнда моего JAVA-приложения?

У меня всегда, кажется, есть эта внутренняя борьба когда дело доходит до пользовательского интерфейса. Я создаю приложение "механизм" и склонен задерживать пользовательский интерфейс к тому, после того, как я получу свою работу алгоритмов. Затем я иду, назад и вперед пытаясь решить, как позволить пользователю взаимодействовать с моей программой. Лично, я - поклонник командной строки, но я не могу ожидать вентилятор обычно моих пользователей.

Я действительно как то, что возможно в браузере в возрасте web 2.0 и ajax. С другой стороны, не настолько трудно заставить Swing выйти напрямую или, и можно обычно рассчитывать на более последовательную презентацию пользователю (хотя использование хорошей платформы JavaScript как YUI или jQuery имеет большое значение для нормализации браузеров).

Очевидно и подходы имеют свои достоинства и недостатки. Так, какие критерии / параметры / ситуации должны привести меня использовать легкий вес (например, веб-) GUI? Какие критерии / параметры / ситуации должны привести меня использовать более тяжелое (например, Основанный на Swing) GUI?

Это не мое намерение запустить войну пламени, просто заинтересованную конструктивными / объективными мнениями сообщества.

Световой сигнал In редактирования № 1 первых нескольких ответов, я хотел бы разъяснить, что я хотел бы развернуть свое приложение независимо, не разместить его на некотором интернет-сервере обязательно. Таким образом, я должен был бы развернуть с легкой инфраструктурой веб-сервера а-ля Причал/Tomcat или подобный.

6
задан 2 revs 20 January 2010 в 21:32
поделиться

8 ответов

Это зависит от приложения, и это, по сути, по сути, ориентированный на использование возможности для использования возможности для использования возможности для использования возможностей для использования возможностей для использования возможности для использования возможности для использования возможностей для использования возможности для хранения возможностей для хранения данных. Подумайте о плюсах и минусах.

Плюсы легкого веб-пользовательского интерфейса:

  • Простота распределения
  • Независимость от платформы
  • Простота обслуживания

Минусы легкого веб-интерфейса веб-интерфейса:

  • Меньшее управление окружающей средой
  • Стандарты разметки варьируются между Браузеры
  • требуют веб-сервера и все, что идет с ним

плюсы исполняемого пользовательского интерфейса

  • . Больше экологического контроля (т. Е.: Полноэкранные приложения и т. Д.)
  • Не обязательно подвержены задержению и отключениям

Минусы исполняемого UI

  • Нажатие обновлений могут быть более сложными
  • требует установки
  • Потенциальная платформа Требования (Frameworks, Packages и т. Д.)
  • Потенциально требует знания расширенных сетевых тем (веб-сервисов и т. Д.)
2
ответ дан 17 December 2019 в 04:47
поделиться

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

Также веб-приложение позволит вам точно отслеживать использование вашего приложения (через Google Analytics или что-то подобное). Не уверены, если это проблема, но это может быть полезно для вас в будущем.

1
ответ дан 17 December 2019 в 04:47
поделиться

Вам необходимо преодолеть требования приложения, чтобы решить это ...

  1. У пользователях установлена ​​пользователи Java достаточной версии? Нужно быть, чтобы запустить качели GUI.
  2. У вас есть веб-сервер?
  3. Вам нужна гибкость качания GUI или доступность веб-интерфейса?
  4. Является ли Java Webstart и вариант, если это так, вы можете распространять качание GUI через сеть.
  5. Ваше приложение выполняет обширные расчеты или обработку? Если это так, клиентское приложение может быть ответом.

Есть миллион вопросов, таких как эти. Я бы предложил бы мозговую штурмовую сессию и отслеживать все плюсы и минусы каждого, добавляя балл, чем бросать все это и собираться с вашим кишечным чувством :)

1
ответ дан 17 December 2019 в 04:47
поделиться

этот парень имеет drupal, работающий на quercus. drupal делает очень мало использования упа, и все же, кажется, он прекрасно работает под quercus. видимо, есть даже некоторые преимущества производительности, чтобы сделать это таким образом - вероятно, связано с различием между скомпилированным кодом и интерпретированным кодом.

-121--4067305-

проверяет, _ связанный с ним вид больше проблем, чем стоит. Ваш пример работает, если вы уроните validates_presence_of:project_id. Вот пример hacky, который восстанавливает эти проверки (найдено описание здесь ).

class ProjectAttribute < ActiveRecord::Base
  belongs_to :project

  validates_presence_of :name
  validates_uniqueness_of :name, :scope => :project_id

  validates_presence_of :project_id, :unless => Proc.new { |project_attribute|
    project = project_attribute.project
    ObjectSpace.each_object(Project) {|o| project = o if o.project_attributes.include?(project_attribute)} unless project
    project
  }
end
-121--5086414-

Если это клиентско-серверное приложение, я обычно обращаюсь к веб-интерфейсу приложения.

Вы избавитесь от бесчисленных проблем с такими вещами, как установленные версии JRE, распространение обновлений, разрешения приложений, исчезнувшие ярлыки...

1
ответ дан 17 December 2019 в 04:47
поделиться

Класс DouureConverter Jon Skeet имеет метод ToExactString () , который возвращает точное значение двойника в качестве последовательности.

http://www.yoda.arachsys.com/csharp/DoubleConverter.cs

-121--2189428-

Попробуйте что-то вроде

myDouble.ToString("R")

См. также Спецификатор формата в оба конца («R») :

Спецификатор формата в оба конца («R») гарантирует, что числовое значение, преобразованное в последовательность, будет проанализировано в то же самое числовое значение.

-121--2189426-

Если вы ожидаете частых обновлений приложения, то веб-версия может быть лучше, так как пользователю не придется обновлять клиент или устанавливать новый клиент, содержащий обновления. Если вы думаете, что пользователю может понадобиться возможность использовать приложение, не подключившись к Интернету, то качели были бы лучше.

Только две вещи с верхней части моей головы.

0
ответ дан 17 December 2019 в 04:47
поделиться

Подумайте о пользователях и используют случаи вашего проекта.

Пользователи ожидают иметь доступ к нему, когда они отключены из Интернета (например, на самолете или в кафе без доступа в Интернет)? Используйте качели.

Вы хотите, чтобы пользователи могли получить доступ к тому же инструменту с разных компьютеров (например, как на работе, так и на дому)? Используйте веб-интерфейс.

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

0
ответ дан 17 December 2019 в 04:47
поделиться

Класс DouureConverter Jon Skeet имеет метод ToExactString () , который возвращает точное значение двойника в качестве последовательности.

http://www.yoda.arachsys.com/csharp/DoubleConverter.cs

-121--2189428-

Попробуйте что-то вроде

myDouble.ToString("R")

См. также Спецификатор формата в оба конца («R») :

Спецификатор формата в оба конца («R») гарантирует, что числовое значение, преобразованное в последовательность, будет проанализировано в то же самое числовое значение.

-121--2189426-

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

Лично я всегда предпочитаю настольное приложение swing. Его можно легко развернуть с помощью Java Webstart.

0
ответ дан 17 December 2019 в 04:47
поделиться

Используйте комментарии:

   Object o = foo() //
      .bar() //
      .toString();
-121--1843159-

Не используйте литье в стиле Си при выполнении литья по множественному дереву наследования. Если вы используете dynamic _ cast вместо этого вы получите ожидаемый результат:

B* b = new C();
dynamic_cast<A*>(b)->a();
-121--3762201-

Не зная ничего о вашем приложении, я не могу дать наилучшую рекомендацию. Однако из личного/профессионального опыта я могу утверждать, что установка приложения на клиентские машины - это МНОГО больше боли в заднице, чем кажется.

С AJAX/Web вам действительно придется беспокоиться только о поддержке, как три браузера. Ошибки/обновления установки возникают только один раз при развертывании продукта на веб-сервере.

С помощью резервного приложения Swing можно справиться с действительно большим беспорядком, который связан с установкой приложения на неизвестные системы. Этот беспорядок был настолько плохим, что такие вещи, как AJAX, действительно заставляли веб-приложения вести себя или чувствовать себя как реальное приложение.

0
ответ дан 17 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: