Afinal o que é, genericamente, uma Meta-Framework, ou melhor, um Meta-“Qualquer coisa”?
A palavra “meta”, para o efeito desta fantástica analogia, pode ser
definida pela seguinte rigorosa proposição/teorema/axioma/lema/etc:
Meta-"Qualquer coisa" é ("Qualquer coisa")2
Ou seja,
Meta-"Qualquer coisa" é "Qualquer coisa sobre "Qualquer coisa""
Assim, podemos ter coisas como Meta-dados (Dados sobre dados), Meta-Teoremas, Meta-Matemática e Meta-Frameworks.
Temos, portanto, uma Framework sobre Framework(s). Mais
precisamente, o sentido dado é de uma framework agregadora de outras
frameworks, ao invés de um framework que descreve outras frameworks,
algo que o prefixo meta poderia sugerir.
Epistemologia à parte, de que raio é que estou falando?
Estou falando de agregadores de frameworks, neste caso em java, que
conjugam um conjunto de frameworks base, ligando as diversas peças e
facilitando o uso por parte do utilizador. Desta forma, os diversos
componentes estão agregados de uma forma minimamente provada ou testada
e o tempo de configuração do projeto é incrivelmente reduzido. Podem
inclusive servir como objeto de estudo para observar boas práticas.
Embora seja contra tudo o que seja idéia de criar frameworks base
internas a empresas e usar sempre produtos open-source, meta-frameworks
são úteis e não são mais que uma definição formal da pilha tecnológica
do projeto ou, se a empresa trabalhar dessa forma, da pilha
tecnológica da empresa.
Iniciar um projeto deverá ser tão simples como gerar uma
estrutura base do projeto, já com todos os componentes wired up e
pronta a compilar. Também deve ser possível importar o projeto do IDE
de eleição da pessoa. Repito, da pessoa. Ao contrário do que acontece
em muitas empresas, na minha opinião o IDE deve ser uma, sendo que a
maioria das frameworks disponibilizam pelo menos para Eclipse e
Netbeans.
No paradigma web, poderíamos ter uma framework que junta uma
tecnologia de mapeamento OR, uma de caching, uma de Dependency
Injection/Inversion of Control, uma de apresentação, uma de templating
e mais quantas sejam necessárias; mas podemos aplicar isto a qualquer
paradigma que queiramos.
Destaco as seguintes frameworks (que são as que conheço):
- Keel – O projecto Keel
está morto (não há atividade aparente desde 2004). Apenas é
interessante por ter sido a primeira framework deste gênero com que
tive contato. - Appfuse – O Appfuse é provavelmente o projeto deste gênero com maior sucesso e maior disseminação. Liderado pelo Matt Raible, reconhecido especialista em tecnologias web, o Appfuse é, na realidade, uma coletânea de meta-frameworks. Baseia-se no Maven, usando archetypes,
para rapidamente criar esqueletos de projetos. Depois é possível gerar
o projeto para o IntelliJ IDEA, Eclipse ou Netbeans e usar qualquer
uma das bibliotecas disponíveis no Reference Guide – é possível rapidamente montar um sistema com muito pouco trabalho. O Appfuse, como usa POJOs e Spring, possibilita criar CRUDs rapidamente com uma simples ação Maven. - IWebMvc – O IWebMvc é a mais
recente meta-framework de que tomei conhecimento. É criada por um
senhor chamado Jose Noheda, que é o responsável pela integração com
Spring no projecto DWR. É com naturalidade então que ele criou uma
meta-framework que agrega DWR + Dojo + Spring + Hibernate/JPA. Ainda está na sua primeira versão, mas dada a qualidade do DWR isto promete. Certamente uma meta-framework a analisar. - Parancoe – Parancoe é uma meta-framework criada pelo Lucio Benfante, líder do JUG Padova. A pilha tecnológica de Parancoe é DWR + Spring MVC + Spring + Hibernate/JPA que é uma solução que considero ser muito prática e uma excelente conjugação de tecnologias. A característica técnica mais destacada são os DAOs genéricos que não
requerem implementação. Para quem gosta de DAOs, pode ser bastante útil. Para verem um site feito em Parancoe, podem consultar o JUGEvents que usamos para os registros no PTJUG.
Penso que qualquer uma destas últimas vale a pena uma voltinha!