Google Developer Day 2011: посещенные секции

    В этом году поднявшись на 4-ый этаж заметил, что план помещений в Крокус-Экспо меняется как угодно. На потолке есть полозья куда вставляются стенки как будет угодно организаторам.

    Основной зал теперь открытый, при регистрации выдали красно-синие очки для просмотра трехмерного видео. На бейдже не оказалось расписание, а только бар-код для того, что бы его найти.

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

    Далее об Android, html5 и ускорении


    Открытие конференции



    На вступительной секции презентовали сайт developers.google.com/go/stories
    Рассмотрели проникновение интернета и мобильных устройств в нашу жизнь начиная с 1990 года. Сейчас ежедневно активируется более 500 тысяч андроид устройств. В мире более более 4 миллиардов телефонов, из них 150 миллионов работает на андроиде, которые производят 39 компаний.

    В феврале 2010 года активировалось 60 тысяч устройств ежедневно, в январе 2011 года – 300 тысяч, а в декабре 2011 года ожидается 550 тысяч активаций ежедневно.

    За 20 месяцев работы андроид маркет было более 1 миллиарда установок приложений, к июлю 2011 года это число достигло 6 миллиардов и продолжает расти. На текущий момент в андроид маркете содержится 250 тысяч приложений.

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

    Выступали разработчики самого популярного платного на андроид маркете приложения: игры Cut the Rope. Здорово, что самая популярная игра разработана в России.

    Одна из задач решаемая сейчас это соединить мобильный и веб мир во едино. Пользователь не должен чувствовать разницу при смене платформы. Любой веб-сайт (веб приложение) должно иметь свое представление в мобильной среде.

    На данный момент 67% пользователей используют браузере с поддержкой HTML5, а что особенно радует: в России это число возросло до 84%. Значит можно активно использовать современные возможности HTML5.

    Продемонстрировали на что способен WebGl. С помощью этих технологий можно реализовывать очень красивую графику в вебе при помощи canvas и javascript. Продемонстрировали приложений с бассейном с водой, в котором находился шар, очень красиво выглядят волны, тени, вращения бассейна. И все это в вебе без использование видео и флеша. Рендеринг в реальном времени с использование графического процессора. Так же была демонстрация css-анимации (Flux slider), посмотрели 2D игру астероиды, как реализовано распознавание речи в google Translate (html5 тег — x-webkit-speech ).

    Очень понравилась новая встроенная возможность в Chrome умеющая форматировать javascript код из минифицированного в удобочитаемый. Называется эта кнопочка Pretty Print в инструментах для разработчиков, выглядит в виде фигурных скобочек.

    Так же упомянули о Web Audio Api, формате видео WebM (/>) позволяющий просматривать видео в 3D.

    После этого перешлю к Google+. Самое главное – круги. Отлично, конечно, когда все родственники ей пользуются, тогда можно очень здорово организовывать общение, особенно если все живут в разных местах, или находятся в поездках. Очень удобно организовывать видео встречи с использование мобильных устройств и обычных компьютеров.

    Google+ исполнилось 90 дней и в ней реализовано более 100 новых фишек. Уже активно используется Google+ Platform: Google+ хостит у себя iframe, в который можно вставлять свои приложения, предоставляет API: developers.google.com/+

    Конечно не обошли стороной кнопку +1, которая используется в поиске, в рекламе, на сайтах. Очень интересно видеть на странице результатов поиска, кто из твоих знакомых порекомендовал найденный сайт

    Что нового и важного в Android



    developer.android.com

    Упомянутые фишки новой версии:

    • съемка видео в 3D, ведущий снимал зал и в 3D очках можно было смотреть на экране результат
    • эта система хорошо работает как на различных планшетах, так и на мобильных телефонах
    • возможность одновременного скроллинга нескольких областей
    • Action Bar будет на планшетах и на мобильных телефонах


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

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

    Теперь в приложениях можно осуществлять покупку дополнений, таким образом отпала необходимость возвращаться в маркет. Многие зарубежные операторы поддерживают оплату приложений непосредственно с мобильного счета, удобно, что не надо привязывать кредитную карточку к маркету. Конечно, в России эта возможность если и появится, то не скоро.

    Еще некоторые плюшки:
    • Возможность включать аппаратное ускорение приложений: <application android:hardwareAccelerate=«true»>, но, пока, не всегда эта опция может привести к желаемому эффекту, так что надо тестировать в конкретных приложениях.
    • Разделение представления в зависимости от размеров устройств. При этом элементы можно делать зависимыми от разрешение экрана, что бы кнопочки не получались очень мелкими при очень высоком разрешение и маленьком размере экрана
    • USB host
    • Open Accessory API
    • API совместимо для телефонов и планшетов


    Offline HTML 5



    Очень интересная и мощная технология, которую уже надо активно использовать в своих приложениях.

    Кому, когда и зачем может понадобится offline доступ?
    • в самолете, в путешествии, в пустыне, под водой )
    • если плохое соединение: едете в туннеле, в метро
    • лучшая производительность
    • для создание клиентских приложений

    Что и как кешировать описывается в манифесте:
    CACHE:
    указанные url будут кешироваться всегда
    FALLBACK:
    если не доступна онлайн-версия, то брать из кеша
    NETWORK:
    всегда брать из онлайна, если здесь стоит *, то все, что не вошло в предыдущие правила всегда берется из онлайна
    Подробно: appcachefacts.info

    • Для разработки и тестирования пользовательского кеша будет удобно:
    • отключить http кеширование
    • в манифесте указывать номер версии, что бы при изменении одной циферки все данные взялись новые. Причем обновление данных произойдет только при повторной загрузке. То есть при первой загрузки обновится манифест, а при второй обновятся данные
    • вести лог, в хроме некоторые события логируются


    В webStore можно хранить не структурированные данные, для чего сейчас используются cookie. Как раз для повышения производительности рекомендуется отказаться от cookie в пользу webStore. Структурированные данные используя IndexedDB и бинарные файлы.

    Для хранения данных в пределах текущей сессии, пока пользователь не закрыл браузер используется sessionStorage. Для хранения данных между сессиями – localStorage, имеет методы: setItem(), getItem(),removeItem(), clear(). Для преобразования в строку и хранения json данных удобно использовать функцию JSON.stringify()

    Для хранения структурированных данных используется IndexedDB, которая поддерживает транзакции. Но пока эта БД поддерживается только в Chrome и Firefox

    Хранение бинарных файлов происходит в файловой системе: windows.requestFileSystem()

    Надо помнить, что при использовании хранилища на стороне клиента возникает необходимость синхронизировать данные не только с сервером, но и между открытыми окнами (SharedWorker).

    В хроме для просмотра текущего состояние хранилища можно использовать адреса:

    chrome://appcache-internals
    chrome://blob-internals
    chrome://quota-internals

    Узнать о поддержке этих технологий различными браузерами можно на сайте caniuse.com и mobilehtml5.org

    Поэкспериментировать с манифестами можно здесь: appmator.appspot.com

    Пример приложения использующего эти технологии: springpadit.com

    Библиотеки для работы с локальными хранилищами:
    • storage polyfill
    • sessionstorage
    • lawnchair

    HTML5 впереди планеты всей



    Очень интересный доклад и презентация, рекомендую ее посмотреть всем, открывать в Chrome. Переписывать презентацию смысла нет, но если кратко, то в ней идет речь о новых возможностях:

    Для анимации теперь есть requestAnimationFrame, вместо setTimeout. Основные отличия:

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


    Page Visibility API: теперь мы знаем когда страница просматривается, а когда пользователь переключился на другую вкладку. Это позволяет, например, приостановить видео пока страница не активна. Пример: www.samdutton.com/pageVisibility

    Prerendering: можно сказать браузеру какую страницу не только загрузить заранее, но и отрендерить. Таким образом при переходе на prerendering страницу она отобразится моментально! Демонстрация: prerender-test.appspot.com

    Navigator.onLine: теперь можно знать есть ли в данный момент соединения с интернетом. использую специальное свойство navigator.onLine и воспользоваться событиями online и offline, на которые можно повесить свои обработчики. Пример есть в презентации.

    Web Intents: для уменьшения путаницы в существующих сервисах. Работает следующим образом: сервис регистрируется как обработчик определенных типов событий, приложение сообщает о намерении выполнить действие, пользователь выбирает из зарегистрированных сервисов какой он хочет для этого использовать. Пример: examples.webintents.org/intents/pick/index.html

    Camera & microphone access: теперь есть доступ к видео камере и микрофону компьютера.

    Fullscreen content: любой элемент можно отобразить в полноэкранном режиме: bleedinghtml5.appspot.com/demos/fullscreen.html

    WebRTC: использование видео и аудио в реальном времени в браузере без помощи сторонних плагинов и флеша. Все функции по подавлению эхо, шумоподавлению, регулировки усиления браузер берет на себя. Это открывает очень много возможностей: видео конференции, аудио звонки непосредственно на сайте, построение социальных сетей нового уровня, создание онлайн презентаций, онлайн обучение и многое другое без использования дополнительных плагинов. Подробней: www.webrtc.org

    Web Audio API: теперь это не просто тег для проигрывания музыки, но и анализ аудио в реально времени, низкоуровневые манипуляция, различные аудио-эффекты.

    Но плохая! Многое из этого еще в экспериментальном режиме, возможно доступно только в Chrome. О статусе этих разработок: chromestatus.com.
    Хорошая новость! Для работы html5 в отсталых браузерах можно использовать chrome frame.

    Делаем свой сайт быстрей



    Прибыль от сайта пропорциональна его скорости. Чем медленнее сайт, тем меньше людей на нем задержаться. Скорость = Доход.

    У google есть замечательный инструмент которые анализирует сайт, оценивать его скорость и дает рекомендации для его ускорения: pagespeed.googlelabs.com

    Рекомендации включают в себя: добавление заголовком для кеширование статики на стороне клиента, создание css спрайтов, объединение и включение сжатия css и javascript, отложить анализ javascript и многое другое.

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

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

    По-мимо модуля для апача сейчас тестируется online решение: code.google.com/speed/pss. Гугл предоставляет фронтенд сервер через который пользователи обращаются к вашему сайту, в итоге весь трафик ходит через гугл, а он производит оптимизации, кеширует статику и помогает более быстрой доставке контента, т.к. его сервера находятся по всему миру.

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

    На этом пока все. Изучайте, ускоряете, творите. Спасибо всем кто дочитал до конца.
    Буду рад любым комментариям и вопросам.

    Комментарии 47

      +2
      Ты попутал Honeycomb и IceCreamSandwich
        0
        Расскажи, пожалуйста, подробней об этом. Действительно мог перепутать, т.е. только начал вникать в разработку под андроид
          0
          Honeycomb сейчас на планшетах, IceCreamSandwich это андроид 4.0.

          еще
          >> на планшетах, как и на мобильных телефонах появился Action Bar
          тут вроде как наоборот
            0
            en.wikipedia.org/wiki/Android_version_history
            Honeycomb вышел ещё в начале года и он только для планшетов.
            То, что ты описал «что-то новое, одна версия для телефонов и планшетов» — это давно ожидаемый IceCreamSandwich
              0
              спасибо
          0
          Не сказали будет ли и когда аппаратное ускорение canvas'а на андроидах?
          0
          Много чего уже известного (из HTML5 например), наверное цель рассказать и популизировать эти штуки среди разработчиков. Презентация по новым API HTML5 — красотень.
            0
            Я побывал на +1 Button и Интеграция с Google Web apps: новые возможности.
            Первый доклад был относительно интересным, рассказывали собственно про чудо-кнопку — как, где и зачем.
            Второй на удивление оказался очень скучным и не сильно соответствовал названию. Основной упор сделали на Tasks API, причем даже с практическими примерами. А про интеграцию с другими приложениями рассказали вскользь.
              0
              а были секции в виде практических семинаров, как в бородатые времена? когда какой-нибудь иностранный представитель гугла (из европы или сша) сидит и программирует вместе с тобой?
                0
                Нет, таких семинаров не было.
                +5
                А вы драку в курилке пропустили? Там было весело, говорят, что чуваки браузеры не поделили…
                  0
                  Пропустил )) Что так было, за какие браузеры сражались? )
                    0
                    Я был не с начала (сам не курю, с другом вышел), драка уже шла полным ходом., поэтому за что воевали сказать точно не могу… Но было весело, никогда не видел как дерутся на таких конференциях…
                      0
                      я прям себе представляю «Хром дай мне сил...», «За Фаерфокс...», «Во имя Оперы...»
                        0
                        ну один был в оранжевой майке, а другой — в красной ;)
                          0
                          Когда я пришёл в курилку, там уже два каких-то чувака мирно обсуждали браузеры)
                          +1
                          Еще ближе к вечеру, у логотипа Google, какой-то чувак уронил все кубики, грохот стоял на весь зал.
                            0
                            Я присутствовал с начала — как я понял там парни что-то личное не поделили. Да и не драка, а сцепились, один другого повалил, потом разняли их.

                            Но все равно имхо GDD это не то место, где выясняются личные отношения… ну или хотя бы отошли подальше. Хорошо, что гугло-гостей не было — а то, блин, стыдно было бы.
                            +3
                            самым адекватным рассказчиком имхо оказался «Найти свое место в мире: Google Places API TECH»
                              0
                              Докладчик — Mano Marks
                                0
                                И второй его доклад «Displaying Large Geographic Datasets: Google Fusion Tables» был очень адекватным.
                                  0
                                  очень хотел сходить ещё послушать его, да работа позвала
                                0
                                А ссылки на презентацию не осталось?
                                0
                                Это уже прямо традиция, что наиболее интересные докладчики так или иначае имеют отношение к гео сервисам.
                                На позапрошлом gdd меня очень порадовал Jean-Francois Wassong
                                www.youtube.com/watch?v=8d0heyM9lqw
                                +1
                                Всё это круто с HTML5, но почему досих пор приложения, которым хватит возможностей HTML5 нужно писать на Java под Android? И почему нельзя в андроид маркете заливать HTML5 приложения, как гугл вебсторе? Или может я что-то пропустил?
                                  0
                                  По всей видимости из-за отсутствия галочек во многих ячейках здесь: mobilehtml5.org/
                                  И пятого слайда: bleedinghtml5.appspot.com/#5, который значит, что все эти возможности разрабатываются и завтра их может не стать, либо они могут быть переименованы, либо еще что-нибудь с ними может случится…
                                  +1
                                  Мне больше запомнился парень, который заснул на тюфяке в общем зале. Вокруг него собралась толпа, фоткалась с ним, позже к нему поставили коробочку для пожертвований. Интересно, что он почувствовал, когда проснулся? Кто-нибудь выложит фотку?
                                    +6
                                    Герой GDD:
                                    image
                                      0
                                      Да, это он )). Как вам удалось снять его без людей? Там вокруг такая толпа образовалась
                                        0
                                        Бинго) Я пришёл в комнату, когда его уже облепили.
                                          0
                                          Мопед не мой, фоткал denya, к нему все вопросы :) Но парень очень клево спал, обняв свою сумку :)
                                            0
                                            Что называется, проснуться знаменитым :)
                                        0
                                          0
                                          Скажите, а где можно посмотреть проекты, которые были сделаны с помощью Android и Arduino? Ну, там человек сделал что-то вроде приставки на андойд + atmega8, хотел посмотреть сорцы.
                                            0
                                            Вы о том проекте, где роутер конфигурировался с мобилки через Ардуину?
                                              0
                                              Нет, я говорил про именно аналог приставки (денди, сега) с джойстиками и игрой танчики. Но не в этом суть, я бы почитал обо всех проектах.

                                                0
                                                на днях будет пост про эти проекты
                                                  0
                                                  Отлично, спасибо!
                                            +4
                                            Побывал на андроидовских докладах. О докладе про новое и важное в Android уже сказано, не буду повторяться.

                                            Android Market для разработчиков (Richard Hyndman) — рассказывалось о том, как там много приложений и как это круто, о новых способах формирования списков новых приложений, лучших приложений, лучших из лучших. Было рассказано немного о пиратстве и о том, как с помощью средств маркета (Android Market Licensing Service) можно бороться с казуальными пиратами — теми кто использует пиратский софт только потому что это проще, чем приобретать. Также упомянули о том, что можно использовать Google Analytics для отслеживания статистики всего приложения — вплоть до наиболее «популярных» эксепшенов.

                                            Достигая совершенства в проектировании пользовательского взаимодействия в Android (Nick Butcher) — основная мысль этого доклада была посвящена тому, что на планшетах экран больше чем на телефонах и этим надо пользоваться. Рассказали про элементы управления, которые актуальны на планшетах — уже упомянутый ActionBar (появился в 3.0, но при желании можно с помощью специального Compatibility Package использовать его и в более старых версиях). Говорилось об особенностях верстки, возможности размещать несколько Activity на одном экране, но, описывая различные варианты верстки для различных устройств — использовать единый APK-файл для телефонов и для планшетов.

                                            Google TV: готов для Android-разработчиков (Christian Kurzke) — говорилось о том, как разрабатывать приложения для телевизоров под управлением Андроида (актуальность и перспективы я пропустил, опоздав). Особенности верстки интерфейса: экран большой, но надо верстать, как для телефона, а не планшета, т.к. телевизор смотрят с большого расстояния; учитывать отсутствие тачскрина — проектировать интерфейс с учетом управления с пульта (задавать порядок перехода между контролами), учитывать отсутствие на телевизорах GPS и присутсвие Ethernet-подключения к сети (т.е. если нет Wi-Fi, приложение не должно жаловаться на отсутствие широкополосного доступа, как в телефонах). Отмечалось отсутствие поддержки NDK.

                                            Высокопроизводительная графика в Android — докладчик (Sparky Rhode) сразу предупредил, что в графике для Андроида он не особо разбирается, поэтому просто прочитает данный ему доклад и покажет составленные кем-то другим слайды. Это немного расстроило, как и фразы вроде «Вы понимаете, что на слайде в этом коде написано? Я — нет, поэтому идем дальше». Способы для отрисовки графики следующие:
                                            Canvas, OpenGL, RenderScript и NDK. Из Canvas можно выжать достаточную производительность для некоторых приложений. Недостатком OpenGL является необходимость поддержки шейдеров отдельно для разных устройств. RenderScript позволяет при написании шейдеров абстрагироваться от конкретного железа, но сам ещё молод. Можно использовать NDK и писать напрямую в видеопамять — это уже для тех, кто любит использование нативного кода.

                                              +5
                                              А мне GDD-конференция не понравилась, в этом году YAC помощнее была.
                                                +1
                                                Точно. В андроидовской секции рассказывали то, что можно самому прочитать буквально на первой странице соответствующего раздела developers.android.com, причем давно уже.

                                                Выбирали, судя по анкете-заявке, участников поопытнее, а потом вот такие доклады для новичков выкатывают. Зачем?
                                                0
                                                Я вот записал те фразы, что успел поймать, с нескольких выступлений — вот тут: wave.google.com/wave/?pli=1#restored:search:gdd2011

                                                Прошу дополнять, исправлять и комментировать. ;)
                                                  0
                                                  А мне подарок не достался. Мелочь, а не приятно.

                                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                  Самое читаемое