Ответ
Kotlin — это язык, а не фреймворк. Он часто используется со следующими фреймворками и библиотеками:
-
Spring Boot (с Kotlin): Основной фреймворк для enterprise-разработки. Kotlin предлагает более лаконичный и безопасный синтаксис.
@RestController class UserController(val userService: UserService) { @GetMapping("/users/{id}") fun getUser(@PathVariable id: Long): ResponseEntity<User> = userService.findById(id)?.let { ResponseEntity.ok(it) } ?: ResponseEntity.notFound().build() } -
Ktor: Асинхронный фреймворк от JetBrains для создания серверов и клиентов.
fun main() { embeddedServer(Netty, port = 8080) { routing { get("/") { call.respondText("Hello Ktor!") } route("/api") { get("/users") { /* ... */ } } } }.start(wait = true) } -
Exposed: Легковесная ORM/DSL библиотека для Kotlin.
object Users : Table() { val id = long("id").autoIncrement() val name = varchar("name", 50) override val primaryKey = PrimaryKey(id) } // Запрос val users = Users.selectAll().map { it[Users.name] }
Преимущества Kotlin: null-безопасность, корутины для асинхронности, data-классы, extension-функции.
Ответ 18+ 🔞
А, ну это ж классика, блядь! Сейчас объясню, как есть, без этих ваших заумных слов. Слушай сюда, только не перепутай, а то потом будешь как Герасим — «Му-му» говорить, а нихуя не понимать.
Вот смотри, Котлин — это не какая-то там подставка под жопу, типа фреймворка. Это именно язык, сука! Как русский или английский, только для разговора с компьютером. А на нём уже можно болтать, используя разные «акценты» — это и есть фреймворки.
Первый акцент, овердохуищный по серьёзности — Spring Boot. Это как наш Лев Толстой, блядь, только для энтерпрайза. Все банки, госуслуги и прочая хуйня на нём сидят. На Котлине с ним писать — одно удовольствие, потому что код в два раза короче и не выстрелит тебе в ногу на ровном месте из-за какого-нибудь NullPointerException, который на Java был бы гарантирован.
@RestController
class UserController(val userService: UserService) {
@GetMapping("/users/{id}")
fun getUser(@PathVariable id: Long): ResponseEntity<User> =
userService.findById(id)?.let { ResponseEntity.ok(it) }
?: ResponseEntity.notFound().build()
}
Видишь? Всё чётко, без воды. Нашёл юзера — отдал. Не нашёл — послал нахуй с 404. Красота, ёпта!
Дальше, Ktor. Это уже не толстовский размах, а что-то более лёгкое и быстрое, от самих создателей Котлина. Представь, что Spring Boot — это поход в оперный театр в смокинге, а Ktor — это нажраться пива с друзьями у костра и петь песни под гитару. Быстро, асинхронно, без лишнего официоза.
fun main() {
embeddedServer(Netty, port = 8080) {
routing {
get("/") { call.respondText("Hello Ktor!") }
route("/api") {
get("/users") { /* ... */ }
}
}
}.start(wait = true)
}
Запустил — и сервер готов, блядь! Никаких этих томкатов, в рот меня чих-пых!
Ну и для работы с базой — Exposed. Это не монстр типа Hibernate, который тебе полпроекта сгенерирует, а ты потом месяц будешь разбираться, что он там наоткладывал. Exposed — это как взять и написать SQL, но красивыми котлиновыми словами.
object Users : Table() {
val id = long("id").autoIncrement()
val name = varchar("name", 50)
override val primaryKey = PrimaryKey(id)
}
// Запрос
val users = Users.selectAll().map { it[Users.name] }
Прям видно, что за таблица и что от неё нужно. Никакой магии, чистая логика.
А в чём, собственно, сила-то, брат? А сила, сука, в фичах!
- Null-безопасность. Компилятор тебе не даст запихнуть
nullтуда, где его быть не должно. Прощай,NullPointerException, ты пидарас шерстяной! - Корутины. Это для асинхронности. Вместо этого ада с колбэками, который мозг выносит, пишешь почти линейный код, а он сам всё красиво делает в фоне.
- Data-классы. Хочешь создать класс, который только данные хранит? Одна строка, и готово! Геттеры, сеттеры,
equals,hashCode— всё нате, получайте, не обляпайтесь. - Extension-функции. Это вообще магия. Можешь взять чужой класс, хоть
String, и прилепить к нему свою функцию, как будто она там всегда была. «Ёбаный насос!» — скажешь ты, когда попробуешь.
Вот и весь сказ. Котлин — это не фреймворк, это язык, на котором можно удобно и с меньшей болью в жопе использовать любые фреймворки. Пиздец, как удобно!