Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
infix fun Closeable.and(other:Closeable):Closeable = Closeable {
this@and.close()
other.close()
}
fun incode() {
val firstResource = create()
val secondResource = create()
(firstResource and secondResource).use {
// do something
}
}
Да и конвертр в json бут сконфигурировал мне сам, чем в этом смысле котлиновские классы хуже джавовских?
val jacksonMapper = ObjectMapper().registerKotlinModule()
.setSerializationInclusion(JsonInclude.Include.NON_ABSENT)
.enable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
fun main(args: Array<String>) {
println("Hello World!")
}
def main(args: Array[String]) {
println("Hello World!")
}
По мне так Kotlin это что-то между Java и Scala
ExecutorService executor = Executors.newFixedThreadPool(1);
executor.execute(System.out::println);
val executor = Executors.newFixedThreadPool(1)
executor.execute { println() }
object MyExtensions {
implicit def richInt(i: Int) = new {
def square = i * i
}
}
object App {
import MyExtensions._
def print(): Unit = {
val two = 2
println(s"The square of 2 is ${two.square}")
}
}
fun Int.richInt(): Int = this * this
object App {
fun print(): Unit {
val two = 2
println("The square of 2 is ${two.richInt()}")
}
}
implicit class RichInt(val x: Int) extends AnyVal {
def square: Int = x * x
}
object App {
def print(): Unit = {
val two = 2
println(s"The square of 2 is ${two.square}")
}
}
@inlinejava.util.Date и жить с этим наследством на протяжении всего жизненного цикла языка. Обратная совместимость позволяет поддерживать энтропию В случае, например со scala, (передаю так же привет всем ее библиотекам и их множественным версиям), смена версии не является большой проблемой. У меня были крупные проекты, внутри которых я проводил миграцию 2.9 -> 2.10, 2.10 -> 2.11 и проблем это не совершенно не вызвало.
Запугивания миграцией, я зачастую слышу от людей которые эту самую миграцию не проводили.
def main(args: Array[String]) {
println("Hello World!")
}
(defun main (args)
(print "Hello World!")
)
null-safety, насколько я знаю, сделан приворачиванием сотен метаданных к имеющимся либам.
дженерики с use-site variance еще в яве более чем отстойны, стоило ли пилить новый язык, чтоб наступить на те же грабли?
Некоторые траблы явы просто не решаются без введения своей стандартной библиотеки, как с скале или цейлоне.
— Долго тянут с релизом. Язык был анонсирован несколько лет назад, и вау эффект уже изрядно поутих. Самое время его было выпустить до Java 8. Сейчас внимание программеров переключилось на джавовские лямбды и стримы, и мощь котлина в их глазах уже поугасла.
— Недостаточная огласка в СМИ. Взять хотя бы Одерски, который пиарит свою скалу везде, где только возможно. Несколько статей на хабре не решат проблемы.
— Нет своего стека технологий. Красивый язык оценят, но без сопутствующих технологий им пользоваться не будут. Вот Groovy некрасивый язык, а им пользуются (про Scala толерантно помалкиваю). Нужен стек типа typesafe (или, упаси господи, JEE) и фреймворки типа play. Кроме того, на первое время нужно определиться с нишей решаемых задач, напр. scala — параллельное программирование, kotlin — андроид, клиентские веб приложения (прощай, GWT), микросервисы. На одной экосистеме Java далеко не уедешь.
— Success stories. Типа «Twitter признал свою ошибку со scala и переписал свой стек на kotlin-е» :)
Да, код короче, элегантнее, но IDE позволяет быстро писать и на Java.
Пишем простой RESTful сервис на kotlin и spring boot