<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>peekaboo</title>
	<atom:link href="http://peekaboo-games.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://peekaboo-games.com</link>
	<description>Учимся мобильной разработке вместе</description>
	<lastBuildDate>Mon, 21 Apr 2014 08:07:44 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.6</generator>
		<item>
		<title>Способы монетизации мобильных игр</title>
		<link>http://peekaboo-games.com/monetization/</link>
		<comments>http://peekaboo-games.com/monetization/#comments</comments>
		<pubDate>Thu, 25 Jul 2013 13:24:56 +0000</pubDate>
		<dc:creator>helecta</dc:creator>
				<category><![CDATA[Гейм-дизайн]]></category>
		<category><![CDATA[Маркетинг]]></category>

		<guid isPermaLink="false">http://peekaboo-games.com/?p=224</guid>
		<description><![CDATA[P.s Эта статья - моя первая попытка попасть на хабр. Монетизация один из важнейших элементов при разработке приложения. Определиться со способом монетизации необходимо еще до начала проектирования игры, т.к. от выбранного способа зависит и механика и распределение затрат, да в &#8230; <a href="http://peekaboo-games.com/monetization/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<pre>P.s Эта статья - моя первая попытка попасть на хабр.</pre>
<p>Монетизация один из важнейших элементов при разработке приложения. Определиться со способом монетизации необходимо еще до начала проектирования игры, т.к. от выбранного способа зависит и механика и распределение затрат, да в общем практически все.</p>
<p><span id="more-224"></span> На данный момент можно выделить три основных способа заработать на игре.<br />
<img alt="виды" src="http://peekaboo-games.com/wp-content/uploads/2013/08/main.png" /></p>
<ul>
<ol>1. IAP – это встроенные в игру покупки, т.е. то, что можно купить через саму игру. Покупать можно что угодно: контент, дополнительные функции и даже подписку на приложение.</ol>
<ol>2. Платное распространение – это продажа доступа к игре за фиксированную стоимость.</ol>
<ol>3. Реклама – получение денег от рекламных агентств за встраивание рекламы в приложение.</ol>
</ul>
<p>Все известные способы монетизации &#8212; это сочетания этих механизмов. Я постаралась собрать все эти способы в одном месте, чтобы облегчить выбор нужного метода монетизации при проектировании игры.</p>
<p>На карточках указано название способа, затем краткое описание и ключевые особенности игр с таким способом монетизации. Ключевые особенности я выделяла на основе анализа игр из магазинов. При анализе я смотрела на:<br />
• длительность игры<br />
• сложность игры<br />
• наличие сюжета<br />
• социальность<br />
• частоту обновлений<br />
• графику<br />
• жанр</p>
<h2><span style="color: #575757; font-size: 20px;">Основные способы</span></h2>
<p><img alt="Бесплатная монетизация" src="http://peekaboo-games.com/wp-content/uploads/2013/08/freebig.png" /><br />
* Есть несколько возможных вариантов free-to-play:</p>
<ul>
<li>Первый вариант – покупка игровой валюты (контента) только за деньги.</li>
<li>Второй вариант – покупка игровой валюты за настоящие деньги и за выполнение офферов с предложением скачать другие игры.</li>
</ul>
<p>**Реклама разделяется на два варианта:</p>
<ul>
<li>Первый вариант &#8212; с рекламой, которую невозможно отключить.</li>
<li>Второй вариант – с рекламой, которую можно отключить за деньги.</li>
</ul>
<p>По рекламе хочу отметить, что все-таки этот способ хорошо подходит платформе Android, т.к. там процветает пиратство. Если вы делаете игру и хотите продавать её (разовая оплата в магазине), подумайте о том, чтобы сделать для Android её бесплатной, но с рекламой.<br />
Еще один не очень популярный способ &#8212; донат. Пока я встречала его только в приложениях. Я постаралась определить какими свойствами должна обладать игра с таким способом монетизации:<br />
<img alt="Донейт" src="http://peekaboo-games.com/wp-content/uploads/2013/08/donate.png" /><br />
***Донат можно разделить на два вида</p>
<ul>
<li>Первый вариант доната – вознаграждающий. Весь контент и функционал игры становится доступным через определенный промежуток времени. Если игрок не хочет ждать, он может заплатить и получить сразу весь контент и функционал.</li>
<li>Второй вариант – безвозмездный. Пользователь ничего не получит за сделанный донат, нет подталкивания и ограничений в игре.</li>
</ul>
<h2><span style="color: #575757; font-size: 18px;">Примеры</span></h2>
<p><strong>Free-to-play.</strong> Clash of clans –бесконечная, мидкор, без сюжета, обновления раз в месяц, социальность высокая, графика яркая, стратегия. В игре доступен весь геймплей, но постройка зданий и сбор ресурсов занимает время. Для ускорения этих процессов нужны кристаллы, которые можно купить за реальные деньги.<br />
<strong>Freemium.</strong> Pinball Rocks &#8212; бесконечная, казуальная, без сюжета, обновления раз в месяц, социальность низкая, графика яркая, настольная. В игре доступен весь основной геймплей. Но есть дополнительные функции, которые можно купить за деньги. Например, новая музыка для фона или дополнительная защита от потери мячика.<br />
<strong>Реклама.</strong> Doodle jump Android &#8212; бесконечная, казуальная, без сюжета, обновления раз в 2-3 месяца, социальность низкая, графика яркая, аркада. Вся игра полностью бесплатна. Во время игры нет отвлекающей внимания рекламы, но сразу после проигрыша появляется блок с рекламой.<br />
<strong>Донат.</strong> Притчи обо всем – в приложении доступны сразу все притчи. Есть вкладка «Поддержать проект», где предлагается сделать взнос на развитие проекта.<br />
<img alt="Частично бесплатные" src="http://peekaboo-games.com/wp-content/uploads/2013/08/partFree.png" /><br />
Trial способ монетизации в основном приложений. В IOs и Android играх я его не встречала, но в приложениях встречается.<br />
*В Demo есть несколько вариантов открытия контента:</p>
<ul>
<li>Первый вариант – заплатив, игрок открывает дополнительный контент внутри скаченной игры.</li>
<li>Второй вариант – игрока перенаправляют в магазин приложений для покупки полной версии игры.</li>
</ul>
<h2><span style="color: #575757; font-size: 18px;">Примеры</span></h2>
<p><strong> Trial.</strong> Navitel – при первом запуске активируется пробный период на 29 дней. Через 29 дней необходимо заплатить, чтобы продолжить использование программы.<br />
<strong>Demo.</strong> Загадки ДаВинчи &#8212; конечная, казуальная, без сюжета, обновления раз в 2-3 месяца, социальность низкая, графика яркая, головоломка. В игре есть несколько задач, которые позволяют понять геймплей. Весь набор задач можно купить за реальные деньги.<br />
<img alt="Платные" src="http://peekaboo-games.com/wp-content/uploads/2013/08/paid.png" /><br />
Еще один способ – подписка. В мобильных играх пока не пользуется популярностью, но в приложениях встречается.</p>
<h2><span style="color: #575757; font-size: 18px;">Примеры</span></h2>
<p><strong> Разовая оплата.</strong> Grand Theft Auto: Vice City &#8212; конечная, хардкор, сюжетная, обновления раз в 2-3 месяца, социальность низкая, 3D графика, экшн. Порт известной игры. Покупается один раз в магазине приложений. Внутри игры нет встроенных покупок.<br />
<strong>Разовая оплата и продажа контента.</strong> Infinity Blade II &#8212; бесконечная, хардкор, сюжетная, обновления раз в 2-3 месяца, социальность низкая, 3D графика, экшн. Икра покупается один раз в магазине приложений. Внутри игры можно дополнительно покупать монеты для улучшения своего оружия.<br />
<strong>Подписка.</strong> SPB TV – внутри приложения необходимо покупать подписку на месяц для просмотра определенного набора каналов.</p>
<h2><span style="color: #575757; font-size: 20px;">Прочие способы</span></h2>
<p>Есть способы, которые я пока не встречаются в мобильных играх или встречаются редко, но, как мне кажется, со временем они станут популярными.</p>
<ul>
<li>Брендирование – это реклама внутри приложения, но скрытая. Например, в социальных играх встречались цветочные клумбы с логотипом известной фаст-фудной компании.</li>
<li>Участие в исследованиях – пользователь должен пройти опрос или просто согласиться на отправку своих данных, за что он получит доступ к игровому контенту или новой функциональности. Пример, сервис Placed Affiliate.</li>
<li>Облачный сервис – пользователь покупает подписку к облачному сервису. На нем можно играть в любые платные игры компании (или компаний). Пример, компания Big Fish Games.</li>
</ul>
<h2><span style="color: #575757; font-size: 20px;">Заключение</span></h2>
<p>Для каждого типа игры подходит определенный способ монетизации. Например, глупо было бы игру с конечным сюжетом пытаться сделать free-to-play, т.к. после того как игра будет пройдена, пользователи уйдут и не будут больше приносить деньги и повышать рейтинг игры.<br />
Эти карточки я составила, чтобы держать их перед глазами во время написания концепции игры. С ними проще играться, их можно смешивать и получать новые способы. Например, многие игры смешивают у себя free-to-play + freemium или free-to-play + реклама. Эти карточки помогают четко видеть важные особенности различных способов монетизации и подбирать самый подходящий способ для конкретной игры.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://peekaboo-games.com/monetization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Мобильная игра без издателя</title>
		<link>http://peekaboo-games.com/mob_game/</link>
		<comments>http://peekaboo-games.com/mob_game/#comments</comments>
		<pubDate>Mon, 01 Jul 2013 08:26:44 +0000</pubDate>
		<dc:creator>helecta</dc:creator>
				<category><![CDATA[Главная]]></category>
		<category><![CDATA[Разработка]]></category>

		<guid isPermaLink="false">http://peekaboo-games.com/?p=252</guid>
		<description><![CDATA[Хочу поделиться своим опытом разработки и выпуска игры под Android. Сразу скажу, публиковались без издателя, т.к мы хотели по максимуму научится и разобраться в мобильной разработке. Под катом найдете во сколько обошелся такой проект. Идея написать что-то свое у меня появилась уже &#8230; <a href="http://peekaboo-games.com/mob_game/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Хочу поделиться своим опытом разработки и выпуска игры под Android. Сразу скажу, публиковались без издателя, т.к мы хотели по максимуму научится и разобраться в мобильной разработке. Под катом найдете во сколько обошелся такой проект.</p>
<p><span id="more-252"></span></p>
<p>Идея написать что-то свое у меня появилась уже давно. Для первого раза выбор пал напростую игру, чтобы на ней хорошенько потренироваться. Основной костяк команды состоит из геймдизайнера (я) и программиста. Мы наивно полагали, что сможем сами найти графику и музыку, что этот проект нам ничего не будет стоить. Первая наша ошибка. Чтобы сделать даже более менее качественную игру, без художника и композитора не обойтись. К середине проекта, когда мы это осознали, мы начали искать художника и композитора. В итоге, на мой взгляд, с художником и композитором нам очень повезло.</p>
<h1><span style="color: #888888; font-size: 22px;">Коротко про саму игру</span></h1>
<p>Простая казуальная аркада, где необходимо управляя тележкой (акселерометр), ловить камни. У тележки есть ограниченная вместимость, поэтому её надо постоянно разгружать табая по экрану. Название игры – <span style="text-decoration: underline;">Treasure on wheels</span>.</p>
<h1><span style="color: #888888; font-size: 22px;">Движок (несколько слов от программиста)</span></h1>
<blockquote><p>Выбор пал на бесплатный 2D движок для Андроида &#8212; AndEngine. В нем сразу привлекло отличное комьюнити разработчиков, огромное количество примеров, интеграция с физическим движком Box2D и конечно же java. В итоге уже через 1.5 месяца у нас был готов прототип игры с падающими квадратами и двигающимися прямоугольниками. На минусы этого движка мы наткнулись, только после того как у нас появилась графика в игре. Это постоянные артефакты на шрифтах и спрайтах, перегрузка всего графического контента при свертке-развертке приложения, потеря графики при загрузке и нещадный расход ресурсов.</p></blockquote>
<h1><span style="color: #888888; font-size: 22px;">Монетизация</span></h1>
<p>Основная цель создания этой игры &#8212; потренироваться. Мы старались придерживаться именно её (хотя конечно надеялись в глубине души хоть немного заработать). Мы решили сделать игру полностью бесплатной и без рекламы. Единственное, мы добавили в нее донейт. Когда-то я наткнулась на приложение для iOs &#171;Притчи&#187;, где если сделать донейт, то весь контент становится сразу доступным, если не сделать – то доступным станет через 10 дней. Мне было очень интересно, как работает этот способ. Поэтому выбрали именно его.</p>
<h1><span style="color: #888888; font-size: 22px;">Удивительные открытия после релиза</span></h1>
<p>Расскажу про неожиданные открытия после релиза. Во-первых, пользователи читают, на что дают разрешения при установке программ. Мы подключали Flurry для статистики. Впервые столкнувшись с данным сервисом, мы сразу же захотели получить от него все, что он может дать. В итоге &#8212; наше приложение начало запрашивать огромное количество ненужных разрешение у пользователя. В первые дни мы получили большое количество комментариев типа «Зачем вам знать мое точное местонахождение?! Не буду качать пока их так много». После этого нам пришлось отказаться от благ предоставленных Flurry и удовольствоваться минимальными его возможностями. Количество разрешение было сокращено.</p>
<p>Во-вторых, мы сделали Rate us не всплывающим окном, а кнопкой в меню. Я очень не хотела отвлекать игрока лишними окошками во время игры. Я надеялась, что игроки проголосуют, если им понравится игра. Но я ошиблась. Поэтому сделали обновление, куда добавили окошко Rate us. Оно появляется после 3-го уровня.</p>
<p>В-третьих, мы ошиблись с выбором управления. Мы даже не задумывались, что управление с помощью акселерометра может быть не удобным. Сейчас я понимаю, что нам стоило дать игроку выбор управления и возможность его переключения. Еще одна ошибка &#8212; мы сделали разгрузку тележки по нажатию на саму тележку, это сильно усложнило игру. Сейчас мы исправили этот момент, тележка разгружается, после нажатия на любое место на экране.</p>
<p>И последнее, пользователи не читаю помощь. Даже помощь перед уровнями, они её просто пропускают. Если им что-то не понятно, они скорей всего просто выключат и удалят игру, но не посмотрят помощь. Пользователя надо пошагово провести через управление и логику в игре.</p>
<h1><span style="color: #888888; font-size: 22px;">Продвижение игры</span></h1>
<p>Денег на продвижение у нас не осталось. Так что занимаюсь сама, в свободное время. В первые дни поместила информацию об игре на разных форумах, в соц. сетях. Разослала пресс релиз в некоторые блоги. Многие (в основном англоязычные блогеры) предлагали платные услуги. Мы согласились на два, но они дали нам мало скачек. Дальше начала рассылать инфу в разные группы в facebook и google +. Но отвечает очень мало народа. (Если интересно, могу дать весь набор ссылок, который я накопила)</p>
<p>На мой взгляд, самый действенный способ продвижения &#8212; оптимизация текста описания. Надо выделить все ключевые слова, по котором могут искать приложение, и постараться добавить их в описание.</p>
<h1><span style="color: #888888; font-size: 22px;">Немного статистики</span></h1>
<p>В первые дни после релиза, я расстроилась. Скачек было мало. Я ожидала большего. Было всего по 73 скачки в день. Нас можно было найти только по целенаправленному поиску нашей игры. Я сразу начала панически искать, как это исправить. Решила попробовать оптимизацию описания приложения в Google Play. Может именно это помогло, т.к постепенно количество скачек, начало расти.</p>
<p>За первую неделю мы набрали всего 866 скачек. Отзывы в основном были хорошие, но их было мало. После второй недели мы набрали – 2733 скачек. И рост не останавливался. Медленно, но верно, мы попали в топ новых и появились в категориях Аркады.</p>
<p>Сейчас прошло уже 3 недели. По России и Украине в категории Аркады мы занимаем – 254 место.</p>
<p>В топе новых бесплатных игр – 166 место. Качают нас преимущественно из России. Среднее количество скачек сейчас примерно 450 в день.</p>
<h1><span style="color: #888888; font-size: 22px;">Стоимость проекта</span></h1>
<p><b>Художник</b></p>
<ul>
<li>Графика базовая 315$ = 10238 руб</li>
<li>Графика дополнительная(иконка, логотип, лоадинг) 80$ = 2600 руб</li>
</ul>
<p><b>Композитор</b></p>
<ul>
<li>Звуки и музыка 100$ = 3250 руб</li>
</ul>
<p><b>Устройства для тестирования</b></p>
<ul>
<li>3 штуки – (Rover + Pocket Book) 7000 руб + (Samsung) 6500руб. (у нас во времяразработки сломалось 2 дешевых устройства)</li>
</ul>
<p><b>Аккаунт Google play</b> 975 руб</p>
<p><b>Обзоры</b></p>
<ul>
<li>2 обзора на английском – 59$ = 1888руб</li>
<li>Один русский – 200 руб</li>
<li>Пресс релиз mobileprwire.com – 18$ = 576руб</li>
</ul>
<p><b>Итого: ~33 300руб</b></p>
<p>По времени проект занял приблизительно 5 месяцев.</p>
<h1><span style="color: #888888; font-size: 22px;">Полезные инструменты</span></h1>
<p>Для накопление опыта, фиксирования ошибок и т.д мы использовали доски Trello. Для нас оказался очень удобным инструментом. Он позволял отслеживать этап разработки и помог сохранить весь опыт.</p>
<p>Для создания прототипа использовала &#8212; Microsoft Expression Blend 4. Очень удобная программа. Позволяет быстро накидать прототип, который значительно упрощает дальнейшую работу.</p>
]]></content:encoded>
			<wfw:commentRss>http://peekaboo-games.com/mob_game/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Наша реклама для Treasure On Wheels</title>
		<link>http://peekaboo-games.com/press_release/</link>
		<comments>http://peekaboo-games.com/press_release/#comments</comments>
		<pubDate>Sat, 29 Jun 2013 07:47:21 +0000</pubDate>
		<dc:creator>helecta</dc:creator>
				<category><![CDATA[Гейм-дизайн]]></category>
		<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://peekaboo-games.com/?p=244</guid>
		<description><![CDATA[В качестве пресс релиза мы решили сделать инфографику для нашей игры:)]]></description>
				<content:encoded><![CDATA[<p>В качестве пресс релиза мы решили сделать инфографику для нашей игры:)</p>
<p><span id="more-244"></span></p>
<div style="width:100%;">
<img alt="Treasure On Wheels" src="http://peekaboo-games.com/wp-content/uploads/2013/08/image.png" style="margin:auto;"/>
</div>
]]></content:encoded>
			<wfw:commentRss>http://peekaboo-games.com/press_release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Treasure on wheels &#8212; наш первый проект для Android</title>
		<link>http://peekaboo-games.com/treasure-on-wheels/</link>
		<comments>http://peekaboo-games.com/treasure-on-wheels/#comments</comments>
		<pubDate>Sun, 12 May 2013 11:50:19 +0000</pubDate>
		<dc:creator>helecta</dc:creator>
				<category><![CDATA[Гейм-дизайн]]></category>
		<category><![CDATA[Главная]]></category>
		<category><![CDATA[Новости]]></category>
		<category><![CDATA[Обзоры]]></category>

		<guid isPermaLink="false">http://peekaboo-games.com/?p=118</guid>
		<description><![CDATA[Вперед за сокровищами! Хватайте тележку и ловите падающие камни! Попробуйте себя в роли искателя Сокровищ. Отправляйтесь в мир захватывающих и веселых приключений. Вас ждет увлекательная история и красочная графика. Погружайтесь в мир приключений дома или в метро, ведь управление настолько &#8230; <a href="http://peekaboo-games.com/treasure-on-wheels/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<div style=" height:80px">
<p style="text-align: left;"><img style="border: 0px;padding:0px;margin-bottom:0px; " class=" wp-image-119 alignleft" alt="ic_launcher-web" src="http://peekaboo-games.com/wp-content/uploads/2013/05/ic_launcher-web-150x150.png" width="70" height="70" />Вперед за сокровищами!<br />
Хватайте тележку и ловите падающие камни!<br /> Попробуйте себя в роли искателя Сокровищ.</p>
</div>
<p></p>
<p><span id="more-118"></span></p>
<p>Отправляйтесь в мир захватывающих и веселых приключений.</p>
<ul>
<li>Вас ждет увлекательная история и красочная графика.</li>
<li>Погружайтесь в мир приключений дома или в метро, ведь управление настолько удобное и простое, что неважно, где вы будете играть!</li>
<li>Игра абсолютно бесплатна, но мы будет признательны за ваши отзывы или донейты.</li>
</ul>
<p><a href="http://peekaboo-games.com/wp-content/uploads/2013/05/screen1.jpg"><img class="alignnone size-thumbnail wp-image-120" alt="screen1" src="http://peekaboo-games.com/wp-content/uploads/2013/05/screen1-150x150.jpg" width="150" height="150" /></a> <a href="http://peekaboo-games.com/wp-content/uploads/2013/05/screen2.jpg"><img class="alignnone size-thumbnail wp-image-121" alt="screen2" src="http://peekaboo-games.com/wp-content/uploads/2013/05/screen2-150x150.jpg" width="150" height="150" /></a> <a href="http://peekaboo-games.com/wp-content/uploads/2013/05/screen3.jpg"><img class="alignnone size-thumbnail wp-image-122" alt="screen3" src="http://peekaboo-games.com/wp-content/uploads/2013/05/screen3-150x150.jpg" width="150" height="150" /></a> <a href="http://peekaboo-games.com/wp-content/uploads/2013/05/screen4.jpg"><img class="alignnone size-thumbnail wp-image-123" alt="screen4" src="http://peekaboo-games.com/wp-content/uploads/2013/05/screen4-150x150.jpg" width="150" height="150" /></a><br />
Играйте с удовольствием! <img alt=";)" src="http://s.4pda.to/forum/style_emoticons/default/wink.gif" border="0" /></p>
<p>Ссылка на Google Play: <a href="https://play.google.com/store/apps/details?id=com.treasureonwheels_peekaboo">https://play.google.com/store/apps/details?id=com.treasureonwheels_peekaboo</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://peekaboo-games.com/treasure-on-wheels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обзор мультиплатформенных фреймворков &#8212;  IBM WorkLight (6/6)</title>
		<link>http://peekaboo-games.com/framework_worklight/</link>
		<comments>http://peekaboo-games.com/framework_worklight/#comments</comments>
		<pubDate>Fri, 26 Apr 2013 13:57:56 +0000</pubDate>
		<dc:creator>Андрей Крохин</dc:creator>
				<category><![CDATA[Главная]]></category>
		<category><![CDATA[Разработка]]></category>

		<guid isPermaLink="false">http://peekaboo-games.com/?p=204</guid>
		<description><![CDATA[6) IBM WorkLight IBM WorkLight &#8212; по сути это не просто фреймворк, а целая платформа мобильных приложений, позволяющую эффективно разрабатывать, выполнять и поддерживать HTML5-приложения. Т.е. по сути WorkLight предоставляет нам: Интеграцию с Phonegap Структуру проекта Сервер который дает нам следующие &#8230; <a href="http://peekaboo-games.com/framework_worklight/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p dir="ltr"><span style="color: #008000; font-size: 16px;"><strong>6) <a href="http://www-01.ibm.com/software/mobile-solutions/worklight/"><span style="color: #008000;">IBM WorkLight</span></a></strong></span></p>
<p><img src="http://peekaboo-games.com/wp-content/uploads/2013/04/IBM-WorkLight.jpg" alt="логотип Worklight" /></p>
<p dir="ltr"><a href="http://www-01.ibm.com/software/mobile-solutions/worklight/">IBM WorkLight</a> &#8212; по сути это не просто фреймворк, а целая платформа мобильных приложений, позволяющую эффективно разрабатывать, выполнять и поддерживать HTML5-приложения. <span id="more-204"></span>Т.е. по сути WorkLight предоставляет нам:</p>
<ul>
<li>Интеграцию с Phonegap</li>
<li>Структуру проекта</li>
<li>Сервер который дает нам следующие интересные возможности:
<ul>
<li>Сервис авторизации клиентов</li>
<li>Консоль для администрирования клиентов</li>
<li>Принудительные обновления клиентских приложений</li>
<li>Push-рассылки</li>
<li>Легкая интеграция с другими продуктами IBM</li>
<li>Средства защиты на уровне устройства, приложения и сети</li>
<li>Площадка для адаптеров</li>
</ul>
</li>
<li>Удобный транспорт между мобильным приложением и сервером с бизнес-логикой. Транспорт осуществляется по средствам адаптеров (worklight adapter), которые представляют из себя JS процедуры вызова функционала с бизнес сервера. Доступны следующие виды адаптеров: SQL adapter, HTTP adapter, Cast Iron adapter, JMS adapter. Ниже представлен пример кода процедуры HTTP адаптера:
<div class="codecolorer-container javascript railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">function</span> getRequestToServ<span style="color: #009900;">&#40;</span>jsonObj<span style="color: #339933;">,</span> serviceName<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> input <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; method <span style="color: #339933;">:</span> <span style="color: #3366CC;">'get'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; returnedContentType <span style="color: #339933;">:</span> <span style="color: #3366CC;">'json'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; path <span style="color: #339933;">:</span> some_url<span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parameters <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #3366CC;">'message'</span> <span style="color: #339933;">:</span> jsonObj<span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #3366CC;">'service'</span> <span style="color: #339933;">:</span> serviceName<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> WL.<span style="color: #660066;">Server</span>.<span style="color: #660066;">invokeHttp</span><span style="color: #009900;">&#40;</span>input<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span></div></div>
<p>Пример вызова процедуры адаптера из мобильного приложения:</p>
<div class="codecolorer-container javascript railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> invocationData <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; adapter <span style="color: #339933;">:</span> <span style="color: #3366CC;">'MobileToBisquit'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; procedure <span style="color: #339933;">:</span> <span style="color: #3366CC;">'getRequestToBis'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; parameters <span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>String<span style="color: #009900;">&#40;</span>jsonObj<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>String<span style="color: #009900;">&#40;</span>serviceName<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; WL.<span style="color: #660066;">Client</span>.<span style="color: #660066;">invokeProcedure</span><span style="color: #009900;">&#40;</span>invocationData<span style="color: #339933;">,</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; onSuccess <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>result<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #006600; font-style: italic;">//some action &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; onFailure <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>result<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #006600; font-style: italic;">//some action</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
</li>
<li>Возможность указать необходимые нам платформы, тем самым при билде будут собираться сразу нативные версии под эти платформы, что дает нам возможность сразу тестировать на реальном или виртуальном устройстве</li>
<li>Возможность интеграции с известными JS мобильными фреймворками</li>
</ul>
<p dir="ltr">Существует плагин для эклипса позволяющий создавать WorkLight проекты</p>
<p dir="ltr"><span style="color: #008000; font-size: 16px;"><strong>7) Использование не фреймворков, а движков</strong></span> , таких как Corona SDK , Marmelade итп, скорее всего не целесообразны так как они больше  расчитаны под написание игр (работа с openGl, текстурами, физикой). Хотя и на них можно писать бизнес приложения, например с очень предовым интерфейсом, с тенями, сложной анимацией, падающими по всем законам физики монетами на заднем плане итп.</p>
<p>Продолжение:</p>
<p><a title="jQuery" href="http://peekaboo-games.com/frameworks_jquery/">Обзор мультиплатформенных фреймворков — jQuery Mobile (1/6)</a></p>
<p><a title="MGWT + PHONEGAP" href="http://peekaboo-games.com/frameworks_mgwt/">Обзор мультиплатформенных фреймворков — MGWT + PHONEGAP (2/6)</a></p>
<p><a title="Sencha Touch" href="http://peekaboo-games.com/framework_sencha/">Обзор мультиплатформенных фреймворков — Sencha Touch (3/6)</a></p>
<p><a title="Titanium" href="http://peekaboo-games.com/framework_titanium/">Обзор мультиплатформенных фреймворков — Appcelerator Titanium Mobile (4/6)</a></p>
<p><a title="Vaadin" href="http://peekaboo-games.com/framework_vaadin/">Обзор мультиплатформенных фреймворков — Vaadin TouchKit (5/6)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://peekaboo-games.com/framework_worklight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обзор мультиплатформенных фреймворков &#8212;  Vaadin TouchKit (5/6)</title>
		<link>http://peekaboo-games.com/framework_vaadin/</link>
		<comments>http://peekaboo-games.com/framework_vaadin/#comments</comments>
		<pubDate>Wed, 24 Apr 2013 13:46:28 +0000</pubDate>
		<dc:creator>Андрей Крохин</dc:creator>
				<category><![CDATA[Главная]]></category>
		<category><![CDATA[Разработка]]></category>

		<guid isPermaLink="false">http://peekaboo-games.com/?p=197</guid>
		<description><![CDATA[5) Vaadin TouchKit Vaadin TouchKit &#8212; мобильная версия фреймворка Vaadin. Принцип работы практически такой же. Из коробки фреймворк предоставляет нам мобильные UI компоненты (по умолчанию iOS тема), так же удобный менеджер навигации. Вся разработка ведется на Java, конечная сборка через &#8230; <a href="http://peekaboo-games.com/framework_vaadin/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p dir="ltr"><strong><span style="color: #008000;font-size: 16px;">5) <a href="https://vaadin.com/add-ons/touchkit"><span style="color: #008000;">Vaadin TouchKit</span></a></span></strong></p>
<p><img src="http://peekaboo-games.com/wp-content/uploads/2013/04/IAV97PWme7M.jpg" alt="Vaadin лого" /></p>
<p dir="ltr">Vaadin TouchKit &#8212; мобильная версия фреймворка Vaadin. Принцип работы практически такой же. Из коробки фреймворк предоставляет нам мобильные UI компоненты (по умолчанию iOS тема), так же удобный менеджер навигации. Вся разработка ведется на Java, конечная сборка через PhoneGap</p>
<p><span id="more-197"></span></p>
<p dir="ltr">К достоинствам Vaadin TouchKit можно отнести:</p>
<ul>
<li>Люди знакомые с Vaadin без особых проблем смогут разрабатывать на TouchKit</li>
<li>Возможность разработки проекта в Maven</li>
<li>Доступны все базовые UI компоненты</li>
<li>Код пишется на Java</li>
</ul>
<p id="docs-internal-guid-6a7f3587-f5af-2e97-1c03-3a9d7780ecb8">К недостаткам можно отнести:</p>
<ul>
<li>Платный (750$)</li>
<li>Конкретно по Vaadin TouchKit почти нет примеров</li>
<li>По умолчанию доступна лишь тема для iOs</li>
<li>Из субъективных описаний людей пользовавшихся Vaadin TouchKit складывается впечатление, что он работает медленнее нежели JS фреймворки</li>
<li>Мало сторонних библиотек, а они нужны так как стандартных компонентов UI явно недостаточно для красивого приложения.</li>
<li>Поддерживает только платформы : Android и iOs</li>
</ul>
<p dir="ltr">Пример работы:</p>
<p id="docs-internal-guid-6a7f3587-f5b0-e913-c562-75beac108043">Мобильное приложение должно иметь класс TouchKitApplication в отличии от десктопного в котором был Application. Таким образом каркас имеет вид:</p>
<div class="codecolorer-container java railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> VornitologistApplication <span style="color: #000000; font-weight: bold;">extends</span> TouchKitApplication <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">private</span> TouchKitWindow mainWindow<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Custom configurations (app icons etc) for main window need</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// to be set eagerly as they are written on the &quot;host page&quot;.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; ConfigureMainWindow<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; setTheme<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;vornitologist&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p dir="ltr">Графический интерфейс инициализируется лишь после того как приложение получит данные браузера от устройства:</p>
<div class="codecolorer-container java railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">@Override<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onBrowserDetailsReady<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; mainWindow.<span style="color: #006633;">setContent</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> MainTabsheet<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span></div></div>
<p id="docs-internal-guid-6a7f3587-f5b0-81b9-dbe5-a170a1ed1745">Пример создания навбара  (вырвано из кода но в общем дает картину):</p>
<div class="codecolorer-container java railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> MainTabsheet <span style="color: #000000; font-weight: bold;">extends</span> TabBarView <span style="color: #009900;">&#123;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">private</span> MapView mapView<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">private</span> LatestObservations latestObservations<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">private</span> ClassificationHierarchy classificationHierarchy<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> MainTabsheet<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aresourcebundle+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">ResourceBundle</span></a> tr <span style="color: #339933;">=</span> Translations.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span>VornitologistApplication.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span style="color: #006633;">getLocale</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">/*<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Populate main views<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; classificationHierarchy <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ClassificationHierarchy<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Tab addTab <span style="color: #339933;">=</span> addTab<span style="color: #009900;">&#40;</span>classificationHierarchy<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; addTab.<span style="color: #006633;">setIcon</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ThemeResource<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;linegraphics/bird.png&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; addTab.<span style="color: #006633;">setCaption</span><span style="color: #009900;">&#40;</span>tr.<span style="color: #006633;">getString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Aves&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; latestObservations <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> LatestObservations<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; addTab <span style="color: #339933;">=</span> addTab<span style="color: #009900;">&#40;</span>latestObservations<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; addTab.<span style="color: #006633;">setIcon</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ThemeResource<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;linegraphics/binocular.png&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addTab.<span style="color: #006633;">setCaption</span><span style="color: #009900;">&#40;</span>tr.<span style="color: #006633;">getString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Observations&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mapView <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MapView<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;addTab <span style="color: #339933;">=</span> addTab<span style="color: #009900;">&#40;</span>mapView<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;addTab.<span style="color: #006633;">setIcon</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> &nbsp; ThemeResource<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;linegraphics/world.png&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;addTab.<span style="color: #006633;">setCaption</span><span style="color: #009900;">&#40;</span>tr.<span style="color: #006633;">getString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Map&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SettingsView settings <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> SettingsView<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;addTab <span style="color: #339933;">=</span> addTab<span style="color: #009900;">&#40;</span>settings<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;addTab.<span style="color: #006633;">setIcon</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ThemeResource<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;linegraphics/tools.png&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;addTab.<span style="color: #006633;">setCaption</span><span style="color: #009900;">&#40;</span>tr.<span style="color: #006633;">getString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Settings&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">/*<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Make settings view as the default. This would not be best option for<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* a real application, but it also serves as our demos welcome page.<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setSelectedTab<span style="color: #009900;">&#40;</span>settings<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p id="docs-internal-guid-6a7f3587-f5b0-6673-8635-2b8115a40565">Пример интерфейса написаного на TouchKit:</p>
<p style="text-align: center;"><img class="aligncenter" alt="" src="https://lh4.googleusercontent.com/rOBd6cFLsmItO9_YvreVTtWTf5Hy1P01R6ARZ1-8Qs1WFi0TqOzkiG5OdNBtfEuTDwdBGUkBHnJegSHFfy-SE7SynOjKzgpqbusl4oKoXMarzmN_3qqNBRagHg" width="311px;" height="518px;" /></p>
<p> Для полной картины можно посмотреть ветку с кодом примера <a href="http://dev.vaadin.com/browser/demo/vornitologist/">здесь</a> , а полюбоваться его онлайн-демо можно <a href="http://demo.vaadin.com/vornitologist">здесь.</a></p>
<p>Продолжение:<br />
<a title="jQuery" href="http://peekaboo-games.com/frameworks_jquery/">Обзор мультиплатформенных фреймворков — jQuery Mobile (1/6)</a><br />
<a title="MGWT + PHONEGAP" href="http://peekaboo-games.com/frameworks_mgwt/">Обзор мультиплатформенных фреймворков — MGWT + PHONEGAP (2/6)</a><br />
<a title="Sencha Touch" href="http://peekaboo-games.com/framework_sencha/">Обзор мультиплатформенных фреймворков — Sencha Touch (3/6)</a><br />
<a title="Titanium" href="http://peekaboo-games.com/framework_titanium/">Обзор мультиплатформенных фреймворков — Appcelerator Titanium Mobile (4/6)</a><br />
<a title="WorkLight" href="http://peekaboo-games.com/framework_worklight/">Обзор мультиплатформенных фреймворков — IBM WorkLight (6/6)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://peekaboo-games.com/framework_vaadin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обзор мультиплатформенных фреймворков &#8212;  Appcelerator Titanium Mobile (4/6)</title>
		<link>http://peekaboo-games.com/framework_titanium/</link>
		<comments>http://peekaboo-games.com/framework_titanium/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 13:37:37 +0000</pubDate>
		<dc:creator>Андрей Крохин</dc:creator>
				<category><![CDATA[Главная]]></category>
		<category><![CDATA[Разработка]]></category>

		<guid isPermaLink="false">http://peekaboo-games.com/?p=189</guid>
		<description><![CDATA[4) Appcelerator Titanium Mobile Titanium Mobile &#8212; это нечто большее чем просто фреймворк. В поставке идет на пару вместе с Appcelerator Titanium Studio, предоставляющего возможность эмуляции устройств , а так же сборки приложения. По сути приложения пишутся на JS. К &#8230; <a href="http://peekaboo-games.com/framework_titanium/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p dir="ltr"><strong><span style="color: #008000; font-size: 16px;"><a href="http://docs.appcelerator.com/titanium/latest/#"><span style="color: #008000;">4) Appcelerator Titanium Mobile</span></a></span></strong></p>
<p><img src="http://peekaboo-games.com/wp-content/uploads/2013/04/titanium_sdk_blue.jpg" alt="titanium лого" /></p>
<p dir="ltr">Titanium Mobile &#8212; это нечто большее чем просто фреймворк. В поставке идет на пару вместе с Appcelerator Titanium Studio, предоставляющего возможность эмуляции устройств , а так же сборки приложения. По сути приложения пишутся на JS.</p>
<p><span id="more-189"></span></p>
<p dir="ltr">К достоинствам Titanium Mobile можно отнести:</p>
<ul>
<li>Собственная среда разработки , позволяющая не только моделировать устройства, но и делать сборку проекта , т.е. тем самым нам больше не понадобится PhoneGap. Система на основе Eclipce</li>
<li>Облегченная версия для разработки &#8212; бесплатная.</li>
<li>При покупке полной версии доступна куча возможностей от управления пуш сообщениями до облачных решений, позволяющих конечному пользователю получать доступ к контенту без привязки к устройству, а также позволяющие взаимодействовать с устройствами других пользователей и получать доступ к их локальному контенту.</li>
</ul>
<p dir="ltr">Рассмотрим технологию разработки на примере экрана с несколькими строками , при нажатии на которые открывается соответствующее данной строке окно. При нажатии на подстроку в открывшемся окне проигрывается звуковой файл.</p>
<p dir="ltr">Интерфейс включает в себя несколько экземпляров Titanium Window и Titanium TableView. «Главный» экран представляет собой список строк. После выбора строки создается новый экземпляр Titanium Window, который заполняется соответствующимTableView.</p>
<p dir="ltr">Отвечающий за интерфейс код app.js:</p>
<div class="codecolorer-container java railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">var data <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span>title<span style="color: #339933;">:</span> <span style="color: #0000ff;">'Строка номер 1'</span>, view<span style="color: #339933;">:</span> <span style="color: #0000ff;">'v/string1.js'</span><span style="color: #009900;">&#125;</span>, &nbsp;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#123;</span>title<span style="color: #339933;">:</span> <span style="color: #0000ff;">'Строка номер 2'</span>, view<span style="color: #339933;">:</span> <span style="color: #0000ff;">'v/string2.js'</span><span style="color: #009900;">&#125;</span>, &nbsp; &nbsp;<br />
<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
var window <span style="color: #339933;">=</span> Titanium.<span style="color: #006633;">UI</span>.<span style="color: #006633;">createWindow</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; title<span style="color: #339933;">:</span> <span style="color: #0000ff;">'Тестовый пример'</span>, &nbsp;<br />
&nbsp; &nbsp; backgroundColor<span style="color: #339933;">:</span><span style="color: #0000ff;">'#000'</span>, &nbsp;<br />
&nbsp; &nbsp; exitOnClose<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">true</span>, &nbsp;<br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
var tableView <span style="color: #339933;">=</span> Titanium.<span style="color: #006633;">UI</span>.<span style="color: #006633;">createTableView</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; data<span style="color: #339933;">:</span> data, &nbsp;<br />
&nbsp; &nbsp; headerTitle<span style="color: #339933;">:</span> <span style="color: #0000ff;">'Тестовый пример'</span>, &nbsp;<br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
window.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>tableView<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
window.<span style="color: #006633;">open</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></div></div>
<p dir="ltr"><b id="docs-internal-guid-6a7f3587-f5aa-c4f4-30ef-f6ffdad2cc81">Код в string1.js имеет вид:</b></p>
<div class="codecolorer-container java railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">var win <span style="color: #339933;">=</span> Titanium.<span style="color: #006633;">UI</span>.<span style="color: #006633;">currentWindow</span><span style="color: #339933;">;</span><br />
var data <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span>title<span style="color: #339933;">:</span> <span style="color: #0000ff;">'Подстрока 1'</span>, file<span style="color: #339933;">:</span> <span style="color: #0000ff;">'sound_01.mp3'</span><span style="color: #009900;">&#125;</span>, &nbsp;<br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span>title<span style="color: #339933;">:</span> <span style="color: #0000ff;">'Подстрока 2'</span>, file<span style="color: #339933;">:</span> <span style="color: #0000ff;">'sound_02.mp3'</span><span style="color: #009900;">&#125;</span>, &nbsp;<br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span>title<span style="color: #339933;">:</span> <span style="color: #0000ff;">'Подстрока 3'</span>, file<span style="color: #339933;">:</span> <span style="color: #0000ff;">'sound_03.mp3'</span><span style="color: #009900;">&#125;</span>, &nbsp;<br />
<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
<br />
var tableView <span style="color: #339933;">=</span> Titanium.<span style="color: #006633;">UI</span>.<span style="color: #006633;">createTableView</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; data<span style="color: #339933;">:</span> data,<br />
&nbsp; &nbsp; headerTitle<span style="color: #339933;">:</span> <span style="color: #0000ff;">'Строка 1'</span>,<br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p dir="ltr"><b id="docs-internal-guid-6a7f3587-f5aa-a8e0-9ef3-a76ab275d037">Обработка нажатий :</b></p>
<div class="codecolorer-container java railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">tableView.<span style="color: #006633;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'click'</span>, function<span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; var win <span style="color: #339933;">=</span> Titanium.<span style="color: #006633;">UI</span>.<span style="color: #006633;">createWindow</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; url<span style="color: #339933;">:</span> e.<span style="color: #006633;">rowData</span>.<span style="color: #006633;">view</span>, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; title<span style="color: #339933;">:</span> e.<span style="color: #006633;">rowData</span>.<span style="color: #006633;">title</span>, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; navBarHidden<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">true</span>, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; exitOnClose<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">false</span>, &nbsp;<br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; win.<span style="color: #006633;">open</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p dir="ltr"><b id="docs-internal-guid-6a7f3587-f5aa-9471-e944-6a147c9aef67">Проигрывание звука:</b></p>
<div class="codecolorer-container java railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">tableView.<span style="color: #006633;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'click'</span>, function <span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; var sound <span style="color: #339933;">=</span> Titanium.<span style="color: #006633;">Media</span>.<span style="color: #006633;">createSound</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; sound.<span style="color: #006633;">url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'../mp3/'</span> <span style="color: #339933;">+</span> e.<span style="color: #006633;">rowData</span>.<span style="color: #006633;">file</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; Titanium.<span style="color: #006633;">API</span>.<span style="color: #006633;">info</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mp3/'</span> <span style="color: #339933;">+</span> e.<span style="color: #006633;">rowData</span>.<span style="color: #006633;">file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; sound.<span style="color: #006633;">play</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p dir="ltr">Как видно все приложение написано на JS. По сути мы имеем опять таки событийную модель работы, что позволяет гибко разделить визуальную функциональную часть приложения.</p>
<p dir="ltr">Минусы использования :</p>
<ul>
<li>Цена за pro версию доходит до 2500$ в месяц !! (хотя для обычной разработки она не нужна)</li>
<li>Достаточно высокий порог вхождения</li>
</ul>
<p>Продолжение:<br />
<a title="jQuery" href="http://peekaboo-games.com/frameworks_jquery/">Обзор мультиплатформенных фреймворков — jQuery Mobile (1/6)</a><br />
<a title="MGWT + PHONEGAP" href="http://peekaboo-games.com/frameworks_mgwt/">Обзор мультиплатформенных фреймворков — MGWT + PHONEGAP (2/6)</a><br />
<a title="Sencha Touch" href="http://peekaboo-games.com/framework_sencha/">Обзор мультиплатформенных фреймворков — Sencha Touch (3/6)</a><br />
<a title="Vaadin" href="http://peekaboo-games.com/framework_vaadin/">Обзор мультиплатформенных фреймворков — Vaadin TouchKit (5/6)</a><br />
<a title="WorkLight" href="http://peekaboo-games.com/framework_worklight/">Обзор мультиплатформенных фреймворков — IBM WorkLight (6/6)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://peekaboo-games.com/framework_titanium/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обзор мультиплатформенных фреймворков &#8212;  Sencha Touch (3/6)</title>
		<link>http://peekaboo-games.com/framework_sencha/</link>
		<comments>http://peekaboo-games.com/framework_sencha/#comments</comments>
		<pubDate>Mon, 22 Apr 2013 14:25:05 +0000</pubDate>
		<dc:creator>Андрей Крохин</dc:creator>
				<category><![CDATA[Главная]]></category>
		<category><![CDATA[Разработка]]></category>

		<guid isPermaLink="false">http://peekaboo-games.com/?p=180</guid>
		<description><![CDATA[3) Sencha Touch Sencha Touch (ST) – еще один фреймворк для разработки под мобильные платформы созданный на основе ExtJs. Основная цель ST – по мере возможности мимикрировать стандартный интерфейс и поведение элементов интерфейса мобильной платформы, предоставив программистам гибкое API. Соответственно, &#8230; <a href="http://peekaboo-games.com/framework_sencha/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p dir="ltr"><span style="color: #008000;"><b>3) <a href="http://www.sencha.com/products/touch/"><span style="color: #008000; font-size: 16px;">Sencha Touch</span></a></b></span></p>
<p><img src="http://peekaboo-games.com/wp-content/uploads/2013/04/sencha-large.png" alt="Sencha лого" /></p>
<p dir="ltr">Sencha Touch (ST) – еще один фреймворк для разработки под мобильные платформы созданный на основе ExtJs. Основная цель ST – по мере возможности мимикрировать стандартный интерфейс и поведение элементов интерфейса мобильной платформы, предоставив программистам гибкое API. Соответственно, ST-приложение – это обычная клиент-серверная разработка, в качестве клиента выступает браузер Safari или Chrome или какой-либо другой webView, а в качестве сервера – любой сервис, способный «отвечать» в форматах JSON, XML и еще нескольких других.</p>
<p><span id="more-180"></span></p>
<p dir="ltr">По сути фреймворк представляет собой опять знакомую нам связку HTML5 + JS + CSS. Но в данном случае мы получаем больший упор на JS нежели на HTML5 при разработке интерфейса. Фреймворк предоставляет гибкие средства для разработки собственных UI компонентов , как на основе уже существующих , так и с нуля.  Любой компонент библиотеки по факту является ST-объектом с набором методов и свойств.</p>
<p dir="ltr">К достоинствам Sencha можно отнести:</p>
<ul>
<li>Гибкость создания своего собственного интерфейса, по средством создания собственных компонент (более строгие требования к компонентам)</li>
<li>много документации для быстрого старта</li>
<li>наличие обзоров на русском языке</li>
<li>бесплатный</li>
<li>присутствует графическая среда разработки интерфейсов : <a href="http://www.sencha.com/products/architect/download/">Sencha Architect</a> (платная 400$ с триалом на 30 дней)</li>
<li>низкий порог вхождения</li>
</ul>
<p dir="ltr">Кроме методов и свойств у большинства объектов есть события, на которые можно развешивать обработчики и шаблон вывода для визуальных элементов. Событий в мире ST очень много: фактически, каждый чих в этом мире является событием: начиная от создания элемента и добавления его на страницу, его отрисовкой и заканчивая уничтожением.</p>
<p dir="ltr">Ядро распадается на несколько множеств классов:</p>
<ul>
<li>Data — всяческая работа с данными, хранилища, преобразовании данных и работа с массивами данных, фильтрация, проверка и пр. Авторы попробовали ввести понятие модели данных (из MVC) и правил проверки (валидации), включая связи типа «многие к одному». Польза от этого нововведения довольно сомнительна, так как на стороне сервера все равно нужно будет проводить повторную проверку, но все же.</li>
<li>Form — элементы интерфейса. Текстовое поле, выпадающий список, календарик, обычный список, переключатели и галочки — все это здесь.</li>
<li>Layout — Часть ядра, отвечающая за рендеринг элементов в окне браузера. В теории, форма может находится одна на странице или быть частью панели вкладок, элементы могут быть прижаты к верху или низу формы.</li>
<li>Lib — базовые компоненты ядра.</li>
<li>Util — всевозможные утилиты и классы, которые не должны вызываться напрямую.</li>
</ul>
<p dir="ltr">На данный момент доступна версия Sencha Touch &#8212; 2.2.1.</p>
<ol>
<li><strong>Рассмотрим пошаговую инструкцию по созданию проекта Sencha Touch 2:</strong><br />
Для работы с SenchaTouch понадобиться :</p>
<ul>
<li><a href="http://www.sencha.com/products/touch/download/">Скачать SDK</a></li>
<li><a href="http://www.sencha.com/products/sencha-cmd/download ">Скачать SenchaCMD</a></li>
<li><a href="http://rubyinstaller.org/downloads/ ">Скачать Ruby(причем не последнюю версию , а 1.9.3)</a></li>
</ul>
<p>Скачав SDK разархивируем его в какой-либо каталог. Дальше инсталим SenchaCMD и Ruby. Обязательно стоит помнить , что нельзя допускать пробелов в путях инстала.<br />
Необходимо убедиться что Ruby и SenchaCmd прописаны в системной пременной Path.</p>
<p>После этого в cmd (виндовой) прописываем:</p>
<div class="codecolorer-container javascript railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sencha <span style="color: #339933;">-</span>sdk <span style="color: #339933;">/</span>path<span style="color: #339933;">/</span>to<span style="color: #339933;">/</span>sdk generate app MyApp <span style="color: #339933;">/</span>path<span style="color: #339933;">/</span>to<span style="color: #339933;">/</span>www<span style="color: #339933;">/</span>myapp</div></div>
<p>После чего создастся скелет проекта, в который сразу подтянутся файлы из библиотеки.<br />
Для сборки пакета (подчистит и оптимизирует и сгенерит нужное) необходимо встать в корень проекта и в командной строке набрать</p>
<div class="codecolorer-container javascript railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sencha app build</div></div>
<p>Для сборки нативного приложения</p>
<div class="codecolorer-container javascript railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sencha app build native</div></div>
<p>Все конфигурации для сборки нативного приложения прописываются в <strong>packager.json</strong></p>
<p>Запустить на эмуляторе/устройстве :</p>
<div class="codecolorer-container javascript railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sencha app build <span style="color: #339933;">-</span>run native</div></div>
<p>Таким образом мы видим, что сборку проекта можно осуществлять средствами Sencha Cmd и нет необходимости в сторонних упаковщиках</li>
<li><strong> Рассмотрим работу SenchaTouch + Cordova (на примере Android):</strong><br />
Для работы нам понадобиться :</p>
<ul>
<li><a href="http://www.sencha.com/products/touch/download/">Скачать SDK</li>
<li><a href="http://www.sencha.com/products/sencha-cmd/download">Скачать SenchaCMD</a></li>
<li><a href="http://rubyinstaller.org/downloads/">Скачать Ruby(причем не последнюю версию , а 1.9.3)</a></li>
<li><a href="http://www.eclipse.org/downloads/">Скачать Eclipse</a></li>
<li><a href="http://developer.android.com/sdk/index.html">Скачать Android SDK</a></li>
<li><a href="https://dl-ssl.google.com/android/eclipse/">Скачать и установить плагин Android под Eclipse</a></li>
<li><a href="http://phonegap.com/download/#">Скачать PhoneGap</a></li>
</ul>
<p>Создаем проект Sencha:</p>
<div class="codecolorer-container javascript railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sencha <span style="color: #339933;">-</span>sdk <span style="color: #339933;">/</span>path<span style="color: #339933;">/</span>to<span style="color: #339933;">/</span>sdk generate app MyApp <span style="color: #339933;">/</span>path<span style="color: #339933;">/</span>to<span style="color: #339933;">/</span>www<span style="color: #339933;">/</span>myapp</div></div>
<p>Затем переходим в корень проекта и руками создаем каталог <strong>android</strong>. В архиве с PhoneGap идем в каталог <strong>lib\android</strong> и копируем от туда <strong>cordova-2.6.0.js</strong> в корень нашего проекта. В нашем проекте присутствует файл app.json. Открываем его и прописываем нашу js библиотеку. Выглядит примерно так:</p>
<div class="codecolorer-container javascript railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #3366CC;">&quot;js&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #3366CC;">&quot;path&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;cordova-2.6.0.js&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>&nbsp; &nbsp; &nbsp; <br />
....<br />
<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span></div></div>
<p>Далее открываем Eclipse и создаем в нем Android проект, в качестве воркспейса для проекта указываем путь : <strong><путь к нашему проекту>\android</strong>. Т.е. таким образом в итоге в нашем каталоге с проектом создастся каталог android в котором будет создан андроид проект. По сути, что мы хотим, это сделать андроид проект в который будет собираться Sencha и как результат получить нативный проект.<br />
Идем дальше. В папке <strong>assets </strong>нашего андроид проекта создаем каталог <strong>www </strong>, в который и будет билдиться Sencha.<br />
В каталог <strong>libs </strong>нашего андроид проекта мы копируем <strong>cordova-2.6.0.jar</strong>, а в каталог <strong>res </strong>копируем каталог <strong>xml </strong>из архива phonegap (lib\android)<br />
Открываем activity нашего андроид проекта и меняем его код на следующий (все кроме декларации пакета):</p>
<div class="codecolorer-container java railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.Bundle</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.cordova.DroidGap</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> AndroidSecnhaActivity <span style="color: #000000; font-weight: bold;">extends</span> DroidGap <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #008000; font-style: italic; font-weight: bold;">/** Called when the activity is first created. */</span><br />
&nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle savedInstanceState<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>savedInstanceState<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; setIntegerProperty<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;loadUrlTimeoutValue&quot;</span>, <span style="color: #cc66cc;">600000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">loadUrl</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;file:///android_asset/www/&lt;название типа билда,к примеру testing&gt;/index.html&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>Открываем <strong>AndroidManifest </strong>нашего андроид приложения и прописываем необходимые нам права, к примеру :</p>
<div class="codecolorer-container javascript railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>supports<span style="color: #339933;">-</span>screens <br />
&nbsp; &nbsp; &nbsp; &nbsp; android<span style="color: #339933;">:</span>largeScreens<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;true&quot;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; android<span style="color: #339933;">:</span>normalScreens<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;true&quot;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; android<span style="color: #339933;">:</span>smallScreens<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;true&quot;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; android<span style="color: #339933;">:</span>resizeable<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;true&quot;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; android<span style="color: #339933;">:</span>anyDensity<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;true&quot;</span> <span style="color: #339933;">/&gt;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span><span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;android.permission.VIBRATE&quot;</span> <span style="color: #339933;">/&gt;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span><span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;android.permission.ACCESS_COARSE_LOCATION&quot;</span> <span style="color: #339933;">/&gt;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span><span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;android.permission.ACCESS_FINE_LOCATION&quot;</span> <span style="color: #339933;">/&gt;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span><span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;android.permission.ACCESS_LOCATION_EXTRA_COMMANDS&quot;</span> <span style="color: #339933;">/&gt;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span><span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;android.permission.READ_PHONE_STATE&quot;</span> <span style="color: #339933;">/&gt;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span><span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;android.permission.INTERNET&quot;</span> <span style="color: #339933;">/&gt;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span><span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;android.permission.RECEIVE_SMS&quot;</span> <span style="color: #339933;">/&gt;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span><span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;android.permission.RECORD_AUDIO&quot;</span> <span style="color: #339933;">/&gt;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span><span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;android.permission.MODIFY_AUDIO_SETTINGS&quot;</span> <span style="color: #339933;">/&gt;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span><span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;android.permission.READ_CONTACTS&quot;</span> <span style="color: #339933;">/&gt;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span><span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;android.permission.WRITE_CONTACTS&quot;</span> <span style="color: #339933;">/&gt;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span><span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;android.permission.WRITE_EXTERNAL_STORAGE&quot;</span> <span style="color: #339933;">/&gt;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span><span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;android.permission.ACCESS_NETWORK_STATE&quot;</span> <span style="color: #339933;">/&gt;</span> <br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span><span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;android.permission.GET_ACCOUNTS&quot;</span> <span style="color: #339933;">/&gt;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span><span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;android.permission.BROADCAST_STICKY&quot;</span> <span style="color: #339933;">/&gt;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span><span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;android.permission.SEND_SMS&quot;</span><span style="color: #339933;">/&gt;</span></div></div>
<p>Рефрешим Android проект и тем самым мы подгатовили phonegap к работе!</p>
<p>Если мы хотим подключить плагинг к phonegap,  к примеру SmsSendingPlugin, то нам необходимо выполнить следующие действия:<br />
В <strong>app.json</strong> прописываем плагин:</p>
<div class="codecolorer-container javascript railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #3366CC;">&quot;js&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #3366CC;">&quot;path&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;SmsSendingPlugun.js&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>&nbsp; &nbsp; &nbsp; <br />
....<br />
<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span></div></div>
<p>В <strong>src </strong>Андроид проекта кладем <strong>SmsSendingPlugin.java</strong> изменяя ему пакет.<br />
В андроид проекте идем в каталог <strong>res\xml</strong> и открываем находящийся в нем файл <strong>config.xml</strong>. В конец списка плагинов прописываем</p>
<div class="codecolorer-container javascript railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>plugin <span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;SmsSendingPlugin&quot;</span> value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;com.example.androidsencha.SmsSendingPlugin&quot;</span><span style="color: #339933;">/&gt;</span>.</div></div>
<p>Теперь мы можем работать с данным плагином.</p>
<table>
<tr>
<td>ВАЖНО ПОМНИТЬ: Код программы мы пишем в проекте Sencha а не Android</td>
</tr>
</table>
<p>После того как все готово из каталога нашего проекта в командной строке пишем :</p>
<div class="codecolorer-container javascript railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sencha app build <span style="color: #003366; font-weight: bold;">package</span> android\assets\www</div></div>
<p>Теперь в Eclipse рефрешим проект и получаем готовый результат &#8212; можно заливать на устройство и тестить!
</li>
<li>
<strong>Ну и наконец &#8212; пример кода:</strong><br />
В данном примере создается ТабПанель с тремя вкладками:</p>
<div class="codecolorer-container javascript railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Ext.<span style="color: #660066;">application</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; launch<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Ext.<span style="color: #660066;">create</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Ext.TabPanel'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fullscreen<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tabBarPosition<span style="color: #339933;">:</span> <span style="color: #3366CC;">'bottom'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; styleHtmlContent<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; items<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; title<span style="color: #339933;">:</span> <span style="color: #3366CC;">'Home'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; iconCls<span style="color: #339933;">:</span> <span style="color: #3366CC;">'home'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; html<span style="color: #339933;">:</span> <span style="color: #3366CC;">'Home container'</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; title<span style="color: #339933;">:</span> <span style="color: #3366CC;">'Profile'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; iconCls<span style="color: #339933;">:</span> <span style="color: #3366CC;">'user'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; html<span style="color: #339933;">:</span> <span style="color: #3366CC;">'Profile container'</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; title<span style="color: #339933;">:</span> <span style="color: #3366CC;">'Settings'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; iconCls<span style="color: #339933;">:</span> <span style="color: #3366CC;">'settings'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; html<span style="color: #339933;">:</span> <span style="color: #3366CC;">'Settings container'</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#93;</span> <span style="color: #006600; font-style: italic;">// items</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// create()</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// launch</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// application()</span></div></div>
</li>
</ol>
<p>Минусы Sencha Touch:</p>
<ul>
<li>Не до конца понятное поведение на Android устройствах. Вы спокойно можете столкнуться с тем, что разработанное вами приложение будет жутко тормозить на крутом планшете с 4-ех ядерным процессором и одновременно с этим достаточно быстро работать на вашем стареньком Samsung Tab 2.</li>
<li>Проблемы с быстродействием из-за чрезмерного использования css3 и раздутой DOM модели</li>
<li>Фреймворк постоянно обновляется и различия между соседними версиями зачастую губят ваше приложение при апдейте sdk. Поэтому всегда нужно быть готовым к проблемам.</li>
</ul>
<p>Продолжение:<br />
<a title="jQuery Mobile" href="http://peekaboo-games.com/frameworks_jquery/">Обзор мультиплатформенных фреймворков — jQuery Mobile (1/6)</a><br />
<a title="MGWT + PHONEGAP" href="http://peekaboo-games.com/frameworks_mgwt/">Обзор мультиплатформенных фреймворков — MGWT + PHONEGAP (2/6)</a><br />
<a title="Titanium" href="http://peekaboo-games.com/framework_titanium/">Обзор мультиплатформенных фреймворков — Appcelerator Titanium Mobile (4/6)</a><br />
<a title="Vaadin" href="http://peekaboo-games.com/framework_vaadin/">Обзор мультиплатформенных фреймворков — Vaadin TouchKit (5/6)</a><br />
<a title="WorkLight" href="http://peekaboo-games.com/framework_worklight/">Обзор мультиплатформенных фреймворков — IBM WorkLight (6/6)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://peekaboo-games.com/framework_sencha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обзор мультиплатформенных фреймворков &#8212;  MGWT + PHONEGAP (2/6)</title>
		<link>http://peekaboo-games.com/frameworks_mgwt/</link>
		<comments>http://peekaboo-games.com/frameworks_mgwt/#comments</comments>
		<pubDate>Mon, 22 Apr 2013 13:13:59 +0000</pubDate>
		<dc:creator>Андрей Крохин</dc:creator>
				<category><![CDATA[Главная]]></category>
		<category><![CDATA[Разработка]]></category>

		<guid isPermaLink="false">http://peekaboo-games.com/?p=173</guid>
		<description><![CDATA[2)  MGWT + PHONEGAP Как альтернативу разработки мобильного приложения с использованием JavaScript можно использовать фреймворк MGWT. По сути это тот же Google Web Tools позволяющий писать логику веб приложения на JAVA , которая позже компилируется в JS. MGWT не заменяет &#8230; <a href="http://peekaboo-games.com/frameworks_mgwt/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p dir="ltr"><span style="color: #008000;"><b id="docs-internal-guid-6a7f3587-f5a1-0f52-2170-b400c9f2dd13">2)  <a href="http://m-gwt.com/"><span style="color: #008000; font-size: 16px;">MGWT + PHONEGAP</span></a></b></span></p>
<p><img src="http://peekaboo-games.com/wp-content/uploads/2013/04/mgwt.png" alt="MGWT лого" /></p>
<p dir="ltr">Как альтернативу разработки мобильного приложения с использованием JavaScript можно использовать фреймворк MGWT. По сути это тот же Google Web Tools позволяющий писать логику веб приложения на JAVA , которая позже компилируется в JS. MGWT не заменяет стандартный GWT, а расширяет его.</p>
<p dir="ltr"><span id="more-173"></span></p>
<p dir="ltr">В данном случае цепочка разработки сводится к JAVA &#8212; CSS. Из этой цепочки можно исключить CSS и делать все в JAVA</p>
<p dir="ltr">К достоинствам MGWT  можно отнести:</p>
<ul>
<li>Бесплатный</li>
<li>В отличии от разработки на Android SDK нет необходимости возиться с кучей XML файлов для построения пользовательского интерфейса.</li>
<li>Нет необходимости знания JS или веб технологий.</li>
<li>Присутствует библиотека мобильных элементов интерфейса</li>
<li>Это развитие продукта от Google</li>
<li>Возможность разработки проекта в Maven</li>
<li>Интеграция с PhoneGap</li>
</ul>
<p dir="ltr">Пример создания кнопки Hello World со слайд анимацией :</p>
<p dir="ltr">В настроечном gwt.xml файле прописываем:</p>
<div class="codecolorer-container html4strict railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color: #009900;">&lt;inherits <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'com.googlecode.mgwt.MGWT'</span><span style="color: #66cc66;">/</span>&gt;</span></div></div>
<p><b id="docs-internal-guid-6a7f3587-f593-708c-d8a7-3eba3ee470dc"></b><b id="docs-internal-guid-6a7f3587-f593-462d-ba66-e60fccf286ab">Главный класс EntryPoint:</b></p>
<div class="codecolorer-container java railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gwt.core.client.EntryPoint</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gwt.user.client.ui.RootPanel</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.googlecode.mgwt.mvp.client.Animation</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.googlecode.mgwt.ui.client.MGWT</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.googlecode.mgwt.ui.client.MGWTSettings</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.googlecode.mgwt.ui.client.animation.AnimationHelper</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.googlecode.mgwt.ui.client.widget.Button</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.googlecode.mgwt.ui.client.widget.LayoutPanel</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> MGWTEntryPoint <span style="color: #000000; font-weight: bold;">implements</span> EntryPoint <span style="color: #009900;">&#123;</span><br />
<br />
&nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onModuleLoad<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// set viewport and other settings for mobile</span><br />
&nbsp; &nbsp; MGWT.<span style="color: #006633;">applySettings</span><span style="color: #009900;">&#40;</span>MGWTSettings.<span style="color: #006633;">getAppSetting</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// build animation helper and attach it</span><br />
&nbsp; &nbsp; AnimationHelper animationHelper <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> AnimationHelper<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; RootPanel.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>animationHelper<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// build some UI</span><br />
&nbsp; &nbsp; LayoutPanel layoutPanel <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> LayoutPanel<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abutton+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Button</span></a> button <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abutton+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Button</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Hello mgwt&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; layoutPanel.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>button<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// animate</span><br />
&nbsp; &nbsp; animationHelper.<span style="color: #000000; font-weight: bold;">goTo</span><span style="color: #009900;">&#40;</span>layoutPanel, Animation.<span style="color: #006633;">SLIDE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p dir="ltr">Тем самым мы имеем в принципе понятный код для человека работавшего раньше к примеру со Swing.</p>
<p dir="ltr">Так же есть интеграция с PhoneGap тем самым позволяющая работать с API устройства.</p>
<p dir="ltr">Пример интерфейса разработанного на mgwt:</p>
<p style="text-align: center;"><em id="__mceDel"><b id="docs-internal-guid-6a7f3587-f594-e4f4-e5c1-95a1688a516f"><img class="aligncenter" alt="" src="https://lh4.googleusercontent.com/7-n6x-LW3zWz8VVaY2v21avl2J0yNpRt-ZAe9yR6kSyysSrSsXW4TBrv8_KqcBljj3jMvWQraxLLtCGwCBnOTT9eLMgfnlHQuBSPXGjQ26S5xMomPI3flNoWtw" width="512px;" height="288px;" /></b></em></p>
<p dir="ltr">Как видим &#8212; по сути имеем тоже самое что и с jQuery Mobile, только теперь при помощи java.</p>
<p dir="ltr">Основные минусы:</p>
<ul>
<li>Недостаточно много документации конкретно по mgwt. Но в принципе документация по gwt тоже подойдет</li>
<li>Порог вхождения в данную технологию достаточно высок</li>
<li>Не смог отыскать визуальной среды для разработки интерфейсов конкретно под mgwt, но возможно подойдут и существующие средства для gwt</li>
<li>Сборка опять-таки под PhoneGap</li>
</ul>
<p>Продолжение:<br />
<a title="jQuery" href="http://peekaboo-games.com/frameworks_jquery/">Обзор мультиплатформенных фреймворков — jQuery Mobile (1/6)</a><br />
<a title="Sencha Touch" href="http://peekaboo-games.com/framework_sencha/">Обзор мультиплатформенных фреймворков — Sencha Touch (3/6)</a><br />
<a title="Titanium" href="http://peekaboo-games.com/framework_titanium/">Обзор мультиплатформенных фреймворков — Appcelerator Titanium Mobile (4/6)</a><br />
<a title="Vaadin" href="http://peekaboo-games.com/framework_vaadin/">Обзор мультиплатформенных фреймворков — Vaadin TouchKit (5/6)</a><br />
<a title="WorkLight" href="http://peekaboo-games.com/framework_worklight/">Обзор мультиплатформенных фреймворков — IBM WorkLight (6/6)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://peekaboo-games.com/frameworks_mgwt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обзор мультиплатформенных фреймворков &#8212;  jQuery Mobile (1/6)</title>
		<link>http://peekaboo-games.com/frameworks_jquery/</link>
		<comments>http://peekaboo-games.com/frameworks_jquery/#comments</comments>
		<pubDate>Sun, 21 Apr 2013 13:11:23 +0000</pubDate>
		<dc:creator>Андрей Крохин</dc:creator>
				<category><![CDATA[Главная]]></category>
		<category><![CDATA[Разработка]]></category>

		<guid isPermaLink="false">http://peekaboo-games.com/?p=153</guid>
		<description><![CDATA[Предположим, что в один прекрасный день к Вам подходит начальник и говорит, что-то типа: ‘Мы всю жизнь делали десктопные приложения и совсем не представлены на мобильном рынке. Давай ка ты Вася сделай нам прототип нашего бизнес решения на мобильную платформу’. И &#8230; <a href="http://peekaboo-games.com/frameworks_jquery/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p dir="ltr">Предположим, что в один прекрасный день к Вам подходит начальник и говорит, что-то типа: ‘Мы всю жизнь делали десктопные приложения и совсем не представлены на мобильном рынке. Давай ка ты Вася сделай нам прототип нашего бизнес решения на мобильную платформу’. И Вы, как человек подневольный, беретесь за дело.</p>
<p dir="ltr"><span id="more-153"></span></p>
<p dir="ltr">Из анализа продуктов на мобильном рынке видно, что бизнес-модель в которой присутствует приложение лишь под одну платформу &#8212; не конкурентноспособна. Выход &#8212; писать мультиплатформенное приложение, тем самым минимизируя затраты на портирование под другие платформы и увеличивая охват пользователей. Вам все равно прийдется докручивать и допиливать ваше приложение для каждой платформы, но согласитесь, что это на много легче чем писать все с нуля.</p>
<p dir="ltr">Для мультиплатформенной разработки необходимо использовать фреймворки.  Сразу стоит оговориться: При написании приложения не на родном для платформы SDK встает вопрос о сборке приложения. Т.е. написав приложение на JS не получится просто взять и собрать из него к примеру apk. Для этого используются сторонние средства, например PhoneGap(который по сути так же является фреймворком), если конечно фреймворк сам не предоставляет средства сборки. Так же есть возможность дружить между собой фреймворки или по крайней мере использовать их средства разработки.</p>
<p dir="ltr">На первый взгляд можно выделить несколько интересных фреймворков(каждый из описанных фреймворков имеет явные отличия от других):</p>
<p dir="ltr"><strong><span style="color: #008000; font-size: 16px;">1) <a href="http://jquerymobile.com/"><span style="color: #008000;">jQuery Mobile</span></a></span></strong></p>
<p><img src="http://peekaboo-games.com/wp-content/uploads/2013/04/jquery-mobile-logo2.png" alt="JQuery лого" /></p>
<p dir="ltr">jQuery Mobile &#8212; это каркас, построенный на основе библиотеки jQuery и предназначенный для создания Web-интерфейсов, ориентированных на использование в мобильных устройствах. В настоящее время он обеспечивает совместимость со всеми распространенными мобильными платформами и поддерживает знакомый разработчикам jQuery синтаксис. Принцип работы jQuery Mobile можно описать следующим образом: этот каркас, используя стандартные HTML-элементы, расширенные с помощью дополнительных атрибутов, создает элементы соответствующие стилю и требованиям мобильных интерфейсов. Т.е. другими словами все UI вашего приложения описывается как html веб документ с разными модификаторами , а логика обработки ситуаций пишется  на JS.</p>
<p dir="ltr">К достоинствам jQuery Mobile можно отнести:</p>
<ul>
<li>бесплатный</li>
<li>Присутствует визуальная среда разработки облегчающая работу: <a href="http://www.codiqa.com/">Codiqa</a></li>
<li>короткую «кривую обучения» и легкость использования;</li>
<li>небольшой размер (12 Кб в сжатом виде);</li>
<li>поддержка широкого ряда мобильных (и немобильных) Web-браузеров;</li>
<li>поддержка HTML5;</li>
<li>расширенная поддержка HTML-форм;</li>
<li>изменение внешнего вида документа (стили);</li>
<li>открытый исходный код.</li>
</ul>
<p dir="ltr">Тем самым проект будет представлять из себя связку HTML5 + CSS + jQuery , где в HTML будет описана вся  GUI часть , а в jQuery будет вся логика работы. Из этого следует легкость и быстрота разработки GUI части, а так же ее стабильная работа, на что как раз и тратится основное времея при разработке.</p>
<p dir="ltr">По сути каркас для начала работы следующий :</p>
<div class="codecolorer-container html4strict railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #00bbdd;">&lt;!DOCTYPE html&gt;</span> <br />
<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/html.html"><span style="color: #000000; font-weight: bold;">html</span></a>&gt;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/head.html"><span style="color: #000000; font-weight: bold;">head</span></a>&gt;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/title.html"><span style="color: #000000; font-weight: bold;">title</span></a>&gt;</span>Page Title<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/title.html"><span style="color: #000000; font-weight: bold;">title</span></a>&gt;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/link.html"><span style="color: #000000; font-weight: bold;">link</span></a> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">script</span></a> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://code.jquery.com/jquery-1.4.3.min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">script</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">script</span></a> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">script</span></a>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/head.html"><span style="color: #000000; font-weight: bold;">head</span></a>&gt;</span> <br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/body.html"><span style="color: #000000; font-weight: bold;">body</span></a>&gt;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> data-role<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;page&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> data-role<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;header&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/h1.html"><span style="color: #000000; font-weight: bold;">h1</span></a>&gt;</span>Page Title<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/h1.html"><span style="color: #000000; font-weight: bold;">h1</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><span style="color: #808080; font-style: italic;">&lt;!-- /header --&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> data-role<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;content&quot;</span>&gt;</span> &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">p</span></a>&gt;</span>Page content goes here.<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">p</span></a>&gt;</span>&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><span style="color: #808080; font-style: italic;">&lt;!-- /content --&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> data-role<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;footer&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/h4.html"><span style="color: #000000; font-weight: bold;">h4</span></a>&gt;</span>Page Footer<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/h4.html"><span style="color: #000000; font-weight: bold;">h4</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><span style="color: #808080; font-style: italic;">&lt;!-- /header --&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span><span style="color: #808080; font-style: italic;">&lt;!-- /page --&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/body.html"><span style="color: #000000; font-weight: bold;">body</span></a>&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/html.html"><span style="color: #000000; font-weight: bold;">html</span></a>&gt;</span></div></div>
<p dir="ltr">Ну а дальше мы вольны делать что хотим. Нам доступно огромное количество элементов мобильного интерфейса , встраиваемые на лету + отличная документация и куча примеров и сторонних библиотек.</p>
<p>К примеру если мы хотим добавить элемент поиска &#8212; нам просто нужно прописать в html:</p>
<div class="codecolorer-container html4strict railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a> data-role<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;fieldcontain&quot;</span>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/label.html"><span style="color: #000000; font-weight: bold;">label</span></a> <span style="color: #000066;">for</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;search&quot;</span>&gt;</span>Search Input:<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/label.html"><span style="color: #000000; font-weight: bold;">label</span></a>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">input</span></a> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;search&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;password&quot;</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;search&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">div</span></a>&gt;</span></div></div>
<p>и в итоге мы увидим:</p>
<p style="text-align: center;"><b id="docs-internal-guid-6a7f3587-f58b-00cb-0851-7a2e111d4f56"><img class="aligncenter" alt="" src="https://lh5.googleusercontent.com/jYTXDNwgaCjvnSmkD3Er0V2-mR-TeUXqv0pCChrrPeA3pP_Uax8aeAfSjXBFFEX7xJ-vGHsmuxGyQ3Xd2jhniGh-ZUnTZCuhi5TMViTuYQNjViMeAWgB-81ObA" width="710px;" height="47px;" /></b></p>
<p>После чего на элемент вешаются слушатели.</p>
<p dir="ltr">Все позиционирование и стили отрисовки описываются в CSS , а логика обработки результата в JS.</p>
<p><b id="docs-internal-guid-6a7f3587-f58c-cac9-738d-99c3151021a5">Пример интерфейса, разработанного на JQuery Mobile:</b></p>
<p style="text-align: center;"><b id="docs-internal-guid-6a7f3587-f58c-a841-df9d-adae1f1cd74b"><img class="aligncenter" alt="" src="https://lh5.googleusercontent.com/mtZPLulimOdcVuBsO9txsxleHh2XTG7vIMHgR70os07pZX3bbMofFUK8G07E9DpjzwhUmgqX5d16PQdjuxivjb6kPr8v5TFNd3nfvgzBfs5yRTUmmEuXhzyGbw" width="515px;" height="663px;" /></b></p>
<p dir="ltr">Так же присутствует интеграция с библиотекой PhoneGap позволяющей нам работать с API нашего устройства &#8212; т.е. обращаться к камере , gps, акселерометру , списку контактов , отправке смс , звонкам и еще много к чему, а так же собирать наше приложение для всех платформ.</p>
<p dir="ltr">Основные минусы:</p>
<ul>
<li>Сложно выявить существенный минус, если только &#8212; по умолчанию не предоставляется средство сборки проэкта. Ну и как и во всех JS фреймворках &#8212; проблемы с быстродействием из-за чрезмерного использования css3 и раздутой DOM модели</li>
</ul>
<p>Продолжение:<br />
<a title="MGWT + PHONEGAP" href="http://peekaboo-games.com/frameworks_mgwt/">Обзор мультиплатформенных фреймворков — MGWT + PHONEGAP (2/6)</a><br />
<a title="Sencha Touch" href="http://peekaboo-games.com/framework_sencha/">Обзор мультиплатформенных фреймворков — Sencha Touch (3/6)</a><br />
<a title="Titanium" href="http://peekaboo-games.com/framework_titanium/">Обзор мультиплатформенных фреймворков — Appcelerator Titanium Mobile (4/6)</a><br />
<a title="Vaadin" href="http://peekaboo-games.com/framework_vaadin/">Обзор мультиплатформенных фреймворков — Vaadin TouchKit (5/6)</a><br />
<a title="WorkLight" href="http://peekaboo-games.com/framework_worklight/">Обзор мультиплатформенных фреймворков — IBM WorkLight (6/6)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://peekaboo-games.com/frameworks_jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
