Все будет Kotlin
Ахой, ну вот пришло и мое время хайпить по поводу Kotlin. Регулярные подписчики и читатели блога знают, что я Java-пацан, ходивший в мир Groovy, который мне безумно нравится. Я писал о его применении для работы с SSH, и в UI тестировании.
Но, увы, многие игнорируют Groovy и отдают предпочтение старой кляче Java с аргументами: - Groovy тормозит (хотя в тестах это пофиг) - А где мы возьмем людей? (хотя его можно выучить за неделю).
Теперь настал мой черед сходить в мир Kotlin.
Вокруг языка ходит много хайпа, особенно после того, как Google официально начал поддерживать Kotlin, о чем было объявлено на Google IO 2017.
Скажу честно, я уже подустал от Java. Именно поэтому в какой-то момент меня понесло в Python. Но там мне не особо понравилось, поэтому я все еще пишу на Java 8, иногда даже с лямбдами балуюсь =).
На Kotlin я смотрел еще до релиза 1.0 и тогда многое для меня в нем было не понятным. Сейчас же решил основательно в нем разобраться, чтобы понять, можно ли на нем делать что-то внятное или нафиг-нафиг и Java 8 + Lombok - наше все.
Окончательным толчком послужил выход Gradle 4.0, в котором стали нормально поддерживать Kotlin Gradle DSL.
Я, значит, как реальные Early adopters, сел и начал смотреть, что да как. Спустя пару часов смог сделать проект на Gradle 4, сконфигурированный с помощью Kotlin Gradle DSL + Selenide + Allure 2. Правда, я бы не справился, если бы не сходил в Kotlin Slack чатик и не спросил у пацанвы, как там этот Gradle DSL писать. Документации пока что нет.
Но разобраться с языком, не пописав на нем что-то внятное, практически нереально. Именно поэтому я начал писать Kirk. Пока что это все находится на начальном этапе, но мне нравится то, что с помощью Kotlin можно создавать очень классный DSL c минимальными затратами по времени.
@Test fun testCanDeactivateTask() {
Browser.drive {
to(::TodoPage) {
addTasks("A", "B", "C")
deactivateTask("A")
counter.should(have.text("2"))
goToCompletedTab()
taskList.should(have.exactText("A"))
}
}
}
В целом я пока очень доволен языком и его возможностями. Реально писать намного приятнее и удобнее, чем на Java, особенно лямбды:
list.stream()
.filter(e -> e.isDisplayed())
.collect(toList())
и в Котлине:
list.filter{it.isDisplayed()}
Погружаюсь в мир Котлин и мне нравится. Теперь заметок о применении Котлин вместо Java станет больше =)
BTW:
Больше о Котлин + Gradle можно найти в видосиках с недавнего Gradle Summit 2017. Ну и, конечно же, самые отборные материалы я размещаю в группе в Facebook. Присоединяйтесь!