23 ноября 2010

Про Андроид 2

Стравив в прошлый раз яд, я, видимо, должен сейчас сочиться миррой и благовониями, посмотрим.

Для начала я снова отошлю вас почитать три неплохие статьи на тему.

Первое, за что андроид может заслужить фавора - это открытость. Под этим я понимаю много разных вещей. Например, крайне широкие возможности для интеграции как с системой, так и с другими приложениями. Вот я сделал фото камерой и могу его теперь отправить в Gmail, Picasa, Twitter и кучу других приложений. Если я объявлю в своём приложении, что оно умеет принимать изображения - оно тоже окажется в этом списке. И обратно - чтобы реализовать кнопку "Share" мне не нужно волочить с собой библиотеку для Facebook, Twitter и прочего Вконтакта. Достаточно сделать один вызов к OS - она выберет те приложения, которые могут обработать то или иное содержимое. И, заметьте, только те приложения, которые установлены, которые пользователь сам себе поставил и, вероятно, где надо уже авторизован. При этом границы приложения пересекает только та информация, которой это приложение готово поделиться, никакого нарушения изоляции, sandboxing там не менее строгий. На том же механизме, например, реализована система плагинов к популярному приложению Locale - просто и красиво. Или интеграция в поиск по телефону. Хотите, чтобы ваши задачи из вашей новой ToDo'шечки отображались в результатах поиска - вы можете реализовать поддержку этого. Или возможность всё заменить - приложение для контактов, телефона, почтовый клиент, плеер, камеру, рабочий стол... тысячи их (замен стандартным вариантам).

Другое проявление открытости - доступность исходников. Это отдельная тема священных войн, открыт ли андроид в смысле отрытого ПО, но факт остаётся собой - исходники можно получить и пощупать, можно даже почитать. Увы, делать это иногда даже необходимо (про документацию см. пред. пост). Однако не стоит забывать о том, что в случае конкретных прошивок исходники могут не соответствовать реальности (см. пред. пост).

Неплохим моментом можно считать и Java в качестве основного языка разработки под платформу. Конечно, это выливается в некоторые неудобства типа внезапного как понос GC (и я бы не сказал, что следить за памятью приходится меньше, чем с Objective-C), однако есть и преимущества. Для всего существует библиотека на Java - почти аксиома. Да и сама Java тут вполне нормальная, и SDK работать должен на всех основных платформах (RIM, тут вам нужно начать икать втрое интенсивнее). И да, декларировать пять раз свойство не приходится - объявил поле и автоматически сгенерировал методы доступа (это в тему того, что язык хоть и не обладает такими красивыми концепциями как передача сообщений или необязательные методы в интерфейсе/протоколе, но не выглядит таким динозавром. Подробнее - по одной из ссылок). Опять же мощная поддержка со стороны IDE: десятки рефакторингов, сотни инспекций (в реальном времени, а не после компиляции), тысячи плагинов, навигация, документация и автодополнение - XCode даже не разгибается (что они сделали с документацией XCode?! раньше хоть как-то можно было пользоваться). Удобнее отладчик, можно подключиться к уже запущенному приложению, это отчасти компенсирует медлительность приложения с подключённым отладчиком - быстро дошли до исследуемого места и подключили. Логи лучше - уровни (от Debug до WTF), фильтры, лог сохраняется даже тогда, когда устройство не подключено к IDE и можно посмотреть его постфактум (впрочем, коллеги начали прикручивать отправку исключений в Redmine из iOS приложений по моим стопам , частично устранив этот недостаток iOS).

Интерфейс. Действительно очень мощная поддержка различных разрешений и диагоналей, что с одной стороны необходимость при том многообразии устройств, на которых андроид должен запускаться, с другой стороны никто так здорово это не сделал. Таких гибких менеджеров размещения у Apple я не видел, остальные меры для поддержания различных экранов (iPhone, iPad, iPhone 4) либо провальные либо неудобные, а RIM уже должна помереть от икоты. Достаточно гибкие встроенные виджеты, которые к тому же при некоторой подготовке так легко видоизменять и комбинировать в более сложные компоненты (NB. об этом тоже стоит написать). В общем, пока вы играете на этом поле - возможности очень широки.

Многозадачность. Она, конечно же, не такая, как мы привыкли на ПК, OS будет ограничивать (16 Мб! 21 век!) и следить за вами и отрубит голову при первом же подозрении. Но если играть по правилам - вы можете работать на переднем плане, в фоне, получать системные события и реагировать на них. Не возникнет той абсурдной ситуации, когда я хочу открыть почту, когда синхронизируется RSS читалка, и вынужден ждать. А ещё это многозадачность пользователя - он может переключаться с задачи на задачу, вызывая именно те окна различных приложений, которые нужны ему для продолжения его рабочего процесса (workflow). Об этом и кнопке "Share" в частности рассказано в этом видео с Google IO 09 с 10 минуты.
Потерпите этого чувака 4 минуты, он это покажет лучше, чем я. Ну и виджеты, которые могут дать вам моментальный обзор необходимой информации без жонглирования приложениями. Всё это грамотно организовано и работает одновременно, не мешая друг другу.

Распространение софта свободно и дико, как нравы в племени мумбо-юмбо. Можно в Android маркет выложить (приложение на устройстве будет доступно через минуту! даже через Jabber я услышал, как упала челюсть шефа, до этого несколько лет воевавшего с AppStore), можно в сторонние магазины, можно на своём сайте, да хоть в Dropbox - знай только ссылку давай. Маркет, конечно, предпочтительней по некоторым причинам - он самый крупный, он предустановлен на большинстве аппаратов, он позволяет чётко разделять приложения по используемому железу и версии прошивки, так что вы не увидите игру для акселерометра на планшете без него. Однако даже если пользователь поставил софт почтовыми голубями, то вы можете мягко направить его в маркет за обновлениями, и приложение "Маркет" начнёт само следить за обновлениями. И каждый раз перед обновлением не нужно будет вводить пароль (умри, Appstore!)

Есть Flash (с 2.2). Кому-то надо. Нет, не тормозит (там, где у меня есть 2.2, но это весьма шустрый аппарат, так что не показательно).

Закончу, пожалуй, действительно радостной новостью - приложение, работа над которым дала почву для этих постов, стало Today hot #1 на appbrain.com, в чём огромная заслуга команды и мой небольшой вклад.

Хорошего начала рабочей недели!

Комментариев нет: