Идеально! Как создать и переделать свой сайт. Правильный подход и передовые техники разработки - Элиот Стокс
Шрифт:
Интервал:
Закладка:
Ваше бинарное приложение это всего лишь оболочка, которая состоит из WebKit компонента. Этот WebKit-компонент визуализирует ваше веб-приложение с помощью веб-компонентов. Из-за того что веб-компоненты не могут соответствовать «родным» ожиданиям, я бы не советовал использовать PhoneGap при создании приложений для повышения продуктивности[116], таких как календарь, различные списки дел и т. п.
Однако при разработке таких приложений, как электронные книги и игры, т. е. приложений с эффектом присутствия, недостаточная поддержка «родной» структуры в похожих технологиях не является большой проблемой. В среде создателей игр и электронных книг Adobe Flash и ActionScript, Unity и Ansca’s Corona считаются фаворитами, даже если они не используют «родные» структурные элементы и компоненты. Это из-за того, что подобные приложения редко используют «родные» компоненты. Вместо этого дизайнеры стремятся создать полностью иную среду, возможно, скевоморфную, которая выглядит и ведет себя, как настоящая книга, – со своими правилами, взаимодействиями и культурой.
Я бы не советовал использовать Adobe Flex (или приложения, которые пользуются компонентами Flash) по той же причине, что и не советовал использовать PhoneGap для создания «родных» приложений без эффекта погружения. Они не соответствуют культуре «родной» платформы и будут вести себя иначе, чем «родные» компоненты системы.
В общем, будьте осторожны, когда создаете «родные» бинарные файлы, которые легко «обволакивают» «неродные» приложения. Выглядят они как «родные», но ведут себя иначе, потому что не используют собственные компоненты в «родных» фреймворках. PhoneGap приложения, которые используют структуру jQTouch, могут отображать нечто, похожее на таблицу интерфейса iOS при запуске на iPhone. Но это всего лишь HTML, продукт умного использования таблицы CSS и языка JavaScript. Он выдает себя за таблицу вида iOS, но не может соответствовать поведенческим характеристикам настоящего компонента представления таблицы из каркаса Cocoa Touch и поэтому перестает соответствовать ожиданиям.
Неудовлетворенные ожидания – это главный враг для удобства взаимодействия. Бегите от этого, как от чумы.
Приложения с эффектом присутствия против приложений без эффекта присутствия
Важно понимать разницу между приложениями, создающими эффект присутствия и не создающими. Значительно меньше проблем вы получите для приложений с таким эффектом, сделав их «неродными».
Эти приложения обычно занимают все устройство и по определению создают собственную культуру и язык. Игры – хороший тому пример. Игра может иметь собственную систему управления бегом, прыжками и стрельбой. В отрыве от культуры платформы, хорошая игра переносит пользователя в созданный свой собственный мир. Таким образом, в рамках платформы такие приложения используют очень немногие. По сути, это первые кандидаты на использование «неродных» технологий.
Вот почему технология Flash, не являясь «родной» для веба, так популярна при создании игр в Сети. Или почему Unity, не пользуясь «родными» компонентами в Cocoa Touch, применяется для создания многих основных игр на iOS и других платформах.
Приложения без эффекта присутствия, например повышающие продуктивность, как правило, усложняют использование стандартных элементов интерфейса пользователя, таких как кнопки и таблицы. Они используют определенные платформенные взаимодействия, например переход в полноэкранный режим в iOS либо древовидное управление в приложениях Windows или OS X. Таким образом, очень важно, чтобы приложения без эффекта присутствия говорили на «родном» языке и соответствовали «родной» культуре и нормам той платформы, на которой они запускаются.
Суммируя вышесказанное, даже для приложений с эффектом присутствия, главным критерием для выбора «родной» или «неродной» технологии все ещеможет быть производительность.
У некоторых игр, таких как стрелялки от первого лица, нужно выжимать каждый бит для эффективной работы в системе. В подобных случаях некоторые «неродные» технологии могут не совсем подходить для ваших нужд. Например, ранние версии приложений на основе Adobe AIR Flash для iPhone были печально известны как медленные. Впрочем, в последних версиях Adobe AIR на iOS Adobe улучшил эффективность работы.
«Родные» приложения, переведенные с «неродных» языков
Если вы стремитесь оптимизировать опыт взаимодействия, лучшим кроссплатформенным методом при создании «родных» приложений без эффекта присутствия будет использование собственных объектных структур и компонентов. Это не значит, что вы обязательно должны применять «родной» язык программирования данной платформы, чтобы авторизовать ваше приложение.
Рисунок 9.15. Сравнительная таблица некоторых общеизвестных кроссплатформенных технологий[117]
Например, используя Titanium Mobile SDK от Appcelerator, вы можете написать на JavaScript, чтобы создать «родные» компоненты[118]. Таким образом, на iOS, когда вы создаете представление в виде таблицы в Titanium Mobile, «родной» компонент представления таблицы Cocoa Touch создается в вашем интерфейсе пользователя. Оно не просто выглядит как «родное» представление таблицы (как могло быть в случае приложения на PhoneGap, которое имитирует «родные» компоненты), но и фактически является «родным» представлением таблицы. И, что самое важное, оно ведет себя так, как и должно это делать представление таблицы.
«Родное» не обязательно лучше, но все же это «родное»Единственный способ создания приложений, которые соответствуют нормам, т. е. культуре и языку данной платформы, – это использовать «родные» технологии. Например, пока возможно создание Flash-приложений, которые используются на веб-платформе, они не будут выглядеть или восприниматься как «родные» веб-приложения, которые используют «родные» авторские веб-технологии, такие как HTML, CSS и JavaScript. Также, пока возможно использование этих технологий для создания приложений на таких платформах, как iPhone, они не будут выглядеть или восприниматься как «родные» iPhone-приложения, которые создаются при помощи компонентов структуры Cocoa Touch. Не сказать, что Flash-приложения не могут быть представлены лучше, чем HTML приложения. В определенных случаях использования, особенно в играх, Flash-приложения могут обеспечить лучший опыт взаимодействия. Например, Machinarium, прекрасная игра, созданная с помощью Flash, прекрасно работает на iPad. Опять же для таких приложений, как игры и электронные книги, кроссплатформенное применение технологий типа Unity или Corona поможет сократить время на разработку и облегчить внедрение свойств, что было бы сложнее сделать с родными технологиями (такими как 3D-среда или физический движок).
Рисунок 9.16. Machinarium на iPad, интерактивное «родное» приложение, созданное на технологии Flash
Использование скриптового языка типа JavaScript может облегчить написание приложений и в очередной раз применить навыки по веб-разработке, которыми владеет ваша команда. При этом вы получите все преимущества использования «родных» компонентов в ваших «родных» приложениях.
Кроме того, поскольку Titanium Mobile является кроссплатформенной технологией, она обрабатывает «родные» iOS-компоненты для вашего «родного» iOS-приложения и использует «родные» Android-компоненты, когда компилирует «родное» приложение под Android. Преимущества налицо: вы используете простой скриптовый язык (JavaScript), и вам нужно всего лишь поддерживать один базовый код, вместо того, чтобы изучать и применять Objective-C в iOS и Java в Android, и поддерживать два отдельных языка.
Минус в том, что у вас есть еще один слой абстракции для работы. В конце концов, качество ваших приложений зависит от качества кода, который напишет Appcelerator в своих абстрактных фреймворках. А вы будете зависеть от того, как быстро Appcelerator поддержит новые свойства, которые выпускаются для «родных» фреймворков и SDK. Хотя Appcelerator пытается сделать разницу между платформами прозрачной, насколько это возможно в Titanium, есть различия, не в последнюю очередь культурные, к которым вам еще нужно будет обращаться и оптимизировать (помните наше кредо: напиши один раз, оптимизируй везде).
Это не к тому, что вы должны бояться кроссплатформенных технологий, а, скорее, к тому, что вам нужно проводить исследования, взвешивать все за и против и принимать обоснованное решение по поводу того, добавлять ли еще один слой абстракции в ваш процесс разработки. Каждая кроссплатформенная технология имеет свои плюсы и минусы, а также ситуации, при которых она лучше приспособлена для определенных видов приложений. В то время как Corona – это прекрасный выбор для 2D-игр, Titanium Mobile может быть лучше для построения кроссплатформенного рабочего приложения.
Конечно, Titanium не единственная кроссплатформенная технология, которая может создавать «родные» бинарные файлы и использовать фреймворки. Если у ваших разработчиков есть навыки в разработке C# и. NET, вы также могли бы рассмотреть технологию Mono (а особенно MonoTouch для iOS и Mono для Android). Mono работает по такому же принципу, как и Titanium, но вместо использования JavaScript, вы берете язык программирования C# (…и с осторожностью другие языки программирования. NET),NET паттерны и инструменты для создания «родных» приложений.