{"id":1618,"date":"2013-10-20T23:56:15","date_gmt":"2013-10-21T02:56:15","guid":{"rendered":"https:\/\/devkico.itexto.com.br\/?p=1618"},"modified":"2013-10-20T23:56:15","modified_gmt":"2013-10-21T02:56:15","slug":"por-groovy","status":"publish","type":"post","link":"https:\/\/devkico.itexto.com.br\/?p=1618","title":{"rendered":"Por que Groovy?"},"content":{"rendered":"<p><a style=\"color: #ea9629; text-decoration: underline; outline: #000000;\" href=\"http:\/\/groovy.codehaus.org\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-235\" alt=\"groovylogo\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2008\/12\/groovylogo.png\" width=\"203\" height=\"100\" \/><\/a><\/p>\n<p>Certa vez fui a uma palestra sobre Scala em que ao perguntar ao palestrante o que justificaria minha equipe treinada em Java adotar a linguagem recebi como resposta segundos de sil\u00eancio seguido por &#8220;muito obrigado a presen\u00e7a de todos voc\u00eas aqui&#8221;. \u00a0Como pretendo falar sobre Groovy em breve (coisas boas a caminho no pr\u00f3ximo m\u00eas) aqui seguem algumas raz\u00f5es.<\/p>\n<p>A pergunta que deve ser feita \u00e9: quais problemas Groovy soluciona ou pelo menos torna mais f\u00e1cil de serem resolvidos?<\/p>\n<h2>Primeira pseudo-raz\u00e3o: \u00e9 executado na JVM<\/h2>\n<p>Beng! Esta n\u00e3o \u00e9 uma boa raz\u00e3o para se usar Groovy, pois o Java tamb\u00e9m \u00e9 executado na JVM assim como diversas outras linguagens. \u00c9 apenas um facilitador de ado\u00e7\u00e3o visto que voc\u00ea pode tirar proveito do seu c\u00f3digo legado e de toda a bagagem que o Java j\u00e1 nos tr\u00e1s, mas n\u00e3o\u00a0<strong>a<\/strong> raz\u00e3o.<\/p>\n<p>(embora meu aprendizado por Groovy tenha sido fortemente influenciado no in\u00edcio por isto)<\/p>\n<h2>Pode ser executada como script usando c\u00f3digo java legado e suas bibliotecas favoritas<\/h2>\n<p>Esta j\u00e1 \u00e9 uma boa raz\u00e3o: n\u00e3o \u00e9 raro eu precisar escrever c\u00f3digo de manuten\u00e7\u00e3o. Pequenos scripts que executam determinadas tarefas em meus sistemas, tarefas estas que n\u00e3o precisam ser novos recursos deste, mas sim tarefas auxiliares. Exemplo: manipula\u00e7\u00e3o de entidades do sistema usando a l\u00f3gica de neg\u00f3cio do pr\u00f3prio sistema.<\/p>\n<p>Outra boa raz\u00e3o: scripts para manuten\u00e7\u00e3o de infra estrutura mesmo. Muitas vezes preciso escrever um script que use alguma biblioteca Java \u00fatil, como por exemplo o Commons Digester. \u00c9 mais f\u00e1cil pra mim que n\u00e3o sei bash direito us\u00e1-la com minha experi\u00eancia Java do que com scripts do sistema operacional. (eu sei que \u00e9 um exemplo bobo, mas voc\u00eas captaram a id\u00e9ia).<\/p>\n<p>E o formato script tamb\u00e9m \u00e9 bastante convidativo. H\u00e1 aqueles casos nos quais voc\u00ea quer escrever um programa que apenas varra uma lista de arquivos. O que voc\u00ea acha mais f\u00e1cil de escrever e entender? A vers\u00e3o Java abaixo?<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\npublic class LeiaDiretorios {\r\npublic static void main(String args&#x5B;]) {\r\nFile diretorio = new File(&quot;\/diretorio&quot;);\r\nfor (File arquivo : diretorio) {\r\nSystem.out.println(arquivo);\r\n}\r\n}\r\n}\r\n\r\n<\/pre>\n<p>Ou a vers\u00e3o Groovy?<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n\r\nFile diretorio = new File(&quot;\/diretorio&quot;);\r\nfor (arquivo in diretorio) {\r\nprintln arquivo\r\n}\r\n\r\n<\/pre>\n<h2>Tem recursos que ainda n\u00e3o existem no Java<\/h2>\n<p>\u00c9 fato: Java t\u00e1 a cada dia que se passa mais parecido com Groovy, mas nunca ser\u00e1 o Groovy. H\u00e1 alguns recursos na linguagem que sempre me atrairam tal como os que cito a seguir:<\/p>\n<ul>\n<li>Closures: facilitam demais a escrita de c\u00f3digo funcional e tamb\u00e9m cria\u00e7\u00e3o de c\u00f3digo polimorfico. \u00c9 um recurso muito poderoso, e que voc\u00ea s\u00f3 da valor depois de experimentar. Gravei um <a href=\"http:\/\/www.youtube.com\/watch?v=lqYfiax5hdo\">v\u00eddeo sobre isto<\/a>.<br \/>\n(eu podia escrever um outro post s\u00f3 sobre como este recurso sozinho j\u00e1 justificaria a linguagem)<\/li>\n<li>Builders: Groovy te permite lidar com estruturas hierarquicas usando o padr\u00e3o de projeto builder nativamente. E ei&#8230; \u00e9 lindo viu. Quer ver um exemplo? Conhe\u00e7a o <a href=\"http:\/\/groovy.codehaus.org\/Swing+Builder\">Swing Builder<\/a>, que te permite criar aplica\u00e7\u00f5es desktop com uma m\u00e3o nas costas (e que o antigo Java FX era suspeitamente bastante parecido). Lidar com XML tamb\u00e9m \u00e9 muito mais simples gra\u00e7as a este recurso. Da uma olhada no <a href=\"http:\/\/groovy.codehaus.org\/Creating+XML+using+Groovy%27s+MarkupBuilder\">Markup Builder<\/a>.<\/li>\n<li>O modo como lidamos com n\u00fameros: em Java quando preciso lidar com BigDecimal \u00e9 uma luta (sei que vai melhorar no futuro, mas ainda n\u00e3o \u00e9 uma realidade).<br \/>\nPra que escrever a.multiply(b) se posso simplesmente escrever a * b?<\/li>\n<li>Poder interpolar strings ao inv\u00e9s de simplesmente concatenar como no Java.<br \/>\nIsto evita muito c\u00f3digo horroroso e al\u00e9m disto \u00e9 muito mais interessante. Strings em Groovy s\u00e3o como deveria ser no Java desde o in\u00edcio. Da uma lida neste <a href=\"http:\/\/groovy.codehaus.org\/Strings+and+GString\">link<\/a>.<\/li>\n<li>O fato de ser uma linguagem din\u00e2mica. Poder alterar meu c\u00f3digo fonte em tempo de execu\u00e7\u00e3o poupa muito tempo e a necessidade de implementar padr\u00f5es de projetos muitas vezes complicados. Exemplo: por que implementar um decorator se posso mudar o comportamento de minha classe usando poucas linhas? Gravei um v\u00eddeo sobre isto que pode ser visto neste <a href=\"http:\/\/www.youtube.com\/watch?v=AQBxfYBifAk\">link<\/a>.<\/li>\n<li>E basicamente tudo o que acho muito chato no Java em Groovy est\u00e1 resolvido. Ei: gravei sobre isto um v\u00eddeo tamb\u00e9m. Voc\u00ea pode assisti-lo neste <a href=\"http:\/\/www.youtube.com\/watch?v=eEUKRhPoJAY\">link<\/a>.<\/li>\n<li>Possui construtores espec\u00edficos na linguagem para lidar com cole\u00e7\u00f5es. Isto te poupa MUITO tempo e n\u00e3o entendo por que no Java n\u00e3o h\u00e1 este recurso.<br \/>\nAo inv\u00e9s de escrever<br \/>\nList&lt;String&gt; lista = new ArrayList&lt;String&gt;();<br \/>\nEm Groovy eu simplesmente escrevo<br \/>\ndef lista = []<br \/>\nSim, \u00e9 simples assim. Tenho um <a href=\"http:\/\/www.youtube.com\/watch?v=WkQVkIVJHxA\">v\u00eddeo s\u00f3 sobre este recurso<\/a>, que tamb\u00e9m pode ser usado pra facilitar a escrita de testes unit\u00e1rios quando aplicado a hashes.<\/li>\n<\/ul>\n<h2>Porta de entrada para a plataforma Java<\/h2>\n<p>Deixe sua arrog\u00e2ncia de lado. Ao contr\u00e1rio do que muitos pensam, aprender Java n\u00e3o \u00e9 uma tarefa simples, especialmente para quem j\u00e1 est\u00e1 acostumado com programa\u00e7\u00e3o procedural a anos. Em Groovy diversos componentes de sintaxe s\u00e3o opcionais como por exemplo par\u00eanteses para chamar fun\u00e7\u00f5es ou procedimentos, ponto e v\u00edrgula e mesmo o formato de script.<\/p>\n<p>\u00c9 uma sintaxe maravilhosa que por um lado \u00e9 bastante parecida com o Java e por outro muito pr\u00f3xima de linguagens como Visual Basic. E como voc\u00ea tem acesso a todas as bibliotecas Java, aos poucos vai se acostumando com a plataforma Java EE, e de uma forma muito mais agrad\u00e1vel e pragm\u00e1tica.<\/p>\n<h2>Groovy Console<\/h2>\n<p>N\u00e3o \u00e9 exatamente um recurso da linguagem, mas sim um acess\u00f3rio que v\u00eam com esta, mas \u00e9 uma boa raz\u00e3o. Groovy v\u00eam com um REPL completo que, na minha opini\u00e3o, \u00e9 o laborat\u00f3rio perfeito para que possamos experimentar c\u00f3digo e mesmo aprender novas APIs. Adivinha? Gravei um v\u00eddeo sobre isto tamb\u00e9m que pode ser acessado <a href=\"http:\/\/www.youtube.com\/watch?v=4DAWy3ikKy4\">neste link<\/a>.<\/p>\n<h2>Criar DSLs com Groovy \u00e9 muito f\u00e1cil<\/h2>\n<p>Sei que n\u00e3o faz parte do dia a dia da maior parte das pessoas mas faz do meu, ent\u00e3o tenho de incluir este motivo. Groovy e Lisp s\u00e3o as melhores linguagens que conhe\u00e7o para criarmos <a href=\"http:\/\/pt.wikipedia.org\/wiki\/Linguagem_de_dom%C3%ADnio_espec%C3%ADfico\">DSLs <\/a>(Domain Specific Languages, Linguagens Espec\u00edficas de Dom\u00ednio). S\u00e3o pequenas linguagens de programa\u00e7\u00e3o, pr\u00f3ximas do mundo do usu\u00e1rio final que possibilitam a este expandir o sistema com facilidade.<\/p>\n<p>\u00c9 um recurso extremamente poderoso e existe inclusive um livro muito interessante sobre como fazer isto com Groovy cuja leitura recomendo chamado &#8220;Groovy for Domain Specific Languages&#8221; que li dois anos atr\u00e1s e cuja resenha publiquei <a href=\"https:\/\/devkico.itexto.com.br\/?p=1076\">aqui<\/a>.<\/p>\n<h2>Grails<\/h2>\n<p>A maior parte das pessoas conhece Groovy por causa do seu killer app: Grails, um framework para desenvolvimento de aplica\u00e7\u00f5es web que s\u00e3o executadas na plataforma Java EE. \u00a0O que posso dizer sobre Grails?<\/p>\n<p>Simples: ele <a href=\"https:\/\/devkico.itexto.com.br\/?p=224\">ANIQUILA o t\u00e9dio da plataforma Java EE<\/a> e a torna acess\u00edvel, f\u00e1cil de usar e pragm\u00e1tica.<\/p>\n<h2>Concluindo<\/h2>\n<p>Estas n\u00e3o s\u00e3o todas as raz\u00f5es pelas quais voc\u00ea deve adotar Groovy como linguagem de programa\u00e7\u00e3o, mas s\u00e3o pelo menos as que considero mais importantes.<\/p>\n<p>Groovy resolve um problema fundamental para mim: o da entrada de iniciantes na plataforma Java. Sua sintaxe pragm\u00e1tica torna a transi\u00e7\u00e3o muito menos traum\u00e1tica. Isto aliado ao fato de existir algo como Grails e Griffon fornecem um outro grande passo: uma entrada ainda mais suave para a plataforma Java EE que mesmo com sua simplifica\u00e7\u00e3o nas \u00faltimas edi\u00e7\u00f5es ainda \u00e9 osso duro de roer para os iniciantes.<\/p>\n<p>E sabem o que acho mais legal? J\u00e1 faz uns seis (talvez sete) anos que brinco e trabalho com Groovy e sempre me surpreendo. E sim: eu sei que sou <a href=\"http:\/\/www.grailsbrasil.com.br\">suspeito pra falar<\/a>. E voc\u00ea? J\u00e1 experimentou Groovy? O que achou?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Certa vez fui a uma palestra sobre Scala em que ao perguntar ao palestrante o que justificaria minha equipe treinada em Java adotar a linguagem recebi como resposta segundos de sil\u00eancio seguido por &#8220;muito obrigado a presen\u00e7a de todos voc\u00eas aqui&#8221;.  Como pretendo falar sobre Groovy em breve (coisas boas a caminho no pr\u00f3ximo m\u00eas) aqui seguem algumas raz\u00f5es.<\/p>\n","protected":false},"author":1,"featured_media":235,"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":[5],"tags":[],"class_list":["post-1618","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-groovy"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Por que Groovy? - \/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=1618\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Por que Groovy? - \/dev\/Kico\" \/>\n<meta property=\"og:description\" content=\"Certa vez fui a uma palestra sobre Scala em que ao perguntar ao palestrante o que justificaria minha equipe treinada em Java adotar a linguagem recebi como resposta segundos de sil\u00eancio seguido por &quot;muito obrigado a presen\u00e7a de todos voc\u00eas aqui&quot;. Como pretendo falar sobre Groovy em breve (coisas boas a caminho no pr\u00f3ximo m\u00eas) aqui seguem algumas raz\u00f5es.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devkico.itexto.com.br\/?p=1618\" \/>\n<meta property=\"og:site_name\" content=\"\/dev\/Kico\" \/>\n<meta property=\"article:published_time\" content=\"2013-10-21T02:56:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2008\/12\/groovylogo.png\" \/>\n\t<meta property=\"og:image:width\" content=\"203\" \/>\n\t<meta property=\"og:image:height\" content=\"100\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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=\"7 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=1618\",\"url\":\"https:\/\/devkico.itexto.com.br\/?p=1618\",\"name\":\"Por que Groovy? - \/dev\/Kico\",\"isPartOf\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1618#primaryimage\"},\"image\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1618#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2008\/12\/groovylogo.png\",\"datePublished\":\"2013-10-21T02:56:15+00:00\",\"dateModified\":\"2013-10-21T02:56:15+00:00\",\"author\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1618#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devkico.itexto.com.br\/?p=1618\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1618#primaryimage\",\"url\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2008\/12\/groovylogo.png\",\"contentUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2008\/12\/groovylogo.png\",\"width\":203,\"height\":100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1618#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devkico.itexto.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Por que Groovy?\"}]},{\"@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":"Por que Groovy? - \/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=1618","og_locale":"pt_BR","og_type":"article","og_title":"Por que Groovy? - \/dev\/Kico","og_description":"Certa vez fui a uma palestra sobre Scala em que ao perguntar ao palestrante o que justificaria minha equipe treinada em Java adotar a linguagem recebi como resposta segundos de sil\u00eancio seguido por \"muito obrigado a presen\u00e7a de todos voc\u00eas aqui\". Como pretendo falar sobre Groovy em breve (coisas boas a caminho no pr\u00f3ximo m\u00eas) aqui seguem algumas raz\u00f5es.","og_url":"https:\/\/devkico.itexto.com.br\/?p=1618","og_site_name":"\/dev\/Kico","article_published_time":"2013-10-21T02:56:15+00:00","og_image":[{"width":203,"height":100,"url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2008\/12\/groovylogo.png","type":"image\/png"}],"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":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devkico.itexto.com.br\/?p=1618","url":"https:\/\/devkico.itexto.com.br\/?p=1618","name":"Por que Groovy? - \/dev\/Kico","isPartOf":{"@id":"https:\/\/devkico.itexto.com.br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devkico.itexto.com.br\/?p=1618#primaryimage"},"image":{"@id":"https:\/\/devkico.itexto.com.br\/?p=1618#primaryimage"},"thumbnailUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2008\/12\/groovylogo.png","datePublished":"2013-10-21T02:56:15+00:00","dateModified":"2013-10-21T02:56:15+00:00","author":{"@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7"},"breadcrumb":{"@id":"https:\/\/devkico.itexto.com.br\/?p=1618#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devkico.itexto.com.br\/?p=1618"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/?p=1618#primaryimage","url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2008\/12\/groovylogo.png","contentUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2008\/12\/groovylogo.png","width":203,"height":100},{"@type":"BreadcrumbList","@id":"https:\/\/devkico.itexto.com.br\/?p=1618#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devkico.itexto.com.br\/"},{"@type":"ListItem","position":2,"name":"Por que Groovy?"}]},{"@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\/2008\/12\/groovylogo.png","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\/1618"}],"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=1618"}],"version-history":[{"count":2,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1618\/revisions"}],"predecessor-version":[{"id":1620,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1618\/revisions\/1620"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/media\/235"}],"wp:attachment":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1618"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1618"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1618"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}