Groovy | |
---|---|
Logo Groovy | |
Paradigma | orientada a objetos, funcional, imperativa,script |
Surgido em | 2003 |
Última versão | 4.0.18 (16 de janeiro de 2024) |
Versão em teste | 2.5.0-beta-3 (20 de fevereiro de 2018) |
Criado por | James Strachan |
Estilo de tipagem | estática, dinâmica, forte |
Influenciada por | Java, Python, Ruby, Perl, Smalltalk, Objective-C |
Plataforma | Plataforma Java |
Licença | Apache License v2.0 |
Página oficial | http://groovy-lang.org/ |
Groovy é uma linguagem de programação orientada a objetos desenvolvida para a plataforma Java como alternativa à linguagem de programação Java. Groovy possui características de Python, Ruby e Smalltalk.
Groovy utiliza uma sintaxe similar à de Java, é compilada dinamicamente para bytecode Java, e integra-se transparentemente com outros códigos e bibliotecas Java.
Groovy está atualmente em processo de padronização através do Java Community Process ( JSR 241 ).
Groovy possui algumas características não presentes no Java padrão:
James Strachan falou sobre o desenvolvimento do Groovy pela primeira vez em seu blog em Agosto de 2003. Em Março de 2004, Groovy foi enviado ao Java Community Process(JCP) como JSR 241 e aceito. Diversas versões foram lançadas entre 2004 e 2006. Depois que o processo de padronização atráves do JCP começou, a numeração de versão mudou, e uma versão chamada "1.0" foi lançada em 2 de Janeiro de 2007. Depois de vários betas numerados como 1.1, em 7 de Dezembro de 2007, Groovy 1.1 Final foi lançado e imediatamente renumerado como Groovy 1.5 para refletir as várias mudanças que foram feitas.
Em 2007, Groovy ganhou o primeiro lugar no prêmio de inovação JAX 2007. Em 2008, Grails, uma Framework para aplicações web Groovy, ganhou o segundo lugar no prêmio de inovação JAX 2008.
Em Novembro de 2008, SpringSource adquiriu a empresa responsável pelo Groovy and Grails(G2One). Em Agosto de 2009, VMware adquiriu a SpringSource.
Em Abril de 2012, após 8 anos de inatividade, o status do JSR 241 mudou para inativo.
Strachan havia deixado o projeto silenciosamente um ano antes do lançamento do Groovy 1.0 em 2007.
Em 2 de Julho de 2012, Groovy 2.0 foi lançado, nas quais, entre outras características, adicionou compilação estática e verificação estática de tipagem.
Groovy graduou da incubadora Apache e se tornou um top-level project(TLP) em Novembro de 2015.
Groovyc é a ferramenta de linha de comando do compilador Groovy. Ele permite que você compile fontes Groovy em bytecode. Ele desempenha o mesmo papel que javac no mundo Java. A maneira mais fácil de compilar um script ou classe Groovy é executar o seguinte comando:
groovyc MinhaClasse.groovy
Isso produzirá um arquivo MinhaClasse.class (bem como outros arquivos .class, dependendo do conteúdo da fonte).
Groovy vem com suporte integrado para conversão entre objetos Groovy e JSON. As classes dedicadas à serialização e análise JSON são encontradas no pacote groovy.json.
Apesar de ser inspirada e ter diversas funcionalidades de Java, Groovy não é apenas uma linguagem de script. pode ser compilada, gerando bytecodes Java, ou seja, um arquivo de código fonte Groovy pode virar um arquivo .class, recurso não encontrado em JRuby por exemplo. Desta forma, a única coisa necessária para o programador rodar códigos Groovy no ambiente de produção, é a máquina virtual Java e o jar com o runtime e API`s do Groovy.
Ele é totalmente integrado a Java no nível mais baixo. Se instanciado um objeto tipo Date em Groovy, esse nada mais é do que uma instância de Java.util.Date. E tudo funciona de forma transparente, já que debaixo dos panos, tudo é bytecode Java.
Groovy é escolhido muitas vezes pois sua sintaxe é mais simples e enxuta do que Java, mesmo não sendo Java e possuindo recursos poderosos como closures, que não são encontradas na linguagem Java.
Muitos desenvolvedores utilizam Groovy em suas aplicações Java, como extensão da linguagem, para escrever regras de negócio, facilitando a customização para diferentes clientes.
Para cada caso de uso baseado no Java, os desenvolvedores não precisam de todas as capacidades dinâmicas oferecidas pela linguagem. Geralmente esperam que o compilador Groovy ofereça comportamento semelhante ao dado pelo javac. Os desenvolvedores buscam erros de compilação, para casos de digitação incorreta de nomes de variáveis e métodos, atribuições incorretas etc. Por isso, o Groovy 2.0 passou a suportar a verificação estática de tipos.
class Foo {
def doSomething() {
def data = ["name": "James", "location": "London"]
for (e in data) {
println("entry ${e.key} is ${e.value}")
}
}
def closureExample(collection) {
collection.each { println("value ${it}") }
}
static void main(args) {
def values = [1, 2, 3, "abc"]
def foo = new Foo()
foo.closureExample(values)
foo.doSomething()
}
}
class Filter {
static void main(String[] args) {
List<String> list = ["Alfinete", "Sabrina", "Zina"]
List<String> shorts
shorts = list.findAll { String item -> item.length() <= 4 }
shorts.each { println(it) }
}
}
public class Filter {
public static void main(String[] args) {
List<String> list = Arrays.asList("Alfinete", "Sabrina", "Zina");
List<String> shorts = new ArrayList<String>();
for(String item : list) if(item.length() <= 4) shorts.add(item);
for(String item : shorts) System.out.println(item);
}
}
Existe uma implementação alternativa do Groovy:
Muitas IDEs e editores de texto suportam Groovy:
Plataforma Java | ||
---|---|---|
Tecnologias Sun | ||
Tecnologias de plataforma | ||
Principais tecnologias de terceiros | JRockit • GNU Classpath • Kaffe • TopLink • Apache Harmony • Apache Struts • JBoss Application Server • Tapestry • Jazelle • Superwaba | |
Linguagens de programação | ||
Framework | ||
Conferências Java | JavaOne |