- PVSM.RU - https://www.pvsm.ru -
2015 год закончился, а это значит, что настала пора подвести итоги. Что же важного, полезного и интересного для Android-разработчиков произошло в ушедшем году — читайте в нашем блоге.

Год выдался довольно насыщенным не только для рядовых пользователей, которые получили большую линейку новых девайсов, новую версию OS — Android Marshmallow и много изменений в дизайне большинства популярных приложений (Material Design продолжает наступление), но и для Android-разработчиков, которые ощутили не менее существенные изменения в рабочем окружении, библиотеках и паттернах проектирования.
Наконец-то была выпущена библиотека для почти полноценной поддержки гайдлайнов Material Design — Design Support Library. Разработчики получили новые компоненты для реализации FAB, Navigation Drawer, SnackBar, Collapsing Toolbar и других элементов. В первое время было большое количество багов, но на данный момент библиотека уже доработана для повсеместного использования. Также были обновлены и добавлены support-библиотеки, с полным списком которых вы сможете ознакомиться здесь [1].
Новая версия операционной системы Android принесла не только новые подходы к дизайну интерфейса, но и внесла существенную коррекцию в энергосбережение и права доступа для приложений. Разработчикам была представлена новая версия SDK (API 23), которая вместе с нововведениями принесла и немало проблем:
С новым обновлением сервисов до версии 8.4 у разработчиков расширились возможности по использованию предыдущих модулей:
Также в состав Google Play Services был добавлен целый ряд новых модулей:
Retrofit 2
Весьма немаловажным стало обновление самой популярной библиотеки для работы с сетью — Retrofit — до версии 2.0. Пока что данная версия находится в статусе beta, но это не мешает разработчикам активно ее применять. Из основных изменений: инкапсуляция запроса в объекте Call (позволяет организовывать более гибкую работу, в том числе и отмену запроса), разбиение библиотеки на компоненты, поддержка различных конвертеров и адапатеров и синтаксический сахар в виде новых аннотаций. Более подробно — выступление [9] Jake Warthon на Droidcon.
RxJava
Этот год также отметился грандиозным ростом популярности фреймворка RxJava в Android. Этот библиотека работает в тесном сотрудничестве с Retrofit и другими библиотеками, например с Realm [10]. RxJava обладает многими преимуществами для выполнения запросов с возможностью комбинирования, повторного запуска и многого другого, что позволяет в том числе удобно использовать ее для работы с сетью. На сегодня очень много ресурсов посвящено данному фреймворку: блоги [11], хабр [12] и многое другое. Также многие разработчики старательно переписывают стандартный функционал в реактивном стиле: RxBinding [13], RxPermissions [14], RxLoader [15].
Dagger 2
Также ростом популярности отметился Dagger 2. Тут стоит упомянуть его основные отличия с Dagger 1:
Документация [16] и пример связки Dagger 2 + MVP [17].
Kotlin
Обещанный релиз этого языка почти состоялся, актуальная версия 1.0 Beta 4. Конечно, иногда могут возникать проблемы, в том числе существует немало жалоб на компиляцию, но JetBrains активно работает над этим. И в целом Kotlin уже вполне готов для использования в боевых проектах. Подробнее тут [18] и тут [19].
Если предыдущий год стал некоторой стандартизацией в плане дизайна интерфейсов, то текущий год был наполнен попытками стандартизировать “внутренности” приложения — то есть предоставить такие паттерны, с помощью которых можно было бы достаточно универсальным образом разрабатывать приложения. Раньше было трудно говорить о какой-то общей архитектуре Android-приложений, однако сейчас большинство компаний уже старательно внедряют практики и подходы для использования устоявшихся паттернов разработки.
MVP
Это одновременно и самый популярный, и самый спорный паттерн. Популярный — потому что он удачным образом позволяет разделять бизнес-логику и элементы интерфейса, что в свою очередь обеспечивает удобство при тестировании. Спорный — потому что абсолютно каждый разработчик имеет свое мнение на счет того, как реализовывать данный паттерн. Посмотреть на некоторые его реализации вы можете тут [20]. Также есть хорошая статья [21] на хабре, которая рассказывает о связке MVP и RxJava.
MVVM
Еще один модный паттерн, который активно используется в WPF. Он набрал популярность в мире Android благодаря разработке Google — Data Binding. Нельзя не отметить того, что эта библиотека еще недостаточна стабильна (имеет статус beta). Впрочем, Google без сомнений доведет ее до ума, поэтому изучать стоит уже сейчас [22].
Конец года отметился еще одним знаменательным событием для разработчиков — в ноябре Android Studio 2.0 стала доступной всем в Preview Channel. Очевидно, что представленный функционал делает это обновление самым значимым из всех:
Более детальную информацию вы можете найти в блоге [23] разработчиков.
В 2015 году также прошло немало достойных конференций, таких как Google I/O и множество Droidcon-ов (из которых более всего выделяется Droidcon NYC).
Google I/O 2015
Во время Google I/O 2015 все внимание докладчиков было сосредоточено на новых версиях операционных систем и сервисах Google, поэтому главными темами конференции стали: Android M, обновленная Android Wear, Internet of Things, Google Now, Google Photos, offline-сервисы, новые инструменты для разработчиков, обновленный Google Cardboard. Общий обзор можно посмотреть на GT [24].
Большинство новостей мы уже рассмотрели отдельно, но о чем-то стоит упомянуть:
Droidcon NYC
Эта конференция отметилась большим количеством докладов, посвященных именно разработке, и нет ничего удивительного, что она пользуется заслуженной популярностью. Достаточно даже посмотреть программу [26], чтобы остаться там надолго. Конечно, нужно выделить доклады Simple HTTP with Retrofit 2 [9], Detect all memory leaks with LeakCanary [27], Fresco: How Facebook saved a century a day [28], Kotlin: New Hope in a Java 6 Wasteland [29] и многие другие.
Android Dev Summit
На этой конференции мы увидели немало интересных докладов по самым актуальным темам, из которых особо можно выделить следующие:
Несомненно все больше проектов будут разрабатываться в реактивном стиле с использованием RxJava. Также многие компании и разработчики будут стараться придерживаться таких паттернов как MVP и MVVM, благодаря которым к тому же ожидается рост покрытия тестами, так как это становится более доступным и менее затратным (особенно с учетом последних фреймворков для тестирования).
Стоит ожидать потенциально новых решений в работе с базами данных, так как существующие библиотеки все еще имеют много недостатков.
Еще мы надеемся приблизиться к мечте о minSdkVersion 19 [37] (а может и 21).
И конечно, с каждым годом разработка под Android становится все более интересной, так что будем верить, что 2016 год принесет всем нам еще больших новых идей и решений.
В первую очередь хотелось бы поблагодарить всех активных участников нового сообщества Android разработчиков [38], которые помогали в написании этой статьи. Некоторых хотелось бы поблагодарить отдельно: atetc [39] iamtodor [40] nexus700120 [41]
Автор: e-Legion Ltd.
Источник [42]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/android-development/108617
Ссылки в тексте:
[1] здесь: http://developer.android.com/intl/ru/tools/support-library/features.html
[2] здесь: http://developer.android.com/intl/ru/training/permissions/requesting.html
[3] здесь: http://habrahabr.ru/post/269491/
[4] тут: http://developer.android.com/intl/ru/training/monitoring-device-state/doze-standby.html
[5] график: http://developer.android.com/images/training/doze.png
[6] Подробнее: http://developer.android.com/intl/ru/about/versions/marshmallow/android-6.0.html#fingerprint-authentication
[7] тут: https://developers.google.com/cloud-messaging/android/client
[8] тут: https://developers.google.com/android/guides/setup
[9] выступление: https://realm.io/news/droidcon-jake-wharton-simple-http-retrofit-2/
[10] Realm: https://realm.io/docs/java/latest/#rxjava
[11] блоги: http://blog.danlew.net/2014/09/15/grokking-rxjava-part-1/
[12] хабр: http://habrahabr.ru/company/e-Legion/blog/272459/
[13] RxBinding: https://github.com/JakeWharton/RxBinding
[14] RxPermissions: https://github.com/tbruyelle/RxPermissions
[15] RxLoader: https://github.com/evant/rxloader
[16] Документация: http://google.github.io/dagger/
[17] Dagger 2 + MVP: http://habrahabr.ru/post/263465/
[18] тут: http://blog.jetbrains.com/kotlin/
[19] тут: https://plus.google.com/+JakeWharton/posts/WSCoqkJ5MBj
[20] тут: http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/
[21] статья: http://habrahabr.ru/post/252903/
[22] сейчас: http://developer.android.com/intl/ru/tools/data-binding/guide.html
[23] в блоге: http://android-developers.blogspot.ru/2015/11/android-studio-20-preview.html
[24] GT: http://geektimes.ru/company/medgadgets/blog/251106/
[25] Custom Chrome Tabs: https://developer.chrome.com/multidevice/android/customtabs
[26] программу: https://droidconnyc2015.sched.org/
[27] Detect all memory leaks with LeakCanary: https://realm.io/news/droidcon-ricau-memory-leaks-leakcanary/
[28] Fresco: How Facebook saved a century a day: http://www.slideshare.net/tyronenicholas/saving-a-century-a-day-how-the-fresco-library-works
[29] Kotlin: New Hope in a Java 6 Wasteland: https://realm.io/news/droidcon-michael-pardo-kotlin/
[30] App Standby vs. Doze: Understanding System Sleep: https://www.youtube.com/watch?v=p6ZiDZBgPY8
[31] «Mother, May I?» Asking for Permissions и Keep it Secret: https://www.youtube.com/watch?v=5xVh-7ywKpE
[32] Keep it Safe: https://www.youtube.com/watch?v=fcWVV0Hafuk
[33] Support Library: Guts and Glory: https://www.youtube.com/watch?v=ihQ16K8gSuQ
[34] Android Testing: https://www.youtube.com/watch?v=vdasFFfXKOY
[35] Android Application Architecture: https://www.youtube.com/watch?v=BlkJzgjzL0c
[36] Data Binding — Write Apps Faster: https://www.youtube.com/watch?v=NBbeQMOcnZ0
[37] minSdkVersion 19: http://developer.android.com/intl/ru/about/dashboards/index.html
[38] сообщества Android разработчиков: https://github.com/rus-speaking/Russian-speaking-Android-developers-community
[39] atetc: http://habrahabr.ru/users/atetc/
[40] iamtodor: http://habrahabr.ru/users/iamtodor/
[41] nexus700120: http://habrahabr.ru/users/nexus700120/
[42] Источник: http://habrahabr.ru/post/274223/
Нажмите здесь для печати.