{"id":2850,"date":"2019-04-08T00:18:42","date_gmt":"2019-04-08T03:18:42","guid":{"rendered":"https:\/\/www.itexto.com.br\/devkico\/?p=2850"},"modified":"2019-04-16T16:50:49","modified_gmt":"2019-04-16T19:50:49","slug":"micronaut-primeiras-impressoes","status":"publish","type":"post","link":"https:\/\/devkico.itexto.com.br\/?p=2850","title":{"rendered":"Micronaut &#8211; primeiras impress\u00f5es"},"content":{"rendered":"\n<p>J\u00e1 ouviu falar deste framework? Ele foi criado por Graeme Rocher, o mesmo sujeito que criou o Grails e promete resolver diversos dos problemas que temos tanto no Grails quanto no Spring. Mas ele substitui estes frameworks? No caso do Grails, n\u00e3o, j\u00e1 quando o assunto \u00e9 Spring, talvez. Neste post vou colocar aqui minhas primeiras impress\u00f5es.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">O que \u00e9 o Micronaut<\/h2>\n\n\n\n<p>Pelo primeiro par\u00e1grafo voc\u00ea j\u00e1 sabe: \u00e9 mais um framework voltado para o desenvolvimento web, mas n\u00e3o qualquer desenvolvimento web, e sim APIs, mais especificamente micro servi\u00e7os. Ent\u00e3o ao ler sua <a href=\"https:\/\/micronaut.io\/documentation.html\">documenta\u00e7\u00e3o<\/a> voc\u00ea ver\u00e1 diversos termos usado para este tipo de aplica\u00e7\u00e3o:  <em>cloud native<\/em>, <em>service configuration, serverless functions <\/em>e todas aquelas palavrinhas que j\u00e1 estamos pra l\u00e1 de acostumados a ouvir.<\/p>\n\n\n\n<p>At\u00e9 a\u00ed n\u00e3o h\u00e1 grandes novidades: tanto <a href=\"https:\/\/spring.io\">Spring<\/a> quanto <a href=\"https:\/\/grails.org\">Grails<\/a> j\u00e1 nos oferecem suporte a todas estas tecnologias  de forma direta ou indireta. Estou desenvolvendo alguns pequenos projetos com ele (um inclusive de grande import\u00e2ncia) algo que posso afirmar com seguran\u00e7a \u00e9: <strong>n\u00e3o h\u00e1 um significativo salto de produtividade para o desenvolvedor tal como experimentamos no primeiro contato com Grails ou Spring Boot<\/strong>.<\/p>\n\n\n\n<p>Ent\u00e3o o que motivou a equipe de Graeme Rocher a criar este novo framework? Quais os problemas que foram detectados no Spring e Grails que ele tenta resolver? \u00c9 a\u00ed que a coisa fica interessante: do ponto de vista estritamente ligado \u00e0 autoria de c\u00f3digo voc\u00ea vai trabalhar com o mesmo JPA que j\u00e1 conhece, a escrita dos controladores \u00e9 essencialmente igual, \u00e9 poss\u00edvel inclusive usar quase <a href=\"https:\/\/micronaut-projects.github.io\/micronaut-spring\/latest\/guide\/index.html\">todas as anota\u00e7\u00f5es do Spring e implementar suas interfaces<\/a> no Micronaut. Em rela\u00e7\u00e3o \u00e0 linguagem de programa\u00e7\u00e3o, tamb\u00e9m n\u00e3o h\u00e1 grandes ganhos: voc\u00ea pode usar Groovy, Java ou Kotlin, ent\u00e3o sem choques aqui tamb\u00e9m. <strong>O que muda \u00e9 a infraestrutura<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Que infraestrutura?<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"1300\" height=\"894\" src=\"https:\/\/i1.wp.com\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2019\/04\/12531655-the-pipes-and-mechanical-systems-of-an-aircraft-jet-engine-would-make-a-great-steam-punk-background-.jpg?fit=800%2C550&amp;ssl=1\" alt=\"\" class=\"wp-image-2852\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/12531655-the-pipes-and-mechanical-systems-of-an-aircraft-jet-engine-would-make-a-great-steam-punk-background-.jpg 1300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/12531655-the-pipes-and-mechanical-systems-of-an-aircraft-jet-engine-would-make-a-great-steam-punk-background--300x206.jpg 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/12531655-the-pipes-and-mechanical-systems-of-an-aircraft-jet-engine-would-make-a-great-steam-punk-background--768x528.jpg 768w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/12531655-the-pipes-and-mechanical-systems-of-an-aircraft-jet-engine-would-make-a-great-steam-punk-background--1024x704.jpg 1024w\" sizes=\"(max-width: 1300px) 100vw, 1300px\" \/><\/figure><\/div>\n\n\n\n<p>\u00c9 aqui que a coisa fica realmente interessante: temos agora uma infraestrutura <strong>realmente nova<\/strong>. E isto se aplica em alguns pontos que, confesso, mudaram minha maneira de pensar como frameworks s\u00e3o escritos de uma forma bastante radical.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">A reflex\u00e3o mostra seu pre\u00e7o &#8211; boot instant\u00e2neo e baix\u00edssimo consumo de mem\u00f3ria<\/h4>\n\n\n\n<p>A reflex\u00e3o tem seu pre\u00e7o, no entanto a primeira vez que realmente o experimentei <strong>de verdade<\/strong> este custo foi escrevendo projetos com Micronaut. <\/p>\n\n\n\n<p>Explico: praticamente todo framework Java usa anota\u00e7\u00f5es para identificar seus componentes: a anota\u00e7\u00e3o <em>@Controller<\/em>, por exemplo, identifica uma classe como um bean que ir\u00e1 disponibilizar endpoints HTTP. Quando sua aplica\u00e7\u00e3o inicia o framework l\u00ea o classpath da aplica\u00e7\u00e3o, identifica todas as classes anotadas e, na sequ\u00eancia, aplica as a\u00e7\u00f5es necess\u00e1rias para que desempenhem o papel definido por estas anota\u00e7\u00f5es.<\/p>\n\n\n\n<p>O Micronaut segue o caminho oposto: ainda temos as anota\u00e7\u00f5es, tal como disse acima, voc\u00ea ir\u00e1 codificar suas classes de uma forma bastante similar \u00e0 que j\u00e1 est\u00e1 acostumado no Spring (\u00e9 quase igual). A diferen\u00e7a \u00e9 que usando um recurso pouco conhecido pela maior parte dos programadores (<a href=\"https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/javax\/annotation\/processing\/Processor.html\">annotation procesors<\/a> do Java e processamento de bytecode usando a biblioteca <a href=\"https:\/\/asm.ow2.io\/\">ASM<\/a>) temos <a href=\"https:\/\/docs.micronaut.io\/latest\/guide\/index.html#ioc\">um novo container de inje\u00e7\u00e3o de depend\u00eancias e invers\u00e3o de controle<\/a>.<\/p>\n\n\n\n<p>Um container que n\u00e3o descobre quem s\u00e3o os nossos beans em tempo de execu\u00e7\u00e3o, mas sim <strong>em tempo de compila\u00e7\u00e3o.<\/strong> E isto faz toda a diferen\u00e7a. Qual? Basicamente uma aplica\u00e7\u00e3o que use os recursos de seguran\u00e7a providos pelo Micronaut, muito similares aos que temos no Spring Security e JPA \u00e9 iniciada quase que instantaneamente (no m\u00e1ximo 2 segundos em meus testes).<\/p>\n\n\n\n<p>(se voc\u00ea tem aplica\u00e7\u00f5es feitas em Grails que usam o Spring Security sabe muito bem do que estou falando: temos uma inicializa\u00e7\u00e3o leeeeeenta)<\/p>\n\n\n\n<p>O modo como lidamos com classes proxy tamb\u00e9m \u00e9 diferenciado. Neste container de IoC tamb\u00e9m podemos trabalhar com <a href=\"https:\/\/docs.micronaut.io\/latest\/guide\/index.html#aop\">AOP<\/a>, tal como no caso do Spring, mas com advices e interceptadores tamb\u00e9m definidos em tempo de compila\u00e7\u00e3o.<\/p>\n\n\n\n<p>E n\u00e3o temos apenas aqui a inicializa\u00e7\u00e3o instant\u00e2nea do projeto: outro problema tamb\u00e9m \u00e9 resolvido. O <strong>consumo de mem\u00f3ria \u00e9 significativamente menor<\/strong>. Algo que j\u00e1 havia experimentado com Node.js estou vivenciando agora: tenho APIs executando agora que consomem menos de 100 Mb de mem\u00f3ria. Voc\u00ea consegue imaginar isto com Java? Eu tamb\u00e9m n\u00e3o acreditava, mas to vendo isto aqui na minha frente agora!<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Servlets? Finalmente uma alternativa<\/h4>\n\n\n\n<p>Esta \u00e9 outra mudan\u00e7a surpreendente. <strong>Todos<\/strong> os frameworks que conhe\u00e7o para o desenvolvimento web usam a mesma base: <a href=\"https:\/\/docs.oracle.com\/javaee\/7\/api\/javax\/servlet\/Servlet.html\">servlets<\/a>. E aqui pela primeira vez na JVM vejo uma alternativa emergir: n\u00e3o mais uma solu\u00e7\u00e3o baseada no Java Enterprise Edition padr\u00e3o, mas sim o provimento de um servidor de aplica\u00e7\u00e3o pr\u00f3prio, embutido no projeto.<\/p>\n\n\n\n<p>Este novo servidor web \u00e9 o primeiro que vejo na plataforma Java que \u00e9 independente do Java EE tradicional, baseado em servlets. Se baseia em uma outra tecnologia bastante antiga e infelizmente pouco conhecida pelos desenvolvedores hoje: <a href=\"https:\/\/netty.io\/\">Netty<\/a>.<\/p>\n\n\n\n<p>Um framework usado para a constru\u00e7\u00e3o de aplica\u00e7\u00f5es de rede ass\u00edncronos, de alt\u00edssima disponibilidade e desempenho que tem como resultado um novo servidor HTTP diferente daquele com o qual estamos acostumados. Um servidor focado <strong>n\u00e3o no padr\u00e3o MVC tradicional no qual pode haver o retorno de p\u00e1ginas HTML, mas sim uma solu\u00e7\u00e3o projetada desde o primeiro momento tendo como foco a troca de mensagens (JSON) entre micro-servi\u00e7os.<\/strong><\/p>\n\n\n\n<p>Em um primeiro momento voc\u00ea pode pensar nesta mudan\u00e7a como um mero ganho de desempenho. Eu j\u00e1 a vejo como um precedente important\u00edssimo, que abrir\u00e1 as portas para um universo de inova\u00e7\u00f5es no Java simplesmente maravilhoso.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Como \u00e9 programar usando o Micronaut<\/h2>\n\n\n\n<p>Se voc\u00ea quer novidade \u00e9 bastante decepcionante por que \u00e9 basicamente como estamos acostumados a escrever APIs no Spring. N\u00e3o h\u00e1 novidades: at\u00e9 as anota\u00e7\u00f5es s\u00e3o essencialmente as mesmas, mudando apenas o pacote para que possamos tirar proveito da gera\u00e7\u00e3o de c\u00f3digo em tempo de compila\u00e7\u00e3o. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2010\/11\/spring_logo.gif\" alt=\"\" class=\"wp-image-860\" width=\"284\" height=\"189\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/11\/spring_logo.gif 432w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/11\/spring_logo-300x200.gif 300w\" sizes=\"(max-width: 284px) 100vw, 284px\" \/><figcaption>se voc\u00ea j\u00e1 sabe Spring, a curva de aprendizado \u00e9 m\u00ednima<\/figcaption><\/figure><\/div>\n\n\n\n<p>Como disse antes, n\u00e3o h\u00e1 um salto de produtividade aqui: talvez voc\u00ea consiga um pouquinho mais de produtividade se gosta de Groovy ou Kotlin, que tamb\u00e9m podem ser usadas no framework, mas j\u00e1 aviso, n\u00e3o ter\u00e1 uma mudan\u00e7a significativa.<\/p>\n\n\n\n<p>Algo muito bacana no Micronaut \u00e9 que ele nos perite uma curva de aprendizado mais amig\u00e1vel. Por padr\u00e3o \u00e9 usado o Gradle como mecanismo de build, mas se voc\u00ea quiser trabalhar com Maven, \u00e9 poss\u00edvel tamb\u00e9m. Recomendo ir pro Maven neste caso? N\u00e3o, por que a documenta\u00e7\u00e3o hoje fala mais sobre o Gradle e quase n\u00e3o menciona Maven.<\/p>\n\n\n\n<p>No uso da IDE a ado\u00e7\u00e3o do Gradle faz diferen\u00e7a: se voc\u00ea tentar iniciar o projeto a partir de uma classe isolada, por exemplo, ter\u00e1 problemas neste primeiro momento. Na pr\u00e1tica sempre dever\u00e1 tanto executar a aplica\u00e7\u00e3o quanto seus testes a partir do Gradle, o que pode ser um pouco chato no in\u00edcio mas com o tempo voc\u00ea se acostuma.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Al\u00e9m da infraestrutura, o que h\u00e1 de interessante<\/h2>\n\n\n\n<p>N\u00e3o se engane: temos aqui uma ferramenta voltada para o desenvolvimento de micro servi\u00e7os, o que fica claro nos recursos que o framework nos fornece de cara.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Escrita de testes muito mais simples<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2019\/04\/crash-test-dummy.jpg\" alt=\"\" class=\"wp-image-2856\" width=\"429\" height=\"274\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/crash-test-dummy.jpg 744w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/crash-test-dummy-300x192.jpg 300w\" sizes=\"(max-width: 429px) 100vw, 429px\" \/><\/figure><\/div>\n\n\n\n<p>Dentre os recursos, aquele que mais gostei foi o fato de nos fornecer um servidor HTTP embarcado, mas mais do que isto, tamb\u00e9m um cliente HTTP. Pra escrita de testes \u00e9 maravilhoso, por que nos permite instanciar o servidor e realizar nossos testes escrevendo requisi\u00e7\u00f5es HTTP e n\u00e3o apenas chamada a m\u00e9todos. Isto faz toda a diferen\u00e7a se voc\u00ea, como eu, prefere escrever testes que verificam comportamentos da nossa IDE. A escrita deste tipo de testes tanto no Spring quanto no Grails pode ser bastante trabalhosa: aqui \u00e9 trivial.<\/p>\n\n\n\n<p>Voc\u00ea pode escrever seus testes inclusive usando aquilo que j\u00e1 conhece: jUnit ou Spock. Existe inclusive <a href=\"https:\/\/micronaut-projects.github.io\/micronaut-test\/latest\/guide\/index.html\">um m\u00f3dulo<\/a> que torna a configura\u00e7\u00e3o destes testes algo simples.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Um framework de seguran\u00e7a pronto e f\u00e1cil de usar<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"225\" height=\"225\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2019\/04\/security.png\" alt=\"\" class=\"wp-image-2857\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/security.png 225w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/security-150x150.png 150w\" sizes=\"(max-width: 225px) 100vw, 225px\" \/><\/figure><\/div>\n\n\n\n<p>No Grails e Spring temos o Spring Security, e no caso do Micronaut tamb\u00e9m temos uma solu\u00e7\u00e3o para esta quest\u00e3o, s\u00f3 que n\u00e3o \u00e9 um m\u00f3dulo a parte, mas sim parte do pr\u00f3prio framework.<\/p>\n\n\n\n<p>Se voc\u00ea j\u00e1 conhece o Spring Framework ir\u00e1 se sentir em casa aqui: <a href=\"https:\/\/docs.micronaut.io\/latest\/guide\/index.html#security\">a solu\u00e7\u00e3o proposta pelo Micronaut<\/a> \u00e9 quase uma c\u00f3pia, s\u00f3 que mais simples e j\u00e1 vindo com os recursos que s\u00e3o essenciais na escrita de micro-servi\u00e7os nesta \u00e1rea:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>JWT<\/li><li>Autentica\u00e7\u00e3o por sess\u00e3o.<\/li><li>LDAP.<\/li><li>Autentica\u00e7\u00e3o b\u00e1sica (jamais recomendo, mas para legados \u00e9 interessante)<\/li><li>Um mecanismo que nos permite flexibilidade na constru\u00e7\u00e3o de nossos pr\u00f3prios provedores de autentica\u00e7\u00e3o.<\/li><li>Endpoints de autentica\u00e7\u00e3o prontos pra serem usados.<\/li><\/ul>\n\n\n\n<p>Prover isto j\u00e1 pronto para o desenvolvedor pode e ir\u00e1 reduzir significativamente os custos na implementa\u00e7\u00e3o destes requisitos de restri\u00e7\u00e3o de acesso. Inclusive, novamente, as mesmas anota\u00e7\u00f5es que temos no Spring Security vemos aqui, como a @Secured, por exemplo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Multi ten\u00e2ncia<\/h3>\n\n\n\n<p>O framework tamb\u00e9m oferece suporte a multi ten\u00e2ncia pronta para ser usada. E com um detalhe interessante: nos permite usar o GORM como solu\u00e7\u00e3o. Sim, o mesmo framework de persist\u00eancia que usamos no Grails e que \u00e9 uma das raz\u00f5es pelas quais o adotamos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoramento<\/h3>\n\n\n\n<p>Se vamos construir micro-servi\u00e7os, temos aqui a necessidade de monitorarmos a qualidade do servi\u00e7o. Tal como o Spring Boot nos fornece o Actuator (um m\u00f3dulo a parte), Micronaut nos oferece o b\u00e1sico para que possamos monitorar sua qualidade.<\/p>\n\n\n\n<p>\u00c9 uma vers\u00e3o bem mais simples do Actuator, mas na minha opini\u00e3o bem mais funcional. Nos permite, por exemplo, criar rapidamente (usando apenas configura\u00e7\u00e3o) endpoints que nos permitem verificar as configura\u00e7\u00f5es do servidor, checagem de vers\u00e3o, beans carregados, recursos computacionais, etc. Muito \u00fatil.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">E a ado\u00e7\u00e3o? E pra onde vamos? E o Grails?<\/h2>\n\n\n\n<p>Faz pouco mais de um m\u00eas que a primeira vers\u00e3o final do Micronaut saiu. Naturalmente, este ainda n\u00e3o \u00e9 uma solu\u00e7\u00e3o amplamente adotada pela comunidade, mas j\u00e1 \u00e9 uma solu\u00e7\u00e3o que est\u00e1 chacoalhando a comunidade Java. O tweet a seguir de Graeme Rocher \u00e9 bastante significativo:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Amazing thing about the 9 months since we open sourced <a href=\"https:\/\/twitter.com\/micronautfw?ref_src=twsrc%5Etfw\">@micronautfw<\/a> is the impact it has had on server side <a href=\"https:\/\/twitter.com\/java?ref_src=twsrc%5Etfw\">@java<\/a>. Inspiring <a href=\"https:\/\/twitter.com\/RedHat?ref_src=twsrc%5Etfw\">@Redhat<\/a> to come up with <a href=\"https:\/\/twitter.com\/QuarkusIO?ref_src=twsrc%5Etfw\">@quarkusio<\/a>. Pushing <a href=\"https:\/\/twitter.com\/springboot?ref_src=twsrc%5Etfw\">@springboot<\/a> to improve performance. Micronaut shifted industry strategy. That is what I call groundbreaking!\u2014 Graeme Rocher (@graemerocher) <a href=\"https:\/\/twitter.com\/graemerocher\/status\/1107560444213055489?ref_src=twsrc%5Etfw\">18 de mar\u00e7o de 2019<\/a><\/p><\/blockquote>\n\n\n\n<p>N\u00e3o \u00e9 uma solu\u00e7\u00e3o mainstream, assim como Grails nunca foi, mas tr\u00e1s algo que \u00e9 fenomenal: incomoda e inspira. Faz com que outras empresas, como a pr\u00f3pria Red Hat venha com novas solu\u00e7\u00f5es e faz com que solu\u00e7\u00f5es j\u00e1 consagradas como o Spring comecem a tomar uma atitude.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2010\/02\/grails_logo.png\" alt=\"\" class=\"wp-image-604\" width=\"288\" height=\"76\"\/><\/figure><\/div>\n\n\n\n<p>E \u00e9 o fim do Grails? N\u00e3o, pelo contr\u00e1rio. Enquanto o Grails 3 tinha como base o Spring Boot, sabe qual a base do Grails 4? Yeap: Micronaut, ou seja, todos os problemas que temos hoje com a inicializa\u00e7\u00e3o de nossos projetos pode estar com os dias contados.<\/p>\n\n\n\n<p>E tamb\u00e9m n\u00e3o \u00e9 algo que substituiria o Grails por que o objetivo aqui \u00e9 outro: enquanto Grails nos fornece um framework fullstack baseado em MVC que cuida tanto do backend quanto do frontend, temos aqui um outro alvo com Micronaut: construir APIs (focado em micro servi\u00e7os) e ser a base para outros frameworks, como Grails, que agora se tornar\u00e1 muito mais atraente do que j\u00e1 era.<\/p>\n\n\n\n<p>(e a boa not\u00edcia \u00e9 que pela documenta\u00e7\u00e3o do Grails 4, o upgrade \u00e9 relativamente simples, sem quebras significativas com as vers\u00f5es anteriores).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Agora vamos discutir!<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"206\" height=\"44\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2019\/04\/taverna_dev_all.png\" alt=\"\" class=\"wp-image-2849\"\/><\/figure><\/div>\n\n\n\n<p>A conversa n\u00e3o acaba aqui. Convido todos voc\u00eas a continuarem conosco esta conversa experimentando o Micronaut e compartilhando suas experi\u00eancias. Se quiser, pode compartilhar com seus coment\u00e1rios neste post o que achou, mas temos um lugar bem melhor que \u00e9 a Taverna do \/dev\/All, na qual criamos uma <a href=\"https:\/\/taverna.devall.com.br\/c\/back-end\/micronaut\">categoria<\/a> s\u00f3 para este assunto. Interessou e quer aprender mais? Fa\u00e7a parte do \/dev\/All: cadatre-se <a href=\"https:\/\/devall.com.br\/cadastro\">aqui<\/a>!<\/p>\n\n\n\n<p>Tamb\u00e9m criei um grupo no Facebook caso queira discutir por l\u00e1: \u00e9 aberto e qualquer pessoa pode entrar. Basta clicar neste <a href=\"https:\/\/www.facebook.com\/groups\/430642854354733\/\">link<\/a>.<\/p>\n\n\n\n<p>E se estiver em Belo Horizonte, participe do nosso meetup sobre Spring, Groovy e Grails: o pr\u00f3ximo assunto ser\u00e1 justamente sobre Micronaut. O link para o grupo \u00e9 <a href=\"https:\/\/www.meetup.com\/pt-BR\/Spring-Groovy-e-Grails-em-BH\/\">este<\/a>, e maiores detalhes sobre quando e onde ser\u00e1 o pr\u00f3ximo encontro vir\u00e1 em breve (esta semana).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">E minha jornada no Micronaut<\/h2>\n\n\n\n<p>Est\u00e1 apenas come\u00e7ando, e estou aprendendo bastante com ela. Mais artigos ser\u00e3o publicados aqui e na Revista do \/dev\/All em breve. Estou inclusive pensando em gravar alguns v\u00eddeos, por que tem oisas que voc\u00eas tem de ver.<\/p>\n\n\n\n<p>Estamos dando nossos primeiros passos neste framework, e estamos gostando, ainda h\u00e1 muito o que ser aprendido. Vou contando para voc\u00eas conforme aprendo. At\u00e9 l\u00e1!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Um importante update &#8211; nosso primeiro meetup!<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"592\" height=\"287\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2019\/04\/meetup_micronaut.png\" alt=\"\" class=\"wp-image-2864\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/meetup_micronaut.png 592w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/meetup_micronaut-300x145.png 300w\" sizes=\"(max-width: 592px) 100vw, 592px\" \/><\/figure><\/div>\n\n\n\n<p>Dia 24\/4\/2019 iremos nos encontrar pela primeira vez aqui em Belo Horizonte para conversarmos sobre o Micronaut. Caso resida aqui (ou esteja de passagem), sua presen\u00e7a \u00e9 muito bem vinda!<\/p>\n\n\n\n<p>Registre-se neste <a href=\"https:\/\/www.meetup.com\/pt-BR\/Spring-Groovy-e-Grails-em-BH\/events\/260516468\/\">link<\/a>!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ser\u00e1 que o Micronaut, criado pela mesma equipe respons\u00e1vel pelo Grails vale \u00e0 pena?<\/p>\n","protected":false},"author":1,"featured_media":2851,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[80],"tags":[85,84,82,81,83],"class_list":["post-2850","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-micronaut","tag-api","tag-java","tag-micro-servicos","tag-micronaut","tag-microservices"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Micronaut - primeiras impress\u00f5es - \/dev\/Kico<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devkico.itexto.com.br\/?p=2850\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Micronaut - primeiras impress\u00f5es - \/dev\/Kico\" \/>\n<meta property=\"og:description\" content=\"Ser\u00e1 que o Micronaut, criado pela mesma equipe respons\u00e1vel pelo Grails vale \u00e0 pena?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devkico.itexto.com.br\/?p=2850\" \/>\n<meta property=\"og:site_name\" content=\"\/dev\/Kico\" \/>\n<meta property=\"article:published_time\" content=\"2019-04-08T03:18:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-04-16T19:50:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/micronaut.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"400\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@loboweissmann\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2850\",\"url\":\"https:\/\/devkico.itexto.com.br\/?p=2850\",\"name\":\"Micronaut - primeiras impress\u00f5es - \/dev\/Kico\",\"isPartOf\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2850#primaryimage\"},\"image\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2850#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/micronaut.jpg\",\"datePublished\":\"2019-04-08T03:18:42+00:00\",\"dateModified\":\"2019-04-16T19:50:49+00:00\",\"author\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2850#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devkico.itexto.com.br\/?p=2850\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2850#primaryimage\",\"url\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/micronaut.jpg\",\"contentUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/micronaut.jpg\",\"width\":400,\"height\":400},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2850#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devkico.itexto.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Micronaut &#8211; primeiras impress\u00f5es\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\",\"url\":\"https:\/\/devkico.itexto.com.br\/\",\"name\":\"\/dev\/Kico\",\"description\":\"Desenvolvendo software\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/devkico.itexto.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\",\"name\":\"Kico (Henrique Lobo Weissmann)\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"caption\":\"Kico (Henrique Lobo Weissmann)\"},\"sameAs\":[\"https:\/\/x.com\/loboweissmann\"],\"url\":\"https:\/\/devkico.itexto.com.br\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Micronaut - primeiras impress\u00f5es - \/dev\/Kico","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/devkico.itexto.com.br\/?p=2850","og_locale":"pt_BR","og_type":"article","og_title":"Micronaut - primeiras impress\u00f5es - \/dev\/Kico","og_description":"Ser\u00e1 que o Micronaut, criado pela mesma equipe respons\u00e1vel pelo Grails vale \u00e0 pena?","og_url":"https:\/\/devkico.itexto.com.br\/?p=2850","og_site_name":"\/dev\/Kico","article_published_time":"2019-04-08T03:18:42+00:00","article_modified_time":"2019-04-16T19:50:49+00:00","og_image":[{"width":400,"height":400,"url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/micronaut.jpg","type":"image\/jpeg"}],"author":"Kico (Henrique Lobo Weissmann)","twitter_card":"summary_large_image","twitter_creator":"@loboweissmann","twitter_misc":{"Escrito por":"Kico (Henrique Lobo Weissmann)","Est. tempo de leitura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devkico.itexto.com.br\/?p=2850","url":"https:\/\/devkico.itexto.com.br\/?p=2850","name":"Micronaut - primeiras impress\u00f5es - \/dev\/Kico","isPartOf":{"@id":"https:\/\/devkico.itexto.com.br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devkico.itexto.com.br\/?p=2850#primaryimage"},"image":{"@id":"https:\/\/devkico.itexto.com.br\/?p=2850#primaryimage"},"thumbnailUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/micronaut.jpg","datePublished":"2019-04-08T03:18:42+00:00","dateModified":"2019-04-16T19:50:49+00:00","author":{"@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7"},"breadcrumb":{"@id":"https:\/\/devkico.itexto.com.br\/?p=2850#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devkico.itexto.com.br\/?p=2850"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/?p=2850#primaryimage","url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/micronaut.jpg","contentUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/micronaut.jpg","width":400,"height":400},{"@type":"BreadcrumbList","@id":"https:\/\/devkico.itexto.com.br\/?p=2850#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devkico.itexto.com.br\/"},{"@type":"ListItem","position":2,"name":"Micronaut &#8211; primeiras impress\u00f5es"}]},{"@type":"WebSite","@id":"https:\/\/devkico.itexto.com.br\/#website","url":"https:\/\/devkico.itexto.com.br\/","name":"\/dev\/Kico","description":"Desenvolvendo software","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devkico.itexto.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7","name":"Kico (Henrique Lobo Weissmann)","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","caption":"Kico (Henrique Lobo Weissmann)"},"sameAs":["https:\/\/x.com\/loboweissmann"],"url":"https:\/\/devkico.itexto.com.br\/?author=1"}]}},"jetpack_featured_media_url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/04\/micronaut.jpg","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2850"}],"collection":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2850"}],"version-history":[{"count":7,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2850\/revisions"}],"predecessor-version":[{"id":2865,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2850\/revisions\/2865"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/media\/2851"}],"wp:attachment":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2850"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2850"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2850"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}