Comments 25
Что меня больше всего настораживает во всех этих катапульт-фреймфорках — это то, что потом любое изменение "не по плану" всегда оборачивается жуткой головной болью. И в что мы экономим? Лишних полчаса, чтобы собрать проект из явных зависимостей?
Расплата же конечно, в его «тяжеловестности».
Spring Boot — это самая настоящая катапульта. Она позволяет быстро написать приложение "Хелло ворлд" с кучей подключенных технологий, абсолютно не задумываясь о том, как это все работает. Реализация какой-то специфической задачи, не входящей в стандартный стек решений, уже не так тривиальна: требуется вдумчиво читать документацию, зазубривать конвеншны и @Заклинания, смотреть в кинотеатре сагу от Евгения Борисова и сильно уметь копаться в коде спринга. И все это в том случае, если программа более-менее написана грамотно.
А экономим мы усилия по написанию всякого сервисного кода и сдруживанию разных зависимостей, которые не всегда можно быстро сдружить.
Зачастую это кажущаяся экономия. Катапульты пытаются охватить сразу весь типовой стек решений (config + IoC + rest + database + integration + etc...). Однако интегрировать новую зависимость во фреймворк бывает на порядок сложнее, нежели в кастомном коде. А зачастую головную боль создают ограничения фреймворка, которые приходится грязно обходить. В особенности, когда не знаешь как оно внутри там вертится...
Из всех @Заклинаний, можно знать только @SpringBootApplication, @Configuration и Bean. А дальше можно писать свои «велосипеды» как хочешь.
Не, ну можно выучить все @Заклинания, но это если нравиться «магия», когда произнеся «заклинание» делаешь пол проекта :-)
Пользуюсь чистым Vert.x, никаких проблем не испытываю.
Кому-то нравится писать hello world так:
public class Server extends AbstractVerticle {
public void start() {
vertx.createHttpServer().requestHandler(req -> {
req.response()
.putHeader("content-type", "text/plain")
.end("Hello from Vert.x!");
}).listen(8080);
}
а кому-то — так:
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "hello from quarkus";
}
}
Понятно, что Springовый подход к разработке сильно проник в головы.
Непонятно, зачем тянуть 100500 тяжеленных зависимостей, чтобы отображать в браузере текст?
Quarkus — сверхзвуковая субатомная Java. Краткий обзор фреймворка