Vertx: Minhas impressões
Aproveitei a noite fria de sábado (tá 5°C em Porto Alegre) para brincar com o lib VertX. Temos alguns microserviços na empresa usando essa lib, e vários brenchmarks apontam que ele é muito rápido.
Para quem não conhece: VertX é uma lib para criar aplicações reativas, ou como dizem alguns colegas, "ele faz aquela coisa lá que tem no node" :-)
Foi criado em 2011, é descrito no site como event driven, non blocking, poliglota (JVM, JavaScript) e "divertido".
"" Os exemplos que eu criei estão disponíveis no github. ""
Minhas Impressões:
import io.vertx.core.AbstractVerticle;
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);
}
}
Os exemplos que criei ficaram entre 20-60 linhas.
-
Possui vários exemplos no github deles. O blog também aponta para exemplos interessantes
-
Dependendo do codificador, podemos ter o callback hell: veja esse exemplo com mongo:
mongoClient.save("products", product1, id -> {
System.out.println("Inserted id: " + id.result());
mongoClient.find("products", new JsonObject().put("itemId", "12345"), res -> {
System.out.println("Name is " + res.result().get(0).getString("name"));
mongoClient.remove("products", new JsonObject().put("itemId", "12345"), rs -> {
if (rs.succeeded()) {
System.out.println("Product removed ");
}
});
});
});
-
Entre o Http Client "Simple" do VertX e o HttpBuilder, eu sigo com o segundo.
-
Achei o Http Server muito complexo comparado com o Spark Java e Ratpack.
Conclusão
Tirando a questão performance que é muito forte, eu ainda criaria microserviços usando outras opções (ex: Groovy + Spring, Node).
Não me entenda mal, eu curto sistemas reativos, falo sobre event sourcing… Mas no caso do Node toda a linguagem e ecosistema estão preparados para isso. E já sairam do callback, foram para Promises e estão no async/await, tornando sintaxe e sistemas reativos por natureza.
Programar reativo em java com callback parece quase como "programador java programando funcional em scala", onde o resultado quase sempre não é programação funcional. É preciso uma mudança de paradigma (funcional x OO), e não só sintaxe.
Enfim, cada caso é um caso, cada problema exige uma solução diferente.
"" E você leitor? Qual sua opinião sobre o VertX? ""