<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF84%3A%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0...</id>
		<title>LXF84:Что за штука... - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF84%3A%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0..."/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF84:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0...&amp;action=history"/>
		<updated>2026-05-13T09:00:05Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF84:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0...&amp;diff=2451&amp;oldid=prev</id>
		<title>Skryabin yuri: Новая: == Что за штука... Java Server Faces? == '''''Ричард Драммонд''' прослышал о более простом и быстром способе строител...</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF84:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0...&amp;diff=2451&amp;oldid=prev"/>
				<updated>2008-03-17T13:55:05Z</updated>
		
		<summary type="html">&lt;p&gt;Новая: == Что за штука... Java Server Faces? == &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Ричард Драммонд&amp;#039;&amp;#039;&amp;#039; прослышал о более простом и быстром способе строител...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Что за штука... Java Server Faces? ==&lt;br /&gt;
'''''Ричард Драммонд''' прослышал о более простом и быстром способе строительства web-приложений. Определенно стоит разобраться…''&lt;br /&gt;
&lt;br /&gt;
'''Сейчас много шумят об этой новой web-технологии, JavaServer Faces. Для чего она?'''&lt;br /&gt;
&lt;br /&gt;
JavaServer Faces (сокращенно JSF) – компонентная платформа, призванная упростить разработку пользовательских интерфейсов для web-приложений Java. Это…&lt;br /&gt;
&lt;br /&gt;
'''Секундочку. У нас уже есть Struts, Tapestry, WebWork и nauseam. Зачем создавать еще одну платформу для Java-приложений?'''&lt;br /&gt;
&lt;br /&gt;
В том-то и часть проблемы: много несовместимых платформ. Однако JSF – открытый стандарт, разрабатываемый в рамках Java Community Process, и представители многих популярных, но нестандартных платформ внесли свою лепту в разработку спецификации JSF (текущая версия JSF 1.2). Спецификация открытая, и применять ее может каждый. Sun, кстати, выпустила стандартную реализацию.&lt;br /&gt;
&lt;br /&gt;
'''Ясно. Но чем JSF отличается от, скажем, Jakarta Struts?'''&lt;br /&gt;
&lt;br /&gt;
Тем, что у этих проектов разные цели. Struts – завершенная платформа, позволяющая упростить построение Java-приложений с использованием парадигмы модель-вид-контроллер (MVC). JSF сосредоточена на одной части парадигмы, виде.&lt;br /&gt;
&lt;br /&gt;
'''Вид — то есть вид web-приложений, отсюда и «Faces»?'''&lt;br /&gt;
&lt;br /&gt;
Точно. MVC – программная архитектура, четко разделяющая пользовательское приложение на три части: Модель (часть программы, содержащая данные), Вид (представление данных, позволяющее пользователю взаимодействовать с программой) и Управление (обработка событий, например, пользовательского ввода, и обновление в соответствии с этими событиями Модели и/или Вида). Архитектура MVC успешно используется некоторыми современными средами разработки, включая Cocoa для Mac OS X, Microsoft Foundation Classes и Swing для Java.&lt;br /&gt;
Теперь наблюдается, что подобный подход начал применяться и к web-приложениям, отсюда и популярность Struts.&lt;br /&gt;
&lt;br /&gt;
'''Спасибо за объяснение технологии, но что MVC даст лично мне?'''&lt;br /&gt;
&lt;br /&gt;
Если рассматривать приложение таким образом, можно отделить модель от вида. Это особенно актуально для web-приложений. Вспомните только, как часто популярные сайты подвергаются визуальному обновлению (меняется вид), а обрабатываемые ими данные (модель) остаются неизменными. Кроме того, в web-разработках и у программиста, и у дизайнера (который не обязательно разбирается в программировании) должна быть возможность трудиться над приложением вместе. Наконец, вам могут понадобиться различные методы доставки web-приложения пользователям: скажем, вы работаете с HTML-интерфейсом для настольных компьютеров, а с WML – для мобильных устройств. Благодаря MVC решение этих задач существенно упрощается.&lt;br /&gt;
&lt;br /&gt;
'''Если JSF занимается только видом, чем она лучше Struts, которая умеет все?'''&lt;br /&gt;
&lt;br /&gt;
Не обязательно быть во всем лучше всех. JSF лучше только для построения пользовательских интерфейсов. Вполне возможно совместное использование Struts и JSF в одном приложении – есть даже дочерний проект Struts под названием Shale, для более плотной интеграции с JSF (см. http://shale.apache.org).&lt;br /&gt;
&lt;br /&gt;
'''Об этом хватит! Расскажите подробнее о JSF.'''&lt;br /&gt;
&lt;br /&gt;
Вижу, вас надо хорошенько убедить. Ладно. Иногда JSF называют «Swing для web-приложений», и это правильно (как известно, Swing – стандартная среда разработки графических пользовательских интерфейсов, GUI, на чистом Java). Со Swing легко изменять способы отображения компонентов интерфейса или создавать особые компоненты, а также использовать визуальные редакторы интерфейсов. Все эти преимущества применимы к JSF, но не к Struts.&lt;br /&gt;
&lt;br /&gt;
'''Вы приводите сравнение со Swing. Это, повашему, убедительно?'''&lt;br /&gt;
&lt;br /&gt;
Да забудьте вы эту Swing-фобию! Ведь вы же сможете строить интерфейс web-приложения так же легко, как строится простой GUI – перетаскиванием компонентов в UI-конструктор; это ли не здорово?&lt;br /&gt;
&lt;br /&gt;
'''Допустим. Но интерфейс для web и для обычных платформ – не одно и то же. Осуществима ли эта идея?'''&lt;br /&gt;
&lt;br /&gt;
Да, поскольку JSF моделирует интерфейсы точно так же, как традиционные среды разработки, в частности, Swing. В основе JSF лежит API, позволяющий создавать компоненты интерфейса, не зависящие от устройства вывода. Этот API управляет всеми вопросами, связанными с пользовательским интерфейсом: жизненным циклом, обработкой событий, персистентностью (способность сохранять и поддерживать объекты) и навигацией. JSF предоставляет также базовый набор компонентов GUI, знакомых дизайнеру любых интерфейсов.&lt;br /&gt;
&lt;br /&gt;
'''Как это отразится на HTML-интерфейсе, который я вижу в браузере?'''&lt;br /&gt;
&lt;br /&gt;
Основные компоненты интерфейса JSF существуют на серверной стороне приложения и не зависят от средств представления. Однако нынешняя спецификация JSF требует применения рендерера, способного отображать компоненты пользовательского интерфейса как HTML, через JavaServer Pages (JSP). Возможны и другие технологии представления, но поддержка JSP обязательна. &lt;br /&gt;
&lt;br /&gt;
'''Погодите продолжать, поясните, пожалуйста, что такое JavaServer Pages?'''&lt;br /&gt;
&lt;br /&gt;
С удовольствием. Основа технологии генерации динамического web-контента с сервера Java-приложений – это сервлет. Но строительство пользовательского интерфейса только через сервлеты весьма проблематично: встраивать весь генерируемый контент (в основном HTML) внутрь Java-кода – задача непосильная. Поэтому и появилась JavaServer Pages. Теперь все наоборот: можно добавить в HTML особые тэги, исполняющие необходимый для генерации динамического контента Java-код, а то и встроить этот код непосредственно в HTML-страницу.&lt;br /&gt;
&lt;br /&gt;
'''А применение JSF обязательно требует поддержки JSP?'''&lt;br /&gt;
&lt;br /&gt;
Да, поставляется библиотека тэгов JSP с особыми тэгами, позволяющими оперировать с компонентами пользовательского интерфейса JSF. Например, если вы хотите представить пользователю данные в виде таблицы, нужно воспользоваться соответствующим JSF-тэгом. JSF возьмет на себя генерацию таблицы в виде HTML-кода в ответ на пользовательский запрос, а web-контейнер доставит ее в браузер пользователя.&lt;br /&gt;
&lt;br /&gt;
'''Полагаю, ввод данных в страницы JSF не составит труда…'''&lt;br /&gt;
&lt;br /&gt;
К сожалению, избежать Java-кодирования не получится. Каждая страница JSF связана с «бином» (bean), который передает значения компонентам JSF, занимается обработкой событий, проверкой введенных данных и т.п. Каждый компонент JSF связывается со свойствами и методами «бина» через атрибуты тэгов JSF&lt;br /&gt;
 &lt;br /&gt;
'''ОК, вы заинтриговали меня. С чего же начать разработку в JSF?'''&lt;br /&gt;
&lt;br /&gt;
Можно начать разработку с помощью web-контейнера типа Tomcat, вручную инсталлировать экземпляр JSF, затем в простом текстовом редакторе создать шаблоны и необходимый Java-код. Однако простейший путь – зарегистрироваться в Sun Developer Network и&lt;br /&gt;
установить новейшую версию Sun Studio Creator (см. http://developers.sun.com/prodtech/javatools/jscreator). Это полный пакет для JSF-разработки, включающий Java IDE, визуальный конструктор и сервер приложений. Регистрация свободная, а загрузка Creator для&lt;br /&gt;
зарегистрированных членов бесплатна.&lt;br /&gt;
&lt;br /&gt;
'''Хм. А нет ли других решений среди свободного ПО?'''&lt;br /&gt;
&lt;br /&gt;
Creator от Sun основывается на открытом NetBeans IDE, но в текущей стабильной версии NetBeans еще нет визуальных инструментов для работы с JSF. &lt;br /&gt;
&lt;br /&gt;
'''Вы сказали, что JSF – открытый стандарт. Нет ли других вариантов, кроме как от Sun?'''&lt;br /&gt;
&lt;br /&gt;
Конечно, есть: например, Apache MyFaces (см. http://myfaces. apache.org).&lt;br /&gt;
&lt;br /&gt;
'''Хотелось бы познакомиться с библиотеками компонентов JSF.'''&lt;br /&gt;
&lt;br /&gt;
Отлично! Попробуйте ADF Faces от Oracle (http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/jsf).&lt;br /&gt;
&lt;br /&gt;
'''А где можно подробнее узнать о JavaServer Pages?'''&lt;br /&gt;
&lt;br /&gt;
Рекомендую http://java.sun.com/javaee/javaserverfaces. Там можно найти информацию и ссылки на многочисленные статьи и руководства по JSF.&lt;/div&gt;</summary>
		<author><name>Skryabin yuri</name></author>	</entry>

	</feed>