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

Ну что ж, продолжим обозревать возможности 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, когда Яндекс.Карты, будучи запущенными на засунутом в карман телефоне, за час разрядили немаленькую батарею телефона (видимо, в судорожных поисках спутников).
[ad#intext-inside]
Что сделала 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 и других кросс-платформенных инструментах) и является основным фактором “непроходимости” этих программ на платформу. Одно дело, когда программа разработана с помощью родных инструментов, ее архитектура абсолютно прозрачна и ясна, предсказуема система работы потоков внутри приложения, схема расположения ресурсов и тд.
[ad#intext-inside]
А совсем другое дело, когда приложение загружается внутри своей собственной среды или же создано с учетом кросс-платформенности, а все ее ресурсы лежат одним огромным многомегабайтным комком — в этом случае обеспечить нормальное функционирование многозадачности системы в том виде, в котором разрабатывает ее Apple, будет очень сложно (если возможно вообще). Из-за этого и возник такой запрет на сторонние инструменты разработки (и приложения, с их помощью созданные), а Adobe начала там искать вселенский заговор с целью подорвать гегемонию Creative Suite.
А дальше, я думаю, будет только интересней 🙂

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

  1. Я скорее противник, чем сторонник флеша и Адоби. И ты наверняка знаешь мое отношение к “не-родным” фреймворкам. Но я совершенно не согласен с тем, что делает Эпл, ограничивая разработчиков.
    Перефразируя приведенную тобой цитату, я могу сказать, что десятки тысяч людей, не утруждая себя чтением гайдлайнов и изучением платформы, шлют свое говно, написанное на обжективси, и Эпл спокойно выкладывает Это в своем магазине. Так что указание на каком языке писать ничуть не улучшит качество приложений.
    Я бы даже сказал, что грамотно спроектированный промежуточный фреймворк мог бы “улучшать” некоторые приложения, написанные для нескольких платформ.
    Зачем вообще изобретать что-то новое? Если приложение “плохое” – возвращайте его разработчику на доработку.

    • разница в том, что когда десятки тысяч людей шлют в App Store свое говнище, написанное на ObjC, то они вредят только себе — пользователи их приложений просто не покупают, и Apple пофиг. А вот когда приходит приложение, написанное на Flash-Mono-whatever, то оно к тому же вредит еще и системе, которая не может его толком заменеджить.

  2. Я вот не расстраиваюсь по поводу поправки в соглашении. И вот почему. Примерно полтора месяца назад захотел научиться писать программы для iPhone OS. Второго апреля я зарегистрировался на сайте Apple как разработчик и скачал SDK. Сегодня 12 апреля, а я уже написал 30% своей программы (довольно непростой, кстати). При этом до 2 апреля я не знал ни Objective C, ни XCode и ничего вообще про разработку приложений для iPhone OS (да, я знал до этого С/С++, но Objective C оказался очень доступен и, как мне кажется, более удобен). Это я к чему? Да к тому, что все на самом деле так несложно, что просто удивляет читать некоторые возмущения по поводу поправки. Пара дней переучиться, неделю на предварительное освоение SDK, а пишется все с параллельным освоением того, что было непонятно в SDK. Ничего особо сложного там нет. Более того, меня удивило, насколько грамотно Apple проработала SDK. Большинство вещей, которые вы захотите сделать в своем приложении, уже реализованы – берите наздоровье!
    P.S.: согласен на счет отсутствия причин у Apple подрывать выход CS5.

  3. Запрещая разработку не на Xcode Apple тем самым стимулирует продажи своих компов.
    Интересно, если Adobe напишет свой компилятор Obj-C, в лицензии появится пункт, что при создании приложения нельзя пользоваться компиляторами от компаний которые начинаются на Ad- и заканчиваются на -obe ? 🙂

    • это немного не так. дело в том, что для того, чтобы Flash-приложение подать в App Store, его финальную версию с дистрибутивным сертификатом все равно надо было собирать на Xcode на Маке.

  4. Pingback: Tweets that mention iPad, Adobe, Flash и многозадачность | alexmak.net -- Topsy.com

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

    • Очень не советую ставить!
      В комментах к предыдущему посту я уже описал свой опыт на iPhone 3G.
      Могу добавить что кроме проблем с интернетом и тормознутости интерфейса сейчас наблюдаю сильные тормоза при поиске человека в контактах, очень медлено практически по записи прорисовываются имена, сначала даже подумал, что не все контакты синхронизировались и просто ничего не найдено.
      Самое неприятное, что не получается откатиться на 3.1.3 или 3.1.1, сообщает об ошибке 1015. А вот 4 бета снова ставится 🙁

        • А разве кроме девелоперов кто-то может еще скачать и установить эту прошивку? там же целый ритуал с добавлением девайса в тестируемые модели, причем анлок не дает посмотреть 40-значный номер в айтюнсе и можно только в Xcode 🙂

          • еще как может — весь торрент ею забит. есть целый бизнес по продаже “мест” для телефонов в девелоперские аккаунты, и UDID устройства узнать довольно просто.

      • Хочу поделиться еще наблюдениями 4.0 Beta:
        очень понравилось как организована почта, теперь письма с одинаковым Subject группируются в папку.
        удивило следующее – выключил телефон, включил и увидел приглашение подключить iTunes
        подключил, iTunes предложил скачать новый апдейт 3.1.3! не смотря на то, что в папке ~/Library/iTunes/iPhone Software Updates уже был файл iPhone1,2_3.1.3_7E18_Restore.ipsw
        скачал, айтюнс попытался установить на телефон и проверить обновления – предложил снова скачать обнавление и снова 3.1.3…
        В итоге я просто прервал это и снова поставить 4.0 Бета через Option+Restore.

  5. Я читал, что включение многозадачности на iPhone 3G / iPod toucg 2G включается правкой одной .plist файла, что решается джайлбрейком (для тех, кому он, естественно, приемлем).
    По железу же iPod touch 2G и младший iPod touch 3G вроде как не отличаются друг от друга.

  6. Я вообще удивилась, почему iPad вышел без многозадачности. Ещё больше удивилась, когда оказалось, что многозадачность на нём появится сильно позже, чем на iPhone. Зарубежные блогеры объясняют это так. Обычно такие проекты, как iPad, Apple разрабатывает в условиях высочайшей секретности. Над ними обычно работает команда, которая даже находится в совершенно другом секретном месте, чем все остальные подразделения. Поэтому, скорее всего, люди, которые разрабатывают ОС узнали об iPad на презентации в январе и не успели адаптировать новую систему под его железо.

  7. Особенно интересно как iPad будет вести при использовании его вместо рабочего нет(ноут)бука – очень интересно. Понятно что на сегодня потенциал полностью данного девайса не раскрыть (даже я бы сказал совсем не раскрыт, бизнесс приложение достаточно мало, многозадачности пока нет до осени) но хотелось бы понять хотя бы на данный момент – будет ли его удобно использовать в таком ключе или нет… Хотелось бы увидеть небольшой обзорчик.

    • Видимо Джобс, когда говорил, что Adobe ленивые, имел ввиду куда больше, чем flash player

  8. /* в этом случае обеспечить нормальное функционирование многозадачности системы в том виде, в котором разрабатывает ее Apple, будет очень сложно (если возможно вообще) */
    Алекс, как программист говорю – это абсолютно несостоятельное утверждение. Той многозадачности которая есть (точнее которой нет) в OS4 скомпилированные из флэша приложения принципиально никак помешать не могут – при уходе в фон заморозится такая программа как и все остальные: не лучше и не хуже.
    Вот ещё один взгляд на проблему. На мой взгляд самый адекватный: http://habrahabr.ru/blogs/Flash_Platform/90620/ Вкратце: не хотят чтобы были кроссплатформенные приложения. А что, скажете не хотят? 🙂 Все хотят. И я бы захотел. Вот нам и второй Майкрософт.

    • Соглашусь полностью.
      Это решение чистая политика и желание ограничить разработчиков только одной платформой.
      Вообще на мой взгляд Apple второй раз наступает на одни и те же грабли – закрытость платформы. Кстати в прошлый раз ситуация у компании была не такая радужная как сейчас, но тогда у руля тоже стоял Джобс.
      Как мне кажется этот пункт соглашения, это продолжение эмоций, а не здравого смысла, эмоций Джобса по отношению ко всему что не совпадает с его видением.

    • Не хотят – да, я от этого и не отказываюсь. Имеют право, это их платформа 🙂 а насчет несостоятельности утверждений – я, конечно, не программист, но примерно себе представляю, как это работает, да и с ребятами консультировался. Есть же совершенно конкретные API даже для обеспечения ухода во фриз в бэкграунд, и пока adobe проапдейтит cs5 их поддержкой, то apple следующую версию системы выпустит. Поэтому apple не нужны сторонние инструменты, которые будут всегда “догонять” систему на устройстве.

  9. > другой экстрим — это многозадачность в Windows Mobile, Symbian и Android, где все приложения могут работать в фоновом режиме, загружая таким образом процессор и память телефона, и довольно быстро сажая батарейку телефона.
    а как у вас работает “экстремальная” многозадачность на ноутбуке с OS X?! она память и батарейку не кушает?

  10. то что вы пишите про многозадачность, а точнее про то что якобы в айфоне ее нет чтоб экономить заряд батареи – это полный бред. У меня был и симбиан и WM. B там и там работало большое количесвто программ и телефон держал заряд столько же времени, сколько и ваш айфон. Скорее всего эппл не может сделать нормальную многозадачность или же она просто хочет все контролировать, а эти отговорки придуманы для большинства фанатов эппл, которые свято верят что так будет лучше. Еслиб эппл могла то она бы продовала каждую функции за деньги при каждом ее использовании. Так что вы тут ерунду пишите и думаете что вам кто-то верит или слушает.

    • приложение приложению рознь. вы смотрите на систему как пользователь, а я смотрю на нее как разработчик. и я вижу как она может быть реализована в системе, и как туда может вписаться (в эту реализацию) Flash. поэтому про ерунду и бред, пожалуйста, идите расскажите кому-то другому. Например, Google, Nexus One которого у меня разрядился за час из-за работы определенного картографического ПО. а потом обсудим, когда они вам что-нибудь ответят.

      • Я не имел в виду флеш как таковой я просто привел пример что на других системых все прекрасно работает а из-за амбиций и самоуверенности эппл некоторые технологии выставляются в дурном свете. Почему то и на макбуках есть проблемы с флешем. Так в чем же дело? ну а про навигацию – тут я согласен.

        • ну вы статью вообще читали? там шла речь конкретно о run-time Flash и о том, как Adobe собиралась компилировать приложения для iPhone, и что это все оказывается не очень совместимо с iPhone OS 4.0.
          Что касается многозадачности вообще, то тут проблема сложнее. Так как действительно текущее ПО системы позволяет запускать приложения в фоне (используя тулзы для джейлбрейка), и в принципе, нельзя сказать, что это наносит какой-то особый вред системе. Да, батареи хватает на меньшее время, но не радикально. В то же время Apple не хочет делать такого решения, так как если хотя бы есть риск того, что какое-то приложение заглючит и сожрет батарейку, то они не готовы на этот риск идти. Поэтому они выбирают свой, особый путь.
          и не забывайте про закон сохранения энергии — ну не может телефон физически работать столько же времени с множеством запущенных приложений, сколько он работает с одним приложением. они все жрут хоть сколько-то процессора, что, естессно, садит батарейку.

    • У меня тоже был Symbian на той же N95 запущенный фоном Garmin XT убивал батарейку достаточно быстро. Видимо вопрос не в том, что процессор может работать в мультитаск режиме, а он это может (прием звонков, проигрывание музыки фоном), а в том, как приложения могут неосторожно использовать ресурсы быстро убивающие батарейку (GPS, Wi-Fi).
      Не только у автора блога возникли проблемы с Андроидом.
      А если Вы считаете это ерундой и не верите, то зачем вообще пишите комменты к блогу, который считаете недостоверным? 🙂
      ps. Alexmak, большое спасибо именно за субъективное мнение, а не за закос под объективность как у некоторых безапелляционных товарищей 🙂

      • во-первых, про навигацию я написал что согласен с тем что она жрет акк, а во-вторых блог для того и существует люди делились своими мнениями, а не тупо писали что-то типа +1

        • Если блог для того чтобы люди выражали свои мнения, то зачем тогда форумы? 🙂
          Вообще-то это персональный блог одного человека, а мы пишем в комментариях к конкретной статье. Можно выразить своё отношение к статье в виде «+1», можно написать что-нибудь еще.

Leave a Reply