{"id":288,"date":"2009-02-26T00:16:12","date_gmt":"2009-02-26T03:16:12","guid":{"rendered":"https:\/\/devkico.itexto.com.br\/?p=288"},"modified":"2009-02-26T00:16:12","modified_gmt":"2009-02-26T03:16:12","slug":"groovy-como-linguagem-de-script-como-instalar-e-minha-experiencia","status":"publish","type":"post","link":"https:\/\/devkico.itexto.com.br\/?p=288","title":{"rendered":"Groovy como linguagem de script &#8211; como instalar e minha experi\u00eancia"},"content":{"rendered":"<p>Groovy tem sido minha linguagem de script favorita por pelo menos um ano, conseguindo algo que at\u00e9 ent\u00e3o era impens\u00e1vel pra mim: substituir o Perl, que at\u00e9 ent\u00e3o quebrava todos os meus galhos e troncos (muitos troncos). Claro: meu caso n\u00e3o \u00e9 uma regra, por\u00e9m acredito que seja muito pr\u00f3ximo da realidade de diversos programadores que trabalhem com Java.<\/p>\n<p>Tudo come\u00e7ou da forma mais gambiarristica poss\u00edvel. Um belo dia um cliente me pediu para implementar um relat\u00f3rio que s\u00f3 seria utilizado uma \u00fanica vez. Dado que conhe\u00e7o bem o que este &#8220;s\u00f3 vai ser usado uma \u00fanica vez&#8221; significa, normalmente minha primeira op\u00e7\u00e3o consiste em implementar este relat\u00f3rio em uma aplica\u00e7\u00e3o independente, s\u00f3 para garantir que no futuro, caso seja necess\u00e1rio, o pr\u00f3prio usu\u00e1rio a execute de acordo com suas necessidades.<\/p>\n<p>Por\u00e9m, desta vez foi diferente. O rel\u00f3gio marcava 16 horas e eu tinha um compromisso \u00e0s 17. A esmagadora maioria do c\u00f3digo que eu precisaria j\u00e1 se encontrava implementado em Java. Somando 2 + 2, qual linguagem escolher? Groovy, \u00e9 \u00f3bvio. Em meia hora o trabalho estava pronto, o cliente tinha em m\u00e3os sua bendita planilha gigantesca no formato Microsoft Excel e eu ainda cheguei pontualmente ao meu compromisso.<\/p>\n<p>Como 90% do meu tempo \u00e9 gasto com c\u00f3digo Java, que n\u00e3o \u00e9 t\u00e3o simples assim de se acessar usando Perl, Groovy caiu como uma luva. Bastou configurar o meu ambiente de execu\u00e7\u00e3o e boom. De repente, executo 90% das minhas tarefas corriqueiras com meus scripts escritos em Groovy. E o mais interessante foi: configurar o ambiente \u00e9 MUITO simples, tal como irei expor abaixo.<\/p>\n<p><strong>Configurando o seu ambiente Groovy<\/strong><\/p>\n<p>O primeiro passo, claro: consiste em possuir instalado no seu computador o JDK 1.4 ou posterior (1.5 ou posterior seria o ideal). Com o JDK j\u00e1 instalado, baixe a \u00faltima vers\u00e3o bin\u00e1ria do Groovy no seu site oficial: <a href=\"http:\/\/groovy.codehaus.org\" target=\"_blank\">http:\/\/groovy.codehaus.org<\/a><\/p>\n<p>Em seguida, descompacte o arquivo zipado no diret\u00f3rio de sua escolha e, basicamente, siga os passos abaixo:<\/p>\n<ul>\n<li>Crie uma nova vari\u00e1vel de ambiente chamada GROOVY_HOME, cujo valor dever\u00e1 consistir no diret\u00f3rio no qual o Groovy foi desinstalado.<\/li>\n<li>Inclua no path do seu sistema o diret\u00f3rio GROOVY_HOME\/bin<\/li>\n<\/ul>\n<p>Para testar se as coisas realmente est\u00e3o funcionando, no seu ambiente de linha de comando, execute o comando &#8220;groovy&#8221;. Se tudo estiver de acodo, ser\u00e1 impresso algo similar a<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\nerror: neither -e or filename provided\r\nusage: groovy &#x5B;options] &#x5B;args]\r\noptions:\r\n-p\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 process files line by line and print result\r\n(see also -n)\r\n-D,--define &lt;name=value&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 define a system property\r\n-a,--autosplit &lt;splitPattern&gt;\u00a0\u00a0\u00a0 split lines using splitPattern (default &#039;\\s&#039;)\r\nusing implicit &#039;split&#039; variable\r\n-c,--encoding &lt;charset&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 specify the encoding of the files\r\n-d,--debug\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 debug mode will print out full stack traces\r\n-e &lt;script&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 specify a command line script\r\n-h,--help\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 usage information\r\n-i &lt;extension&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 modify files in place; create backup if\r\nextension is given (e.g. &#039;.bak&#039;)\r\n-l &lt;port&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 listen on a port and process inbound lines\r\n-n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 process files line by line using implicit\r\n&#039;line&#039; variable\r\n-v,--version\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 display the Groovy and JVM versions\r\n\r\n<\/pre>\n<p>Por\u00e9m, ainda n\u00e3o podemos dizer que seu ambiente esteja 100% pronto, uma vez que seu c\u00f3digo legado ainda n\u00e3o ser\u00e1 visto pelo seu interpretador groovy. O \u00faltimo passo portanto consiste em tornar seu c\u00f3digo legado (ou suas bibliotecas) vis\u00edveis ao mesmo. Fazer isto \u00e9 &#8220;quase&#8221; simples. :)<\/p>\n<p>Dentro do seu diret\u00f3rio GROOVY_HOME, busque um subdiret\u00f3rio chamado conf. Em seu interior h\u00e1 um arquivo chamado groovy-starter.conf, cujo conte\u00fado ser\u00e1 mais ou menos o que exponho abaixo:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\n# alguns coment\u00e1rios acima\r\n\r\n# load required libraries\r\nload !{groovy.home}\/lib\/*.jar\r\n\r\n# load user specific libraries\r\nload !{user.home}\/.groovy\/lib\/*.jar\r\n\r\n# tools.jar for ant tasks\r\nload ${tools.jar}\r\n<\/pre>\n<p>Como pode ser visto, este arquivo \u00e9 respons\u00e1vel por instruir ao interpretador\/compilador Groovy quais diret\u00f3rios analisar em busca das suas bibliotecas favoritas. No meu caso, bstou incluir uma linha a mais:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\nload !{user.home}\/.groovy\/lib\/*.jar\r\n\r\n<\/pre>\n<p>Nesta linha, eu aponto para o diret\u00f3rio .groovy\/lib que criei dentro do meu diret\u00f3rio de usu\u00e1rio no Mac e pronto. Se preciso usar alguma biblioteca ou c\u00f3digo legado, simplesmente incluo os arquivos .jar em seu interior e estou pronto para criar meus scripts!<\/p>\n<p>(para obter mais detalhes a respeito, acesse <a href=\"http:\/\/groovy.codehaus.org\/api\/org\/codehaus\/groovy\/tools\/LoaderConfiguration.html\" target=\"_blank\">este endere\u00e7o<\/a>)<\/p>\n<p><strong>Groovy Console \u00e9 seu amigo<\/strong><\/p>\n<p>Um ponto que consta muito em favor do Groovy como linguagem de script no meu caso consiste no Groovy Console. Para aqueles que j\u00e1 programaram em Ruby, \u00e9 exatamente a mesma id\u00e9ia do irb, ou seja, um ambiente de execu\u00e7\u00e3o composto por dois componentes: um editor e uma caixa de texto de somente leitura a partir da qual seja poss\u00edvel visualizar a sa\u00edda do meu script.<\/p>\n<p>Para executar o Groovy Console, na linha de comando, simplesmente execute o programa groovyconsole. Surgir\u00e1 uma janela similar \u00e0 que exponho na imagem abaixo:<\/p>\n<p><a href=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2009\/02\/groovyconsole.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-289\" title=\"groovyconsole\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2009\/02\/groovyconsole-300x222.jpg\" alt=\"\" width=\"300\" height=\"222\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2009\/02\/groovyconsole-300x222.jpg 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2009\/02\/groovyconsole.jpg 481w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Trata-se de uma interface bem espartana, mas que cont\u00e9m os elementos fundamentais para a cria\u00e7\u00e3o de novos scripts, como por exemplo as op\u00e7\u00f5es de salvar e carregar scripts, al\u00e9m de, o que \u00e9 fundamental, execut\u00e1-los e visualizar o resultado de sua execu\u00e7\u00e3o imediatamente.<\/p>\n<p>Claro: se voc\u00ea for um viciado em IDEs que completem o seu c\u00f3digo enquanto voc\u00ea digita, prov\u00e1velmente odiar\u00e1 profundamente o Groovy Console. Por\u00e9m, ele possui a grande vantagem de, em momentos nos quais voc\u00ea precisa apenas criar um script, n\u00e3o consumir toda a mem\u00f3ria do seu computador para que voc\u00ea possa simplesmente escrever algumas linhas e execut\u00e1-las em seguida.<\/p>\n<p><strong>Reusabilidade conta (e muito)<\/strong><\/p>\n<p>Finalmente, n\u00e3o podemos esquecer a quest\u00e3o da reusabilidade. \u00c9 bacana ter uma ferramenta que lhe permita criar quebra galhos rapidamente, por\u00e9m \u00e9 fato que estes quebra galhos acabam virando quebra troncos. A partir de ent\u00e3o, \u00e9 necess\u00e1rio criar uma aplica\u00e7\u00e3o mais decente que possa ser usada pelo usu\u00e1rio.<\/p>\n<p>Neste caso, o que fazer? Simples: como no final das contas, c\u00f3digo Groovy vira bytecode padr\u00e3o Java, voc\u00ea pode simplesmente adaptar o seu script para que se torne uma classe e, em seguida, transform\u00e1-la em um software mais decente ou, mais interessante ainda, integra-lo a um sistema j\u00e1 existente (claro, que com as devidas precau\u00e7\u00f5es).<\/p>\n<p><strong>Concluindo<\/strong><\/p>\n<p>N\u00e3o quero dizer aqui que voc\u00ea deva substituir a sua linguagem de script por Groovy. Por\u00e9m, se em seu cotidiano, \u00e9 necess\u00e1rio lidar com c\u00f3digo Java legado (ou bibliotecas), Groovy se apresenta como uma op\u00e7\u00e3o formid\u00e1vel para esta situa\u00e7\u00e3o.<\/p>\n<p>Existem outras linguagens que voc\u00ea pode experimentar tamb\u00e9m, como JRuby, Clojure, Scala, etc. Por\u00e9m, Groovy possui como diferencial o fato de apresentar uma sintaxe extremamente parecida com a que programadores Java j\u00e1 est\u00e3o acostumados. Consequentemente, a curva de aprendizado \u00e9 menor (nos momentos de aperto, isto COM CERTEZA faz A diferen\u00e7a) e o aspecto de facilidade que linguagens de script apresnetam ser\u00e1 acentuado.<\/p>\n<p>PS: e com rela\u00e7\u00e3o \u00e0quele &#8220;inc\u00eandio&#8221; que citei no in\u00edcio do post? Nunca mais apareceu! (at\u00e9 agora)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Groovy tem sido minha linguagem de script favorita por pelo menos um ano, conseguindo algo que at\u00e9 ent\u00e3o era impens\u00e1vel pra mim: substituir o Perl, que at\u00e9 ent\u00e3o quebrava todos os meus galhos e troncos (muitos troncos). Claro: meu caso n\u00e3o \u00e9 uma regra, por\u00e9m acredito que seja muito pr\u00f3ximo da realidade de diversos programadores [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"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,6,1],"tags":[],"class_list":["post-288","post","type-post","status-publish","format-standard","hentry","category-groovy","category-java","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Groovy como linguagem de script - como instalar e minha experi\u00eancia - \/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=288\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Groovy como linguagem de script - como instalar e minha experi\u00eancia - \/dev\/Kico\" \/>\n<meta property=\"og:description\" content=\"Groovy tem sido minha linguagem de script favorita por pelo menos um ano, conseguindo algo que at\u00e9 ent\u00e3o era impens\u00e1vel pra mim: substituir o Perl, que at\u00e9 ent\u00e3o quebrava todos os meus galhos e troncos (muitos troncos). Claro: meu caso n\u00e3o \u00e9 uma regra, por\u00e9m acredito que seja muito pr\u00f3ximo da realidade de diversos programadores [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devkico.itexto.com.br\/?p=288\" \/>\n<meta property=\"og:site_name\" content=\"\/dev\/Kico\" \/>\n<meta property=\"article:published_time\" content=\"2009-02-26T03:16:12+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.itexto.net\/devkico\/wp-content\/uploads\/2009\/02\/groovyconsole-300x222.jpg\" \/>\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=\"6 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=288\",\"url\":\"https:\/\/devkico.itexto.com.br\/?p=288\",\"name\":\"Groovy como linguagem de script - como instalar e minha experi\u00eancia - \/dev\/Kico\",\"isPartOf\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=288#primaryimage\"},\"image\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=288#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2009\/02\/groovyconsole-300x222.jpg\",\"datePublished\":\"2009-02-26T03:16:12+00:00\",\"dateModified\":\"2009-02-26T03:16:12+00:00\",\"author\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=288#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devkico.itexto.com.br\/?p=288\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=288#primaryimage\",\"url\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2009\/02\/groovyconsole-300x222.jpg\",\"contentUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2009\/02\/groovyconsole-300x222.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=288#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devkico.itexto.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Groovy como linguagem de script &#8211; como instalar e minha experi\u00eancia\"}]},{\"@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":"Groovy como linguagem de script - como instalar e minha experi\u00eancia - \/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=288","og_locale":"pt_BR","og_type":"article","og_title":"Groovy como linguagem de script - como instalar e minha experi\u00eancia - \/dev\/Kico","og_description":"Groovy tem sido minha linguagem de script favorita por pelo menos um ano, conseguindo algo que at\u00e9 ent\u00e3o era impens\u00e1vel pra mim: substituir o Perl, que at\u00e9 ent\u00e3o quebrava todos os meus galhos e troncos (muitos troncos). Claro: meu caso n\u00e3o \u00e9 uma regra, por\u00e9m acredito que seja muito pr\u00f3ximo da realidade de diversos programadores [&hellip;]","og_url":"https:\/\/devkico.itexto.com.br\/?p=288","og_site_name":"\/dev\/Kico","article_published_time":"2009-02-26T03:16:12+00:00","og_image":[{"url":"http:\/\/www.itexto.net\/devkico\/wp-content\/uploads\/2009\/02\/groovyconsole-300x222.jpg"}],"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":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devkico.itexto.com.br\/?p=288","url":"https:\/\/devkico.itexto.com.br\/?p=288","name":"Groovy como linguagem de script - como instalar e minha experi\u00eancia - \/dev\/Kico","isPartOf":{"@id":"https:\/\/devkico.itexto.com.br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devkico.itexto.com.br\/?p=288#primaryimage"},"image":{"@id":"https:\/\/devkico.itexto.com.br\/?p=288#primaryimage"},"thumbnailUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2009\/02\/groovyconsole-300x222.jpg","datePublished":"2009-02-26T03:16:12+00:00","dateModified":"2009-02-26T03:16:12+00:00","author":{"@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7"},"breadcrumb":{"@id":"https:\/\/devkico.itexto.com.br\/?p=288#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devkico.itexto.com.br\/?p=288"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/?p=288#primaryimage","url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2009\/02\/groovyconsole-300x222.jpg","contentUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2009\/02\/groovyconsole-300x222.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/devkico.itexto.com.br\/?p=288#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devkico.itexto.com.br\/"},{"@type":"ListItem","position":2,"name":"Groovy como linguagem de script &#8211; como instalar e minha experi\u00eancia"}]},{"@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":"","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\/288"}],"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=288"}],"version-history":[{"count":2,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/288\/revisions"}],"predecessor-version":[{"id":291,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/288\/revisions\/291"}],"wp:attachment":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=288"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=288"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}