У меня всегда, кажется, есть эта внутренняя борьба когда дело доходит до пользовательского интерфейса. Я создаю приложение "механизм" и склонен задерживать пользовательский интерфейс к тому, после того, как я получу свою работу алгоритмов. Затем я иду, назад и вперед пытаясь решить, как позволить пользователю взаимодействовать с моей программой. Лично, я - поклонник командной строки, но я не могу ожидать вентилятор обычно моих пользователей.
Я действительно как то, что возможно в браузере в возрасте web 2.0 и ajax. С другой стороны, не настолько трудно заставить Swing выйти напрямую или, и можно обычно рассчитывать на более последовательную презентацию пользователю (хотя использование хорошей платформы JavaScript как YUI или jQuery имеет большое значение для нормализации браузеров).
Очевидно и подходы имеют свои достоинства и недостатки. Так, какие критерии / параметры / ситуации должны привести меня использовать легкий вес (например, веб-) GUI? Какие критерии / параметры / ситуации должны привести меня использовать более тяжелое (например, Основанный на Swing) GUI?
Это не мое намерение запустить войну пламени, просто заинтересованную конструктивными / объективными мнениями сообщества.
Световой сигнал In редактирования № 1 первых нескольких ответов, я хотел бы разъяснить, что я хотел бы развернуть свое приложение независимо, не разместить его на некотором интернет-сервере обязательно. Таким образом, я должен был бы развернуть с легкой инфраструктурой веб-сервера а-ля Причал/Tomcat или подобный.
Это зависит от приложения, и это, по сути, по сути, ориентированный на использование возможности для использования возможности для использования возможности для использования возможностей для использования возможностей для использования возможности для использования возможности для использования возможностей для использования возможности для хранения возможностей для хранения данных. Подумайте о плюсах и минусах.
Плюсы легкого веб-пользовательского интерфейса:
Минусы легкого веб-интерфейса веб-интерфейса:
плюсы исполняемого пользовательского интерфейса
Минусы исполняемого UI
Один небольшой фактор, который вы можете подумать, что пользователь будет проходить через некоторые тип установки (хотя и минимально), если вы распространяете приложение Swing.
Также веб-приложение позволит вам точно отслеживать использование вашего приложения (через Google Analytics или что-то подобное). Не уверены, если это проблема, но это может быть полезно для вас в будущем.
Вам необходимо преодолеть требования приложения, чтобы решить это ...
Есть миллион вопросов, таких как эти. Я бы предложил бы мозговую штурмовую сессию и отслеживать все плюсы и минусы каждого, добавляя балл, чем бросать все это и собираться с вашим кишечным чувством :)
этот парень имеет 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, распространение обновлений, разрешения приложений, исчезнувшие ярлыки...
Класс DouureConverter
Jon Skeet имеет метод ToExactString ()
, который возвращает точное значение двойника в качестве последовательности.
http://www.yoda.arachsys.com/csharp/DoubleConverter.cs
-121--2189428-Попробуйте что-то вроде
myDouble.ToString("R")
См. также Спецификатор формата в оба конца («R») :
-121--2189426-Спецификатор формата в оба конца («R») гарантирует, что числовое значение, преобразованное в последовательность, будет проанализировано в то же самое числовое значение.
Если вы ожидаете частых обновлений приложения, то веб-версия может быть лучше, так как пользователю не придется обновлять клиент или устанавливать новый клиент, содержащий обновления. Если вы думаете, что пользователю может понадобиться возможность использовать приложение, не подключившись к Интернету, то качели были бы лучше.
Только две вещи с верхней части моей головы.
Подумайте о пользователях и используют случаи вашего проекта.
Пользователи ожидают иметь доступ к нему, когда они отключены из Интернета (например, на самолете или в кафе без доступа в Интернет)? Используйте качели.
Вы хотите, чтобы пользователи могли получить доступ к тому же инструменту с разных компьютеров (например, как на работе, так и на дому)? Используйте веб-интерфейс.
Также рассмотрите возможность, необходимо ли использовать пользователю для сохранения данных и загрузки данных, и инструмент производит файлы данных, которые некоторые могут рассматривать чувствительные (если это так, хранение в Интернете может быть проблемой).
Класс DouureConverter
Jon Skeet имеет метод ToExactString ()
, который возвращает точное значение двойника в качестве последовательности.
http://www.yoda.arachsys.com/csharp/DoubleConverter.cs
-121--2189428-Попробуйте что-то вроде
myDouble.ToString("R")
См. также Спецификатор формата в оба конца («R») :
-121--2189426-Спецификатор формата в оба конца («R») гарантирует, что числовое значение, преобразованное в последовательность, будет проанализировано в то же самое числовое значение.
Сделайте быстрое предположение, что я часто пытаюсь спросить себя/клиентов, есть ли у приложения высокий спрос на запись. Для приложения, в основном доступного только для чтения, решение «тонкий клиент» идеально подходит. Но если требуется много действий по записи, то приложение рабочего стола Swing обладает большей гибкостью.
Лично я всегда предпочитаю настольное приложение swing. Его можно легко развернуть с помощью Java Webstart.
Используйте комментарии:
Object o = foo() //
.bar() //
.toString();
-121--1843159- Не используйте литье в стиле Си при выполнении литья по множественному дереву наследования. Если вы используете dynamic _ cast
вместо этого вы получите ожидаемый результат:
B* b = new C();
dynamic_cast<A*>(b)->a();
-121--3762201- Не зная ничего о вашем приложении, я не могу дать наилучшую рекомендацию. Однако из личного/профессионального опыта я могу утверждать, что установка приложения на клиентские машины - это МНОГО больше боли в заднице, чем кажется.
С AJAX/Web вам действительно придется беспокоиться только о поддержке, как три браузера. Ошибки/обновления установки возникают только один раз при развертывании продукта на веб-сервере.
С помощью резервного приложения Swing можно справиться с действительно большим беспорядком, который связан с установкой приложения на неизвестные системы. Этот беспорядок был настолько плохим, что такие вещи, как AJAX, действительно заставляли веб-приложения вести себя или чувствовать себя как реальное приложение.