клиент серверное приложение kotlin
Частые вопросы
Что такое Kotlin?
Какова текущая версия Kotlin?
Свободен ли Kotlin?
Да. Kotlin был, есть и будет свободным. Он разрабатывается под лицензией Apache 2.0, а исходный код доступен на GitHub.
Является ли Kotlin обьектно-ориентированным или функциональным?
Какие преимущества есть у Kotlin по сравнению с Java?
Kotlin более лаконичен. Код на Kotlin примерно на 40% короче. Также Kotlin является типобезопасным. Благодаря null-безопасности приложения менее уязвимы к NullPointerException. В списке других возможностей: умное приведение типов, функции высшего порядка, функции-расширения и лямбда-выражения с получателями. Они позволяют писать выразительный код и поддерживать создание DSL.
Совместим ли Kotlin с Java?
Да, Kotlin на 100% совместим с Java. Возможности вашего существующего кода на Java правильно взаимодействовать с Kotlin уделено много внимания. Вы можете запросто вызывать код на Kotlin из Java и наоборот. Благодаря этому, внедрение Kotlin в проект намного проще и безопасней. Также стоит отметить автоматический конвертер кода из Java в Kotlin. Он встроен в IDE и позволяет упростить переход существующего кода на Kotlin.
Для чего я могу использовать Kotlin?
Kotlin может быть использован для разработки для множества платформ, будь то сервер, клиент, веб или Android. C релизом Kotlin/Native (который на текущий момент в разработке) появится поддержка таких платформ, как встроенные системы, macOS и iOS. Люди используют Kotlin для мобильных и серверных приложений, клиентских приложений с JavaScript или JavaFX, в data science и так далее.
Можно ли использовать Kotlin для разработки для Android?
Можно. Kotlin поддерживается как основной язык для Android, наравне с Java. Сотни приложений для Android уже используют Kotlin, к примеру Basecamp, Pinterest и так далее. Чтобы узнать больше, смотрите статью про разработку для Android.
Можно ли использовать Kotlin для разработки серверных приложений?
Можно. Kotlin на 100% совместим с JVM, а значит вы можете использовать любые фреймворки для Java, такие как Spring Boot, vert.x или JSF. Также есть фреймворки для Kotlin, как например Ktor. Смотрите статью о разработке серверных приложений.
Можно ли использовать Kotlin для веб-разработки?
Да. Кроме использования в бэкэнде, вы также можете использовать Kotlin/JS для клиентской стороны. Kotlin может использовать определения из DefinitelyTyped для статической типизации для популярных библиотек на JavaScript. Также Kotlin совместим с модульными системи, такими как AMD и CommonJS. Смотрите статью о разработке для клиентской стороны.
Можно ли использовать Kotlin для разработки Desktop-приложений?
Да. Вы можете использовать любой UI-фреймворк, например JavaFx, Swing и т.д. В добавок, существуют фреймворки для Kotlin, такие как TornadoFX.
Можно ли использовать Kotlin для нативной разработки?
Kotlin/Native в текущий момент в разработке. Kotlin/Native позволит компилировать исходный код в нативный, который может работать без виртуальной машины. На данный момент готова технологическая демо-версия, но она еще не готова к продакшену и не поддерживает некоторые платформы, которые запланированы к версии 1.0. Смотрите пост, анонсирующий Kotlin/Native.
Какие IDE поддерживают Kotlin?
Kotlin поддерживается всеми крупными IDE для Java, включая IntelliJ IDEA, Android Studio, Eclipse и NetBeans. Также доступен отдельный компилятор, полностью поддерживающий все возможности компиляции и запуска приложений.
Какие инструменты для сборки поддерживают Kotlin?
Во что может компилироваться и транслироваться Kotlin?
В Java-байткод и ES5.1, поддерживаемый модульными системами AMD and CommonJS. Скоро появится возможность компилировать в код для конкретной платформы с LLVM.
Kotlin поддерживает лишь Java 6?
Не только. Вы можете выбирать между байткодом 6 или 8 версии. Чем новее версия Java, тем лучше и эффективнее байткод.
Сложен ли Kotlin?
Kotlin похож на Java, C#, JavaScript, Scala и Groovy. Мы пытались сделать Kotlin простым для изучения, чтобы на него можно было перейти всего за неколько дней. Более детальное изучение языка займёт немного больше времени, но в общем это несложный язык.
Какие компании используют Kotlin?
Kotlin используют множество компаний. Из числа тех, что обьявили об использовании языка: Square, Pinterest, Basecamp и Corda.
Кто разрабатывает Kotlin?
Где можно узнать больше про язык?
Лучше всего начать прямо на этом сайте или на https://kotlinlang.org. На kotlinlang.org можно скачать компилятор или попробовать его онлайн Доступны справочник и туториалы.
Существуют ли книги про Kotlin?
Список книг есть здесь. Из самых популярных: Kotlin в Действии, написанная членами команды разработчиков Дмитрием Джемеровым и Светланой Исаковой, а также Kotlin for Android Developers.
Есть ли онлайн-курсы для изучения Kotlin?
Pluralsight Kotlin Course от Кевина Джонса, курс O’Reilly от Хади Харири и курс Udemy от Петра Соммерхоффа.
Также есть множество записей Kotlin talks, которые можно найти на YouTube и Vimeo.
Есть ли сообщество у Kotlin?
Да. У Kotlin очень отзывчивое сообщество на форумах Kotlin, StackOverflow и, наиболее активно, Kotlin Slack (примерно 7000 участников в мае 2017).
Проходят ли какие-то мероприятия по Kotlin?
Проходят ли конференции, посвящённые Kotlin?
Есть ли Kotlin в социальных сетях?
Наиболее активный аккаунт на Twitter. Также есть группа Google+.
Есть ли ещё какие-либо онлайн-ресурсы по Kotlin?
В сообществе Kotlin вы можете найти множество ресурсов, включая Дайджесты Kotlin, организуемые сообществом, новостную рассылку, подкаст и так далее.
Создаём своё первое приложение для Kotlin Multiplatform
Авторизуйтесь
Создаём своё первое приложение для Kotlin Multiplatform
ведущий мобильный разработчик компании Usetech
Основная идея KMP, как и других кросс-платформенных SDK — оптимизация разработки путем написания кода один раз и последующего его использования на разных платформах.
Согласно концепции JetBrains, Kotlin Multiplatform не является фреймворком. Это именно SDK, который позволяет создавать модули с общим кодом, подключаемые к нативным приложениям.
Написанный на Kotlin модуль компилируется в JVM байткод для Android и LLVM байткод для iOS.
3–4 декабря, Онлайн, Беcплатно
Этот модуль (Shared, Common) содержит переиспользуемую бизнес-логику. Платформенные модули iOS/Android, к которым подключен Shared/Common, либо используют написанную логику напрямую, либо имплементируют свою реализацию в зависимости от особенностей платформы.
Общая бизнес-логика может включать в себя:
Также в нее могут входить архитектурные компоненты приложения, напрямую не включающие UI, но с ним взаимодействующие:
Концепцию Kotlin Multiplatform можно сравнить с реализацией Xamarin Native. Однако, в KMP нет модулей или функционала, реализующих UI. Эта логическая нагрузка ложится на подключенные нативные проекты.
Рассмотрим подход на практике и попробуем написать наше первое приложение Kotlin Multiplatform.
Для начала нам потребуется установить и настроить инструменты:
Мы рассмотрим создание проекта с помощью Intelij IDEA.
Выбираем меню File → New → Create Project:
В появившемся окне выбираем тип проекта Kotlin → Mobile Android/iOS|Gradle
Далее стандартно задаем путь к JDK, имя и расположение проекта
После нажатия кнопки Finish проект сгенерируется и будет почти готов к работе.
Рассмотрим, что у нас получилось:
Мультиплатформенные проекты Kotlin обычно делятся на несколько модулей:
В них располагается наша бизнес-логика. Сам код базового примера мы разберем немного позже.
Код нативного Android приложения располагается в каталоге main, как если бы мы создавали проект по шаблону обычного Android.
iOS приложение создается автоматически и располагается в каталоге iOSApp:
Перед тем, как мы проверим работоспособность базового решения, необходимо сделать следующие финальные настройки:
В local.properties зададим путь к SDK Android:
Создадим конфигурацию для работы Android приложения:
Теперь вызовем команду gradle wrapper для сборки нашего модуля общей логики:
После сборки модуль для бизнес-логики для Android приложения доступен в app/build/libs:
Путь к библиотеке прописывается стандартно, в блоке dependencies файла build.gradle:
Теперь наш проект сконфигурирован для запуска Android приложения:
Осталось сделать настройки для запуска приложения iOS.
В файле build.gradle(:app) необходимо изменить настройку архитектура проекта, чтобы наше приложение поддерживало как реальные устройства, так и эмуляторы.
После выполнения сборки создастся фреймворк в app/build/bin/ios:
Intelij IDEA автоматически создает в gradle файле код для генерации, подключения и встраивания фреймворка в IOS проект:
При ручной настройке проекта (например, через Android Studio) этот код потребуется указать самостоятельно.
После синхронизации gradle iOS проект готов к запуску и проверке с помощью XCode.
Проверяем, что у нас получилось. Открываем проект iOS через iosApp.xcodeproj:
Проект имеет стандартную структуру, за исключением раздела app, где мы получаем доступ к коду наших модулей на Kotlin.
Фреймворк действительно подключен автоматически во всех соответствующих разделах проекта:
Запускаем проект на эмуляторе:
Теперь разберем код самого приложения на базовом примере.
Используемую в проекте бизнес-логику можно разделить на:
Переиспользуемая логика располагается в проекте commonMain в каталоге kotlin и разделяется на package. Декларации функций, классов и объектов, обязательных к переопределению, помечаются модификатором expect :
Вызов логики производится в нативном проекте:
Теперь попробуем по тем же принципам сделать что-то посложнее и поинтереснее. Например, небольшое приложение для получения и отображение списка новостей для iOS и Android.
Приложение будет иметь следующую структуру:
В общей части (Common) расположим бизнес-логику:
В модулях iOS/Android приложений оставим только UI компоненты для отображения списка и адаптеры. iOS часть будет написана на Swift, Android – на Kotlin. Здесь в плане работы не будет ничего нового.
Организуем архитектуру приложений по простому паттерну MVP. Презентер, обращающийся к бизнес-логике, также вынесем в Common часть. Также поступим и с протоколом для связи между презентером и экранами UI:
Начнем с бизнес-логики. Т.к весь функционал будет в модуле common, то мы будем использовать в качестве библиотек решения для Kotlin Multiplatform:
1. Ktor – библиотека для работы с сетью и сериализации.
В build.gradle (:app) пропишем следующие зависимости:
Также добавим поддержку плагина сериализации:
2. Kotlin Coroutines – для организации многопоточной работы.
При добавлении зависимости в iOS проект обратите внимание, что версия библиотеки должна быть обязательно native-mt и совместима с версией плагина Kotlin multiplatform.
В commonMain создадим Dispatchers.kt, где объявим переменные:
Реализация в androidMain создается легко. Для доступа к соответствующим потокам используем CoroutineDispatchers Main (UI поток) и Default (стандартный для Coroutine ):
С iOS труднее. Та версия Kotlin Native LLVM компилятора, которая используется в Kotlin Multiplatform, не поддерживает background очереди. Это давно известная проблема, которая к сожалению, еще не исправлена
Поэтому попробуем обходной маневр как временное решение проблемы.
Также нам понадобится свой scope для работы сетевого клиента:
Android
Применим это при реализации сетевого клиента на Ktor:
Вызывать бизнес-логику будем в презентере. Для полноценной работы с coroutines нам надо будет создать scope:
и добавить его в презентер. Вынесем в базовый класс:
Теперь создадим презентер NewsListPresenter для нашего модуля. В инициализатор передадим defaultDispatcher :
Обратите внимание! Из-за особенностей текущей работы Kotlin Native с многопоточностью в IOS работа с синглтонами может привести к крашу. Поэтому для корректной работы надо добавить аннотацию @ThreadLocal для используемого объекта:
Осталось подключить логику к нативным IOS и Android модулям и обработать ответ от Presenter:
Запускаем сборку common модуля gradle wrapper, чтобы сборки обновились. Проверяем работу приложений:
Готово. Вы великолепны.
Оба наши приложения работают и работают одинаково.
Информационные материалы, которые использовались:
Эффективная разработка серверных приложений на Kotlin: истории разработчиков
Read this post in other languages:
English, Français, 日本語, 한국어
Kotlin создавался как альтернатива Java, а значит, и область его применения в экосистеме JVM должна быть такой же, как у Java. Разработка серверных приложений не исключение.
Мы хотели бы узнать, как вы разрабатываете серверные приложения на Kotlin, и рассказать о вашем опыте другим.
В последние годы популярность Kotlin среди Android-разработчиков значительно выросла. В то же время язык все чаще используют и для серверной разработки. Компании, рассматривающие возможность перехода на Kotlin, часто спрашивают нас: «Кто еще использует Kotlin для серверной разработки?».
Выбирая технологию, разработчики хотят быть уверены в своем решении. Они ищут подтверждения тому, что другие компании успешно используют эту технологию для решения аналогичных задач.
В этом посте мы рассказываем о нескольких компаниях, которые выбрали Kotlin для серверной разработки. Надеемся, это поможет вам принять решение, если вы планируете использовать Kotlin для тех же целей.
Эта статья основана на материалах с онлайн-конференции Kotlin 1.4. Видео можно посмотреть на нашем YouTube-канале.
Почему Kotlin?
Мы регулярно общаемся с Kotlin-разработчиками и знаем довольно много компаний, больших и маленьких, в которых Kotlin используется для разработки на стороне сервера. Нам интересно узнавать, почему компании выбирают Kotlin и какие преимущества им это дает.
Пользователи, с которыми мы пообщались, больше всего оценили следующие особенности Kotlin:
Давайте посмотрим на примеры эффективного программирования на Kotlin.
JetBrains Space: масштабное переиспользование кода
Разумеется, в JetBrains мы много пишем на Kotlin, разрабатывая с его помощью не только инструменты, но и сервисы. JetBrains Space, платформа для командной работы, которую мы представили на KotlinConf 2019, построена на Kotlin и фреймворке Ktor. В Space все написано на Kotlin: серверные сервисы на JVM, Android и iOS-приложения, веб-приложение и плагин для IDE.
Благодаря Kotlin Multiplatform все эти приложения используют большой объем общего кода. Помимо общей модели данных в интерфейсе и на стороне сервера, в Space также используется общая модель представления, логика валидации и общие библиотеки. Однако UI-компоненты для каждой платформы свои, поэтому совместимость играет важную роль.
Kotlin Multiplatform
Чтобы у вас было представление о кросс-платформенной разработке на Kotlin, рассмотрим такой пример. Допустим, есть класс данных, который мы хотим использовать для нескольких платформ (JVM, JavaScript, iOS):
Класс String принадлежит стандартной библиотеке Kotlin, а LocalDate — нет. Мы можем указать, какой класс следует использовать в качестве LocalDate для каждой платформы. Для этого в общем модуле, который используется на разных платформах, мы объявляем класс LocalDate с помощью ключевого слова expect, предполагая, что разные модули обеспечат реальную реализацию. Ключевое слово actual указывает, какой тип следует использовать в платформенном коде:
Платформенно-независимый код можно написать только один раз в общем модуле проекта. Такой код затем будет использоваться разными модулями, предназначенными для конкретных платформ.
Кросс-платформенные возможности Kotlin особенно популярны среди мобильных разработчиков, которые используют общий код в Android и iOS-приложениях. На сайте Kotlin Multiplatform Mobile можно подробнее узнать о технологии и о том, как ею пользуются в разных компаниях.
Jira Software: микросервисы с Kotlin и Spring Boot
Еще один интересный пример — Jira. Atlassian использует Kotlin для разработки облачных продуктов Jira Software.
Раньше Jira была автономным монолитным Java-приложением, которое пользователи устанавливали на свои серверы. Однако с появлением облачной версии возникла необходимость разделить приложение на несколько сервисов для лучшего масшибирования.
Переезд в облако был поводом обновить стек технологий, и тут не обошлось без Kotlin. Разработчики с удовольствием перешли на новый язык и оценили повышение производительности. Теперь они используют Kotlin и Spring Boot для реализации микросервисов, которые улучшают работу важных UX-аспектов. Kotlin и Spring используются во всем семействе облачных продуктов Jira — в Jira Software, Jira Service Desk и Jira Core.
Adobe: неблокирующее программирование с корутинами Kotlin для высоконагруженных сервисов
Команда Adobe Experience Platform рассказала, почему они предпочитают Kotlin для серверной разработки.
По их словам, бекенд превратился из монолитных веб-контейнеров в распределенную сеть приложений, управляемых данными. Эти приложения должны обрабатывать большой объем данных, принимать и отправлять сообщения, и все с максимально низкой задержкой.
В своей статье команда Adobe перечисляет основные преимущества серверной разработки на Kotlin и называет поддержку асинхронного программирования наиболее ценной возможностью языка. Они пишут, что корутины легко освоить, а код получается понятным и простым в обслуживании.
«На Kotlin мы можем писать код в „прямом стиле“, который выглядит почти как блокирующий императивный код».
В приложениях много операций ввода-вывода, поскольку они зависят от внешних служб, например очередей, различных баз данных и других сервисов. Такие сетевые вызовы могут значительно снизить пропускную способность приложений. В этом случае корутины оказались привлекательным решением. Переход на асинхронное программирование увеличивает общую производительность и, следовательно, экономит аппаратные ресурсы.
Другие важные особенности Kotlin: классы данных, крепкая система типов, null-безопасность и поддержка функционального программирования. Гибкий синтаксис Kotlin позволяет с легкостью создавать собственные предметно-ориентированные языки. Этот аспект тоже оказался довольно полезен для инженеров Adobe. Почитайте, что они рассказывают о своем опыте.
Expedia Group: построение API GraphQL с помощью Kotlin
Expedia начала использовать Kotlin из-за гарантий null-безопасности, лаконичности языка и его полной совместимости с Java. Эта совместимость позволила постепенно интегрировать Kotlin в проекты без необходимости полностью переписывать приложения. Кроме того, Expedia удалось легко интегрировать Kotlin-приложения с Java-библиотеками и пользоваться существующей экосистемой JVM.
Корутины стали одной из главных причин популярности Kotlin. Они позволяют разработчикам писать полностью асинхронный код императивным способом — такой код легче читать и поддерживать. Разработчики Expedia активно пользуются Spring Framework, и, начиная с версии 5.2, в нем поддерживается совместимость между WebFlux и корутинами. Для инженеров Expedia это стало важным изменением, позволившим более эффективно использовать стек Spring и Reactive.
Недавно Expedia решила перейти на GraphQL и создать единый API-шлюз для работы всех клиентских приложений. Для этого они использовали библиотеку Kotlin для работы с рефлексией, чтобы создавать схемы GraphQL прямо из исходного кода. Полученный набор библиотек graphql-kotlin с открытым исходным кодом оказался весьма полезным. Теперь он размещен на GitHub.
На KotlinConf 2019 Дариуш Кук и Гийом Шайбель рассказали, как использовать возможности Spring Boot вместе с graphql-kotlin. Вот видео этого доклада:
Мы поделились примерами использования Kotlin для серверной разработки. В JetBrains, Adobe, Expedia и Atlassian на Kotlin написаны важные приложения, которые очень чувствительны к показателям производительности. Это говорит о том, что Kotlin — зрелый язык программирования, подходящий для разработки веб-приложений и сервисов.
Ваша команда Kotlin
The Drive to Develop
Пишем простой RESTful сервис на kotlin и spring boot
Введение
В преддверии выхода языка Kotlin из beta, хочется поделиться своим впечатлением от его использования.
Kotlin — это новый прекрасный язык от JetBrains (разработчиков IntelliJ Idea) для JVM, Android и браузера, который на первый взгляд выглядит как улучшенная java (или как упрощенная scala). Но это только на первый взгляд, язык не только впитал в себя многие интересные решения от других языков, но и представляет свои оригинальные:
— optional от swift, nullsafe в kotlin
— case классы из scala, data class в kotlin
— замена implicit методам из scala, extension функций
— делегаты
— null safely
— smart cast
— и многое другое, подробнее можно посмотреть на официальном сайте kotlinlang.
Для тех кто знаком с java или scala, будет интересно сравнение kotlin & java, kotlin & scala.
Авторы языка стремятся добиться двух задач:
— сделать скорость компиляции сравнимой с java
— язык должен быть достаточно выразительным, и при этом быть простым насколько возможно
Поэтому, стоит оговориться, что если вы на текущей момент счастливы со scala, с ее «сложностью» и временем компиляции, тогда вам скорее всего не нужен будет kotlin, для всех остальных читать дальше:
Для тех кто в танке впервые слышит о языке, ниже несколько примеров с официального сайта:
Из личного опыта применения kotlin особо хочется отметить несколько преимуществ языка:
— первое это конечно простоту взаимодействия с java. Все типы и коллекции из java преобразовываются в аналогичные из kotlin, и наоборот. Это особенно радует после всей той «анархии», которая творится в scala (да есть scala.collection.JavaConversions._ и scala.collection.JavaConverters._, но все же это не сравниться с полностью прозрачной конвертацией типов);
— также не может не радовать отличная поддержка от студии Intellij Idea, хоть язык и находится в Beta 4, уже на текущий момент плагин для студии позволяет комфортно работать;
— а для любителей implicit методов из scala, kotlin преподносит очень удобное решение в виде extension функций;
— помимо всего прочего разработчики языка ставят своей целью добиться времени компиляции сравнимой с java (привет scala), за что им только хочется пожать руки! Это особенно сильно радует после долгой работы в scala, когда редактирование одной строчки в достаточно небольшом файле компилируется с той же скоростью что и небольшой проект на java;
— inline функции — отличное нововведение. С их помощью можно, например, расширить текущие возможности языка, или в некоторых ситуациях добиться повышения производительности;
— удобные функции стандартной библиотеки.
— удобные лямбды, в отличие от той же java 8. Очень похожи на реализацию из scala.
Тем не менее у языка есть и свои недостатки:
— не хватает pattern matching из scala, но в некоторых ситуациях спасает smart cast и Destructuring Declarations, в других же приходится выкручиваться другими средствами. Отсутствие pattern matching в целом понятно, разработчики стараются добиться максимального приближения к времени компиляции java, но его наличие позволило бы существенно упростить написание некоторых приложений, так что довольствуемся тем что есть;
— try with resource пока реализован не очень удачно. Но тут авторы языка обещают в ближайшее время исправить ситуацию. А пока можно либо применять имеющееся решение, либо воспользоваться расширением языка:
— пока нет async и yield, но по словам авторов, после релиза 1.0 можно ждать их появление в самом ближайшем будущем.
Update В комментариях наибольший интерес вызывает сравнение со scala, и в частности преимущество kotlin:
1. Использование лямбд вместо анонимных классов (в scala правда тоже скоро это может появиться, но пока такой возможности нет).
Код в java:
В scala же уже не получится такое провернуть. А вот с kotlin проблем нет:
2. Есть тот же try-with-resources (да, можно сделать extension к языку, но из коробки этого нет, а значит придется тянуть решение из одного проекта в другой)
Это по крайней мере что первое приходит в голову
— отсутствие implicit. Сами по себе implicit конечно мощное решение, но без студии разобраться в чужом коде что к чем, почти нереально. Особенно если авторы «сильно увлеклись». А для добавления методов kotlin позволяет писать extension, которые на практике выглядят гораздо удобнее аналогичных решений в scala. Пример:
Scala:
— nullable типы вместо Option.
— удобные функции стандартной библиотеки
— ну и конечно же скорость компиляции. На практике действительно все очень быстро компилируется, особенно по сравнению со scala.
— результирующий jar меньше аналогичного в scala.
— и что немаловажно, JetBrains обещают полную обратную совместимость (привет еще раз scala c либами под 2.10, 2.11, 2.12 и т.д.)
Перейдем к примеру, в котором будет продемонстрировано небольшое RESTful приложение на spring boot, со сборкой через gradle.
Настройка студии
Настройка проекта
Создаем файл application.properties в папке src/main/resources, в котором укажем порт для запуска spring boot:
Создаем файл Application.kt в папке src/main/kotlin/test.kotlin.spring.project. В нем будут основные настройки для запуска spring boot:
Также необходимо будет создать файл с настройками методов rest сервиса. Будет несколько методов:
— метод будет выдавать AckResponse на введенные с запроса данные об имени и фамилии.
— метод, на вход поступает массив строк, из которого выбирается наименьшая строка по длине, которая потом разбивается по ‘_’, сортируется и собирается в строку уже с символом ‘,’ (демонстрирует возможности языка)
Создаем файл ServiceController.kt в папке src/main/kotlin/test.kotlin.spring.project.
Запуск и проверка работы
Запускаем приложение из Application.kt. В случае успешного запуска в логе будет что-то вроде:
После успешного запуска, пробуем открыть страницу Запрос с именем. Ответ должен выглядеть следующем образом:
И Запрос с именем и фамилией, тогда ответ будет немного другой:
Вызов для проверки сортировки данных: Сортировка. В результате должно быть:
Тот же вызов, но с пустым массивом: Вызов
При необходимости можно собрать весь проект в один runnable jar, командой: gradle build. В результате проект будет собран в один архив, содержащий все зависимости без распаковки. При таком подходе существенно повышается время сборки проекта, по сравнению с тем же assemble, когда проект собирается в один архив с распаковкой всех зависимостей.
Заключение
В заключении хочется отметить что kotlin оказался весьма удобным языком для работы над любым проектом, где используется java, в качестве ее замены. Экосистема языка пока не такая обширная как та же scala, но уже сейчас можно использовать его в том же big data, где есть java api. К тому же из kotlin очень просто взаимодействовать с java, так что все что есть в java, можно использовать и в kotlin. К тому же из студии есть возможность легкой конвертации java файлов в аналогичные на kotlin (правда нужно будет немного руками подправить файл после конвертации). JetBrains проделали замечательную работу на пути создания идеального языка на смену java и scala. И надеюсь в будущем тенденция в сторону использования kotlin будет только расти.