клиент серверное приложение 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

клиент серверное приложение kotlin

ведущий мобильный разработчик компании Usetech

Основная идея KMP, как и других кросс-платформенных SDK — оптимизация разработки путем написания кода один раз и последующего его использования на разных платформах.

Согласно концепции JetBrains, Kotlin Multiplatform не является фреймворком. Это именно SDK, который позволяет создавать модули с общим кодом, подключаемые к нативным приложениям.

клиент серверное приложение kotlin

Написанный на 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

В появившемся окне выбираем тип проекта Kotlin → Mobile Android/iOS|Gradle

Далее стандартно задаем путь к JDK, имя и расположение проекта

клиент серверное приложение kotlin

После нажатия кнопки Finish проект сгенерируется и будет почти готов к работе.

Рассмотрим, что у нас получилось:

клиент серверное приложение kotlin

Мультиплатформенные проекты Kotlin обычно делятся на несколько модулей:

В них располагается наша бизнес-логика. Сам код базового примера мы разберем немного позже.

клиент серверное приложение kotlin

Код нативного Android приложения располагается в каталоге main, как если бы мы создавали проект по шаблону обычного Android.

iOS приложение создается автоматически и располагается в каталоге iOSApp:

клиент серверное приложение kotlin

Перед тем, как мы проверим работоспособность базового решения, необходимо сделать следующие финальные настройки:

В local.properties зададим путь к SDK Android:

клиент серверное приложение kotlin

Создадим конфигурацию для работы Android приложения:

клиент серверное приложение kotlin

Теперь вызовем команду gradle wrapper для сборки нашего модуля общей логики:

клиент серверное приложение kotlin

После сборки модуль для бизнес-логики для Android приложения доступен в app/build/libs:

клиент серверное приложение kotlin

Путь к библиотеке прописывается стандартно, в блоке dependencies файла build.gradle:

клиент серверное приложение kotlin

Теперь наш проект сконфигурирован для запуска Android приложения:
клиент серверное приложение kotlin

Осталось сделать настройки для запуска приложения iOS.

В файле build.gradle(:app) необходимо изменить настройку архитектура проекта, чтобы наше приложение поддерживало как реальные устройства, так и эмуляторы.

клиент серверное приложение kotlin

клиент серверное приложение kotlin

После выполнения сборки создастся фреймворк в app/build/bin/ios:

клиент серверное приложение kotlin

Intelij IDEA автоматически создает в gradle файле код для генерации, подключения и встраивания фреймворка в IOS проект:

клиент серверное приложение kotlin

При ручной настройке проекта (например, через Android Studio) этот код потребуется указать самостоятельно.

После синхронизации gradle iOS проект готов к запуску и проверке с помощью XCode.

Проверяем, что у нас получилось. Открываем проект iOS через iosApp.xcodeproj:

клиент серверное приложение kotlin

Проект имеет стандартную структуру, за исключением раздела app, где мы получаем доступ к коду наших модулей на Kotlin.

Фреймворк действительно подключен автоматически во всех соответствующих разделах проекта:

клиент серверное приложение kotlin

Запускаем проект на эмуляторе:

клиент серверное приложение kotlin

Теперь разберем код самого приложения на базовом примере.

Используемую в проекте бизнес-логику можно разделить на:

клиент серверное приложение kotlin

Переиспользуемая логика располагается в проекте commonMain в каталоге kotlin и разделяется на package. Декларации функций, классов и объектов, обязательных к переопределению, помечаются модификатором expect :

клиент серверное приложение kotlin

клиент серверное приложение kotlin

Вызов логики производится в нативном проекте:

клиент серверное приложение kotlin

Теперь попробуем по тем же принципам сделать что-то посложнее и поинтереснее. Например, небольшое приложение для получения и отображение списка новостей для iOS и Android.

Приложение будет иметь следующую структуру:

клиент серверное приложение kotlin

В общей части (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

клиент серверное приложение kotlin

Готово. Вы великолепны.

Оба наши приложения работают и работают одинаково.

Информационные материалы, которые использовались:

Источник

Эффективная разработка серверных приложений на Kotlin: истории разработчиков

Read this post in other languages:
English, Français, 日本語, 한국어

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

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

клиент серверное приложение 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

Введение

В преддверии выхода языка 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 будет только расти.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *