A SpringSource anunciou recentemente o lançamento da versão 2.5.0 do Groovy-Eclipse, o plug-in que possibilita o uso do IDE Eclipse para o desenvolvimento com a linguagem Groovy. A principal novidade é o suporte aos novos Descritores de DSLs (DSLDs), que estendem o suporte a DSLs (linguagens específicas ao domínio). O editor também evoluiu, com uma melhor assistência para criação de código e inferência de tipos. O Groovy 1.7.10 é suportado por padrão, mas a recém-lançada versão 1.8 pode ser utilizada através de um add-on.
Para ilustrar o funcionamento dos DSLDs, usamos como exemplo uma DSL para cálculo de distância, definida na documentação do Groovy-Eclipse:
Mesmo sem entrar em detalhes sobre a implementação dessa DSL, podemos notar sua utilidade. Com uma notação simples, o código na imagem acima faz o cálculo de distância envolvendo quatro unidades diferentes: metros, jardas, milhas e quilômetros. Observe na imagem que m, yd, ml e km estão sublinhados. Isso significa que o editor de código Groovy do Eclipse inicialmente não reconhece a nova “linguagem”.
É neste ponto que entram os descritores de DSLs. Ao adicionar arquivos do tipo Groovy DSL Descriptor (extensão .dsld) ao projeto Eclipse, é habilitado o suporte às linguagens especificas ao domínio no editor de código. Um exemplo de DLSD:
currentType( subType( Number ) ).accept { [ m: "Meter", yd: "Yard", cm: "Centimeter", mi: "Mile", km: "Kilometer"].each { // Considerando que url foi definida anteriormente property name:it.key, type:"Distance", doc: """A <code>${it.value}</code> from <a href="$url">$url</a>""" } }
(Este exemplo e as imagens foram extraídos deste post no blog da Spring Source, que mostra mais detalhes sobre a definição e suporte a DSLs no Eclipse.)
Analisando o exemplo acima, pode-se observar que a própria descrição da DSL obedece a uma sintaxe própria e aceita comandos Groovy. Em outras palavras, a linguagem utilizada pelos DSLDs também é uma DSL, e por isso possui o seu próprio meta-descritor. Como resultado da presença do .dsld no projeto, o editor já será capaz de exibir informações sobre a nova linguagem para cálculo de distâncias, conforme a figura a seguir:
Mesmo desenvolvedores que ainda não tiveram necessidade de criar suas DSLs serão beneficiados – através de DSLDs criados por terceiros. A tendência é que rapidamente surjam DSLDs de uso comum, suportando por exemplo as diferentes peças do ecossistema do Groovy (como Grails, Gaelyk, e Griffon).