<?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 &#187; Андрей Крохин</title>
	<atom:link href="http://peekaboo-games.com/author/fr0st/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>Обзор мультиплатформенных фреймворков &#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>
