Обновить
48.37

Kotlin *

Статически типизированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

7 библиотек для Android разработки на Kotlin

Время на прочтение3 мин
Количество просмотров14K

7 библиотек для Android разработки на Kotlin


Недавно я начал изучать Kotlin для Android-разработки, и мне это очень понравилось. Kotlin по синтаксису очень похож на Swift, и это удобно. Я всего лишь новичок в Android-разработке, поэтому скорее всего есть ещё много полезных библиотек, которые у меня ещё не было возможности изучить, но этот список — это некоторые из тех, которые я уже успешно использовал или планирую сделать это в скором времени.

Читать дальше →

Строим систему реактивных компонентов с помощью Kotlin

Время на прочтение7 мин
Количество просмотров11K


Всем привет! Меня зовут Анатолий Варивончик, я Android-разработчик Badoo. Сегодня я поделюсь с вами переводом второй части статьи моего коллеги Zsolt Kocsi о реализации MVI, которую мы ежедневно используем в процессе разработки. Первая часть здесь.

Чего мы хотим и как мы это сделаем


В первой части статьи мы познакомились с Features, центральными элементами MVICore, которые можно переиспользовать. Они могут обладать максимально простой структурой и включать всего один Reducer, а могут стать полнофункциональным средством для управления асинхронными задачами, событиями и многим другим.

Каждая Feature отслеживаема — есть возможность подписаться на изменения её состояния и получать уведомления об этом. При этом Feature можно подписать на источник ввода. И в этом есть смысл, ведь с включением Rx в кодовую базу у нас и так появилось множество наблюдаемых объектов и подписок на самых разных уровнях.

Именно в связи с увеличением количества реактивных компонентов пришло время поразмышлять о том, что мы имеем и можно ли сделать систему ещё лучше.
Читать дальше →

Современная MVI-архитектура на базе Kotlin

Время на прочтение8 мин
Количество просмотров57K


За последние два года Android-разработчики в Badoo прошли длинный тернистый путь от MVP к совершенно иному подходу к архитектуре приложений. Мы с ANublo хотим поделиться переводом статьи нашего коллеги Zsolt Kocsi, описывающую проблемы, с которыми мы столкнулись, и их решение.

Это первая из нескольких статей, посвящённых разработке современной MVI-архитектуры на Kotlin.
Читать дальше →

Thrift в качестве REST API

Время на прочтение7 мин
Количество просмотров22K
Небольшая статья о том, как мы столкнулись с проблемами синхронизации работы между командами клиентской и серверной разработки. Как мы подключили Thrift для того, чтобы упростить взаимодействие между нашими командами.

Кому интересно, как мы это сделали, и какие «побочные» эффекты мы словили, прошу заглянуть под кат.
Читать дальше →

Работа с сетью в Android с использованием корутин и Retrofit

Время на прочтение5 мин
Количество просмотров15K

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


Читать дальше →

Как начать работать с Hibernate Search

Время на прочтение7 мин
Количество просмотров19K
Сегодня многие разрабатывают enterprise-приложения на Java с использованием spring boot. В ходе проектов часто возникают задачи по созданию поисковых систем разной сложности. Например, если вы разрабатываете систему, хранящую данные о пользователях и книгах, то рано или поздно в ней может потребоваться поиск по имени/фамилии пользователя, по названиям/аннотациям для книг.



В этом посте я вкратце расскажу об инструментах, которые могут помочь в решении таких задач. А затем представлю демо-проект поискового сервиса, где реализована более интересная и сложная фича — синхронизация сущностей, БД и поискового индекса. На примере этого демо-проекта вы сможете познакомиться с Hibernate Search — удобным способом общения с полнотекстовыми индексами Solr, Lucene, ElasticSearch.
Читать дальше →

Kotlin 1.3 с поддержкой корутин, бета-версией Kotlin/Native и не только

Время на прочтение5 мин
Количество просмотров16K
На днях вышел Kotlin 1.3 с комплектом сопутствующих библиотек, инструментов сборки и учебных материалов.

Мы делаем Kotlin как инструмент для разработки приложений любого масштаба на любых платформах. В Kotlin 1.3, благодаря корутинам, читать и писать неблокирующий асинхронный код стало легко и удобно. Масштабируемость стала гораздо доступнее. В новом релизе мы также выпустили бета-версию Kotlin/Native, позволяющую компилировать код Kotlin непосредственно в машинный код. Мультиплатформенные возможности Kotlin теперь работают на всех поддерживаемых платформах, что позволяет, например, использовать одну и ту же бизнес-логику в приложениях для Android и iOS. Общую логику можно также использовать для серверов и мобильных и веб-клиентов. Кроме того, появилась возможность писать легко переносимые мультиплатформенные библиотеки, которые возьмут на себя большинство повседневных задач.

image

В ближайшее время мы проведем серию вебинаров по основным возможностям версии 1.3, записывайтесь здесь.
Читать дальше →

MOSDROID митап в FunCorp

Время на прочтение2 мин
Количество просмотров2K


10 ноября совместно с MOSDROID проведём Android митап. В программе 5 докладов от Сбертеха, Яндекс.Такси, FunCorp, Lamoda и Joom.

Программа


«MotionLayout: знакомство и применение»
Павел Апановский, Сбертех

На Google I/O '18 был представлен новый механизм работы с анимацией в Android – MotionLayout. Разберём, что он из себя представляет, как им пользоваться, что скрывается под капотом, да и нужен ли он в проекте?

«Как мы поддерживаем стабильность приложения Lamoda»
Виталий Бендик, Lamoda

Поговорим о том, что мы понимаем под стабильностью. Какие факторы приводили к нарушению стабильности, как мы с ними боролись и что предприняли для их устранения.
Читать дальше →

Android LiveData на Kotlin с использованием Retrofit и coroutines

Время на прочтение6 мин
Количество просмотров22K
Статья рассказывает об использовании Android Components ViewModel, LifeCycle и LiveData. Эти компоненты позволяют не заботиться о жизненном цикле Activity.

Так же рассмотрен пример применения современного Coroutines в связке с репозитарием на Retrofit

fun main(args: Array<String>): Unit = runBlocking {
    // Wait (suspend) for Result
    val result: Result<User> = api.getUser("username").awaitResult()
    // Check result type
    when (result) {
        //Successful HTTP result
        is Result.Ok -> saveToDb(result.value)
        // Any HTTP error
        is Result.Error -> log("HTTP error with code ${result.error.code()}", result.error)
        // Exception while request invocation
        is Result.Exception -> log("Something broken", e)
    }
}
Читать дальше →

Практика тестирования бэкенда на Java + Rest-Assured

Время на прочтение5 мин
Количество просмотров35K
В предыдущей статье я поделился своим опытом автоматизации на Robot Framework. Теперь же речь пойдет о несколько другом подходе к тестированию API для проекта на Kotlin.

Воспользовавшись свободой выбора стека технологий и опираясь на желание попробовать «в бою» что-то новое, я обратился к Rest-Assured. Не без некоторых сложностей мы с коллегами запустили тесты, а по итогам освоения подхода записали его в список ключевых для подобного рода задач.

image

(изображение используется на правах пародии)
Читать дальше →

Joker 2018: невозможное возможно

Время на прочтение7 мин
Количество просмотров8.7K
19-20 октября 2018 года в Санкт-Петербурге прошло долгожданное Java-мероприятие второй половины года — конференция Joker 2018. Подробности, впечатления, детали — всё дальше.


Читать дальше →

На поводу у трендов, или движение навстречу RxJava и LiveData

Время на прочтение6 мин
Количество просмотров8.7K


На дворе 2018 год. Всё чаще встречаются слова RxJava и LiveData. Но если вдруг так случилось, что в вашем приложении до сих пор балом правят старомодные решения вроде библиотеки android-priority-jobqueue или AsyncTask (да, бывает и так), то эта статья специально для вас. Я разделяю эти подходы, исходя из заложенной в них философии. Первый предполагает некоторую зависимость выполнения работы от отображения, второй — выполнение задачи, при котором View слушает её и она не прерывается в зависимости от событий жизненного цикла (например, при повороте экрана). Под катом я предлагаю рассмотреть миграцию на связку RxJava и LiveData для обоих подходов.
Читать дальше →

Как декларативно описать коллапсирующий тулбар

Время на прочтение8 мин
Количество просмотров11K


Хочу представить решение того, как можно описать CollapsingToolbar, с акцентом на читаемости кода. В статье не будет объясняться, что такое и как написать свой CoordinatorLayout.Behavior. Если читателю интересно в этом разобраться, есть много статей, в том числе на хабре. Если разбираться не хочется — ничего страшного: я постарался вынести написание CollapsingToolbar так, чтобы можно было абстрагироваться от CoordinatorLayout.Behavior и OnOffsetChangedListener.
Читать дальше →

Ближайшие события

Kotlin: копаем глубже. Конструкторы и инициализаторы

Время на прочтение12 мин
Количество просмотров30K


В уже далёком мае 2017 года Google объявила о том, что Kotlin стал официальным языком для разработки под Android. Кто-то тогда впервые услышал название этого языка, кто-то на нём уже продолжительное время писал, но с того момента стало понятно, что все, кто близок к Android-разработке, теперь просто обязаны познакомиться с ним. Далее последовали как восторженные отклики «Наконец-то!», так и жуткое негодование «Зачем нам нам новый язык? Чем Java не угодила?» и т.д. и т.п.

С тех пор прошло достаточно времени, и хоть споры о том, хороший Kotlin или плохой, до сих пор не утихли, всё больше кода под Android пишется именно на нём. И даже вполне консервативные разработчики тоже переходят на него. Кроме того, в сети можно наткнуться на информацию, что скорость разработки после освоения этого языка увеличивается на 30% по сравнению с Java.

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

И вот на этой волне мне пришла в голову идея подробно разобрать отдельные элементы молодого, но популярного языка. Обратить внимание на сложные моменты и сравнить их с Java для наглядности и лучшего понимания. Разобраться в вопросе несколько глубже, чем это можно сделать, прочитав документацию. Если эта статья вызовет интерес, то, скорее всего, она положит начало целому циклу статей. А пока начну с довольно базовых вещей, которые, тем не менее, скрывают массу подводных камней. Поговорим о конструкторах и инициализаторах в Kotlin.
Читать дальше →

Теория игр: принятие решений с примерами на Kotlin

Время на прочтение18 мин
Количество просмотров43K
Теория игр — математическая дисциплина, рассматривающая моделирование действий игроков, которые имеют цель, заключающуюся в выбор оптимальных стратегий поведения в условиях конфликта. На Хабре эта тема уже освещалась, но сегодня мы поговорим о некоторых ее аспектах подробнее и рассмотрим примеры на Kotlin.
Читать дальше →

Списки в Kotlin. Haskell подход

Время на прочтение10 мин
Количество просмотров12K
Haskell является полностью функциональным и чрезвычайно лаконичным языком. Любой, кто когда-нибудь пробовал писать код на Haskell, замечает, насколько он получается более кратким и изящным, чем написать то же самое на императивном языке. Добиться такого же на Java, на мой взгляд, невозможно, но Kotlin позволяет продвинуться в этом направлении и примерить на себе полностью функциональный стиль. Мы можем вывести все сложные функции, которые нам могут понадобится из стартового базиса 3-х наиболее известных функций: map, filter, reduce. Кроме этого я создал репозиторий, который вы можете изучить и посмотреть тесты.
Читать дальше →

KotlinConf 2018 — кейноут и первые видео

Время на прочтение1 мин
Количество просмотров2.3K
3-5 октября в Амстердаме прошла конференция KotlinConf 2018, и мы рады поделиться первыми видео. Смотрите кейноут Андрея Бреслава, руководителя проекта Kotlin:


Ещё 7 видео доступны в нашем канале на YouTube.

Подпишитесь и получите ссылку на все видео, как только они станут доступны.

Ваша команда JetBrains
The Drive to Develop

Быстрые прототипы на Flutter и Kotlin/Native

Время на прочтение4 мин
Количество просмотров18K

Быстрые прототипы на Flutter и Kotlin/Native


Получив задачу разработать приложение для нашей предстоящей внутренней конференции в рамках OLX Group, моя команда задумалась о том, как сократить время создания приложения для iOS и Android, потому что нам и без этого было чем заняться. Первое, что мне пришло в голову, — использовать Kotlin, т.к. он может компилироваться на других платформах. Спойлер: не все пошло так, как изначально планировалось, но мы сделали всё вовремя, попутно узнав много нового!


Итак, это рассказ о том, как мы делали приложение OLX Group Product & Tech Conference в рекордно сжатые сроки.

Читать дальше →

KotlinConf 2018 Live — мы в эфире

Время на прочтение1 мин
Количество просмотров1.4K
UPD
Трансляция сегодняшних сессий KotlinConf 2018:

Вы всё еще можете задавать нам свои вопросы в Twitter с хештегом #kc18ask. Сегодня на заключительной сессии вопросов-ответов мы на них ответим. Не пропустите, начало в 18:15 по Москве.
Читать дальше →

Kotlin под капотом — смотрим декомпилированный байткод

Время на прочтение10 мин
Количество просмотров22K


Просмотр декомпилированного в Java байткода Kotlin едва ли не лучший способ понять как он все-таки работает и как некоторые конструкции языка влияют на перфоманс. Многие само собой уже давно это сделали, так что особенно актуальной данная статья будет для новичков и тех, кто уже давно осилил Java и решил использовать Kotlin недавно.

Я специально упущу довольно избитые и известные моменты так как, наверное, нет смысла в сотый раз писать о генерации геттеров/сеттеров для var и подобных вещах. Итак начнем.
Читать дальше →