Знакомство с Kotlin и сборка jar при помощи maven.

Это пост заметка о том, как я познакомился с языком , какие использовал для этого ресурсы, инструменты, и как я собрал его в и запустил в консоли.

В общем-то я PHP программист, немного заком с . На днях решил посмотреть Kotlin. Это менее строго типизированный язык от до того, что он, по сути, статически типизированный. В этом его основное принципиальное отличие от Java, плюс Kotlin имеет свой приятный синтаксис. Kotlin может быть скомпилирован в JVM или JavaScript.

Приступим к знакомству. Для начала понадобится .
http://www.jetbrains.com/idea/
Инструкции по установке там же на сайте. Версия 13+.

Внутри IDE я создал простой проект Java. Далее надо установить плагин от JetBrains для IDE.
http://confluence.jetbrains.com/display/Kotlin/Getting+Started

Плагин добавляет автозаполнение и возможность создавать Kotlin проекты.
Так же добавляются инструменты для компиляции Kotlin.

Особенность Kotlin в том, что он полностью совместим с Java. Т.е. код, написанный на Kotlin можно вызывать в Java и наоборот. Следовательно, все инструменты и библиотеки, которые используются для работы с Java, применимы и для Kotlin.

Если проект в IDE был создан не Kotlin изначально, то после установки плагина можно включить поддержку Kotlin. После включения в проект будут доаблены jar библиотеки Kotlin в директорию /lib.

Я включил Kotlin и написал следующий код для теста в папке /src/testing

В котлин файле комментарии я оставил нарочно. Это примеры со страницы
http://confluence.jetbrains.com/display/Kotlin/Hello%2C+world%21

Для начала я выполнял в IDE файл котлина отдельно, чтобы убедиться, что плагин работает и код компилируется.

Потом я создал java класс

Тут видно, что я хочу принять аргумент и передать его напрямую в котлин. В котлине же я использовал пример с языками и добавил еще один свой, который зависит от аргумента — моего ник нейма. В Java можно вызывать методы и получать доступ к переменным из котлина путем вызова — ИмяпакетаPackage.имяметода().

Если правильно настроить в IDE выполнение проекта, то можно задать с каким аргументом вызывать программу. Но это очень не удобно, я хотел бы менять аргумент на лету, чтобы отловить ошибки, для тестироавния. Мне нужно было собрать jar для запуска из консоли.
В проекте не было maven изначально, и я его туда добавил.

Помогла мне в этом вот эта страница.
http://confluence.jetbrains.com/display/Kotlin/Kotlin+Build+Tools
Документация котлина достаточно информативна для изучения языка по ней.
Так же, по поводу построения при помощи maven и gradle, можно посмотреть следующие примеры.
https://github.com/JetBrains/kotlin-examples

Вот мой pom.xml файл

Тут используется настройка для kotlin-maven-plugin, где указывается, в какой директории искать файлы.
Так же, используется maven-jar-plugin. Тут очень важно правильно прописать < manifest >, иначе предстоит долго разбираться, почему jar не запускается с ошибкой «No Main Manifest Attribute«.
После билда в директории /target будет лежать jar проекта. В Idea есть отдельное окно maven projects, откуда удобно управлять построением.

Чтобы запустить jar обычно выполняется команда

В моем случае это не сработало, т.к. я не воспользовался плагином maven, который бы добавил jar библиотеку котлина в билд.
Следовательно я получаю ошибку

Отсюда понятно, что не находится Kotlin библиотека.
Правильный вызов с указанием jar зависимости такой

Теперь код работает верно. Как видно, я получил аргумент в java, вывел его, далее я передал его в kotlin, и на его основе отработала конструкция when (по смыслу похожа на switch case).

Для того, чтобы собрать jar с включением зависимых jar в билд, можно воспользоваться плагином maven — maven-dependency-plugin. Или onejar-maven-plugin к проекту one-jar.

Я решил использовать one-jar.
Вот что надобавить к pom.xml.

Далее пересобрать проект.

В директории /target появится файл имяпроекта.one-jar.jar. Его можно вызвать обычным методом.

На этом настройка проекта для меня закончена. Далее можно изучать Kotlin по приведенным выше ссылкам на документацию.
Лично мне язык очень понравился. Несомненно он займет свою нишу, так же, как и язык hack, который разрабатывает Facebook, как свою версию PHP.

Официальная страница Kotlin.
http://kotlin.jetbrains.org/
Редактор с исполнением в браузере с примерами
http://kotlin-demo.jetbrains.com/

Кстати, на Kotlin уже написан web framework.
http://karaframework.com/