`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Александр Пацай

iPad, Adobe, Flash и многозадачность

+44
голоса

Ну что ж, продолжим обозревать возможности Apple iPad… Шучу, шучу, мне самому писать обзор про iPad основательно поднадоело — значительно приятней этим гаджетом все же пользоваться, чем рассказывать о том, какой он замечательный. Про батарею, кстати, совершенно не врали, 10-11 часов активного использования — интернет через WiFi, видео, игры (без особого уклона в 3D), так что супер, а завтра еще проверю, способен ли iPad заменить ноутбук при перемещении по городу между встречами весь день.

Однако, вторая половина недели была полна и других событий, о которых я не успел написать, потому что вначале летел в самолете, а потом понемногу приходил в себя после трансатлантического перелета. В частности, Apple анонсировала прошивку iPhone OS 4.0 для iPhone и iPad, показала в ней новые возможности (в том числе и многозадачность), а также слегка “подкрутила” соглашение разработчиков, чем вызвала бурю возмущений в Интернете, в основном иницируемую Adobe и ее поклонниками.

Сначала про многозадачность, так как она важна и для второй части статьи про Flash. Метод, которым пошла Apple, решив обеспечить многозадачность, простым не назовешь. Напомню, что сейчас iPhone OS сама по себе многозадачна, но пользоваться этим могут лишь некоторые приложения Apple — приложение для звонков, для сообщений, календарь, приложение для iPod, и тд. Всем остальным приходится либо выкручиваться с помощью Push-уведомлений, либо ничего не делать вообще при выключении. Другой экстрим — это многозадачность в Windows Mobile, Symbian и Android, где все приложения могут работать в фоновом режиме, загружая таким образом процессор и память телефона, и довольно быстро сажая батарейку телефона. В итоге на эти телефоны приходится устанавливать различные менеджеры задач, с помощью которых периодически приходится определенные задачи выгружать, чтобы батареи хватило на дольше. Иногда это приводит к неприятным ситуациям, как у меня при тестировании Nexus One, когда Яндекс.Карты, будучи запущенными на засунутом в карман телефоне, за час разрядили немаленькую батарею телефона (видимо, в судорожных поисках спутников).

Что сделала Apple, на первый взгляд, довольно таки разумно, но нужно будет посмотреть, как это будет реализовано в действительности. Я всегда говорил, что мне лично многозадачность особо не нужна, за исключением определенных сценариев, например, обсуждения по скайпу какого-то документа — и в этой ситуации мне одновременно нужен и документ, и Skype. Так вот, Apple определила семь типичных сценариев, когда может потребоваться тот или иной вид многозадачности, и предоставит разработчикам системные API (вызовы) для работы с ними:
- Хотите VoIP в фоновом режиме? Пожалуйста.
- Хотите GPS-трекинг? Вот вам. (кстати, именно это мне пригодится, так как у меня давно есть клиент, который хочет приложение-трекер перемещения, но отсылка данных на сервер только из активного приложения его не устраивает).
- Требуете аудио в фоновом режиме, но не из iPod? И для этого теперь будет API (любители интернет-радио оценят).
- Завершение работы — например, когда пользователь загружал данные на определенный сайт, при переключении из программы загрузка продолжится
- Система уведомлений (местных и серверных) — когда приложение, желающее уведомить пользователя о каком-то событии, показывает на экране сообщение об этом (полученное либо с сервера, либо из недр системы)
- “Замораживание” процессов — когда при переходе из приложения состояние программы фактически “фиксируется” в памяти, а при возвращении в нее программа продолжает работать с того же места (должно быть удобно для игр).

Чем это лучше системы “каждый процесс сам за себя”, который реализован в других мобильных системах? Как это я себе представляю, именно за счет централизованного контроля на уровне системы, приложения будут получать нужные им данные без риска того, что какое-то одно из них “надругается” над батареей до полной ее разрядки. Конечно, надо смотреть вживую, как это все будет сделано на самом деле (а маркетинговые выступления Apple надо делить как минимум на два), но звучит все многообещающе и должно, по крайней мере, в вопросе многозадачности убрать у критиков iPhone хотя бы эту тему.

Расстроило меня другое — то, что это обновление системы с многозадачностью будет доступно летом только для пользователей iPhone (причем не всех, а только для моделей 3GS — 2G/3G модели пролетают), а вот для владельцев iPad это обновление обещано только осенью. Лично мне казалось, что для iPad такое обновление следует выпускать в первую очередь, но, видимо, он и так неплохо продается, а теперь, как я и предполагал, имея впереди “пряник многозадачности”, пользователи будут покупать его еще охотней. Ну а осенью, перед началом рождественских продаж в октябре, Apple выпустит для iPad программное обновление, чтобы еще дополнительно подстегнуть спрос на праздничные покупки. В принципе, с точки зрения маркетинга объяснимо, но осадок все равно остался :)

Однако, восторг от новых возможностей iPhone OS 4.0 потонул в воплях Adobe, которая обнаружила в новом соглашении с разработчиками в системе iPhone OS 4.0 интересное дополнение к тексту, которым Apple фактически перечеркнула возможность компиляции Flash-приложений для iPhone из нового пакета Adobe CS5, который вроде как должен поступить в продажу на этой неделе. В нем Adobe сделала замечательную, казалось бы, для своих пользователей фичу — создав приложение в Adobe Flash, можно было скомпилировать приложение для iPhone и даже потом подать его в App Store для продажи. А тут, откуда не возьмись, за неделю до выхода этого CS5 оказывается, что все усилия по созданию этой возможности пошли “коту под хвост”, благодаря всего лишь паре строк из этого соглашения. Если раньше этот пункт звучал так:

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.

А стало так:

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

Если вкратце — то язык только Objective-C, и никаких фреймворков-посредников, писать надо чисто для системы iPhone OS. Adobe, конечно, обиделась, вплоть до того, что один из евангелистов технологии Flash (сотрудник Adobe, между прочим), предложил Apple пойти и совершить с собой неестественный акт (“Go screw youself, Apple”). Под это дело было вывалено немало обид и наездов на Apple, мол, это Apple сделала специально, чтобы навредить продажам CS5 (хотя она никоим образом с этим программным продуктом не конкурирует), и тд, и тп. Вы же знаете, что Стив Джобс давно на Flash нехорошо поглядывал, и тут он нанес решающий удар. А оно обиделось и фыркнуло, что разработчики под Flash и так справятся, без Apple (хочу я посмотреть, как эти разработчики под Flash будут продавать свои приложения на вебе, но это так, к делу не относится). А вообще, Илья Бирман очень хорошо написал про ситуацию с Adobe и Flash, рекомендую почитать — я бы лучше не сказал (правда, я бы все же чуть вежливее это написал).

Я надеюсь, что Илья будет не против, если я процитирую тут один абзац, который попадает в самую точку:

Зачем Эплам нужно наносить ущерб продажам ЦС5? Нет ответа. Что Эплам нужно, так это чтобы после выхода ЦС5 десятки тысяч людей не прислали свои флешевые поделки, не знающие ни о мультитаче, ни об интерфейсных гайдлайнах, ни о грамотном взаимодействии с ОС, учитывающем её особенности, к ним на рассмотрение в Апстор.

Так что, как мне кажется, у истории с Flash и анонсом многозадачности в iPhone OS есть определенная связь. В частности, есть подозрение, что непрозрачность программ, сделанных в Flash (а также в MonoTouch и других кросс-платформенных инструментах) и является основным фактором “непроходимости” этих программ на платформу. Одно дело, когда программа разработана с помощью родных инструментов, ее архитектура абсолютно прозрачна и ясна, предсказуема система работы потоков внутри приложения, схема расположения ресурсов и тд.

А совсем другое дело, когда приложение загружается внутри своей собственной среды или же создано с учетом кросс-платформенности, а все ее ресурсы лежат одним огромным многомегабайтным комком — в этом случае обеспечить нормальное функционирование многозадачности системы в том виде, в котором разрабатывает ее Apple, будет очень сложно (если возможно вообще). Из-за этого и возник такой запрет на сторонние инструменты разработки (и приложения, с их помощью созданные), а Adobe начала там искать вселенский заговор с целью подорвать гегемонию Creative Suite.

А дальше, я думаю, будет только интересней :)

+44
голоса

Напечатать Отправить другу

Читайте также

Спасиобо, интересно было почитать статьи про ipad.
Но только одно замечание. Я незнаю как реализована многозадачность в symbian, но висящие в фоне приложеная не сильно разряжают аккумулятор. Я на своей нокии этим очень часто пользуюсь, оставляя вистеь в фоне долго стартующие приложения. При этом телефон без проблем может проработать 1-2 дня.

Хотя, это скорее больше зависит от типа приложения. Наверное, если свернуть видеоплеер во время воспроизведения, то он и правда быстро разрядит аккумулятор.

Яндекс.Карты (речь о symbian версии) просто "энергетический вампир" - если я утром еду на работу с включенным приложением и по неосмотрительности оно остается в памяти смартфона, то уже после обеда аккумулятор катаятрофически разряжен в нуль.

Не верится мне, что такое изменение в «языковой политике» совершенно случайно произошло за три дня до официального выхода CS5. Это всё-таки удар под дых, я считаю.

Ну, и вообще как-то нехорошо получилось. Подозреваю, iPhone-разработчики на Java и C# в восторге.

Если бы Apple хотела "нанести этот удар", то его с таким же успехом можно было бы сделать и раньше — чтобы никто даже не надеялся на то, что на Flash можно будет делать приложения для iPhone

---------------
"Computers are not intelligent. They only think they are."

То есть, это случайное совпадение, так?

ну, новые мобильные ОС Apple в последнее время показывают весной, в прошлом году это был март, в этом — апрель. технологически оказалось, что новая ОС не очень готова к таким кросс-платформенным программам, вот и изменили под это дело агримент. Конечно, я допускаю, что Джобс мог задумать такую пилюлю Adobe, но мне почему-то это кажется совпадением.

---------------
"Computers are not intelligent. They only think they are."

Полазил по ссылкам, почитал комментарии.
Поражает неадекватность сообщества. Всё, что исходит от Apple - хорошо безусловно. Если Apple сказало, что флеш зло - значит, зло, и не волнует. Если Apple запретило разрабатывать приложения с помощью фреймворков - значит, так и надо, пусть в аппсторе не будет кучи приложений, разработанных с их помощью.
Помните - "Когда они пришли за евреями, Я молчал, я ведь не еврей. А когда они пришли за мной, Некому было больше протестовать."
Сегодня пришли за флешерами, джавистами и сишарперами. А сообщество радуется - ведь оно-то пишет на обджектив-си...

P.S. Думаю, что в течение пары месяцев Novell добавит в MonoTouch возможность компиляции в Objectiv-C исходники. Это несложно. Вопрос - сколько времени понадобится Adobe, чтобы сделать то же самое? И что тогда потребует Эппл в качестве доказательства нативного происхождения кода? :)

Я, конечно, не программист, но даже меня фраза "возможность компиляции в Obj-C исходники" посмешила. Как исходники можно компилировать в другие исходники? Компиляция — это создание машинного кода, а то, о чем вы говорите — это конвертация, но тогда начинается совсем другой коленкор. Одно дело, когда есть готовый run-time, внутри которого запускается прога, и другое — когда сорсы нужно конвертнуть из одного языка в другой, и чтобы это все еще затем работало. Ну а судя по тому, как устроены приложения для iPhone, сконвертированные из Flash, Adobe к этому тоже нескоро придет.
---------------
"Computers are not intelligent. They only think they are."

Александр, я программист (хотя теперь уже более Project Manager, так вышло) и знаю, о чём говорю. Конвертеры языков отлично себе существуют и вполне нормально работают. Тем более под .NET, где в библиотеке есть специальные средства, "заточенные" под генерацию кода.
Сделать это вполне возможно, были бы деньги и желание.

Я обсудил эту тему со своими разработчиками. теоретически это возможно, но этот код будет сильно неоптимальным, и его надо будет очень сильно дорабатывать напильником. так что вряд ли это лучший выход.
---------------
"Computers are not intelligent. They only think they are."

Да плевать хочется на действия Apple - это свой мир со своими законами. Пусть будут вне мира, кто им мешает. Да не заработает Adobe на mac-users - ну и что. Просто впускать чужого соседа в свой огород не хочет никто.

Просто впускать чужого соседа в свой огород не хочет никто.

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

Для Apple жизненно важно стать платформой №1 по числу уникального софта, даже ценой потери части прибыли с AppStore от недопущения туда многих написанных под другие платформы приложений. Потому что сиюминутные потери части прибыли с лихвой компенсируются длительностью доминирования на рынке, которое они и пытаются получить своей нынешней стратегией.

Apple может рассуждать про юзабилити, про полноценное использование возможностей платформы, быдлокодеров на Flash (как будто где-то их нет) и т.п. Они могут ругать Adobe за качество, но истинная причина — совсем не в этом. Истинная причина — заставить разработчика выбрать одну платформу, самую популярную на тот момент времени, и потом максимально усложнить перенос приложения на другую.

Если софт будет одинаковым, то покупателю, о ужас, вдруг станет всё равно что выбирать — Maemo или Android, Moblin или WinMobile. Покупатель — он, сволочь, начнёт сравнивать, искать по соотношению цена/качество. А вдруг он нашу продукцию не купит?! Не допустим! - вот суть эппловской политики по недопущению иных платформ для разработки софта на свои поделия.

сорри, цитаты с хабра накопипастил. но исходя из логики и здравого смысла, именно тут кроется самое близкое к действительности обьяснение ограничений Apple для разработчиков. а не какие-то мифические траблы с неоптимизированным кодом и многозадачностью, приведённые Александром Пацаем.

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT