O Projeto
O Esfinge é um framework que possui a
filosofia de reduzir ao máximo a dificuldade no desenvolvimento de
aplicações corporativas em Java. Ele adota uma filosofia de buscar nos
metadados das classes a maior parte das informações necessárias para
diminuir a redundância e a quantidade de código necessária. Tudo isso
é associado a técnicas que permitem a extensibilidade do framework
para situações mais específicas e não previstas. Dessa forma o Esfinge
consegue aliar produtividade com flexibilidade.
Em 2011, iniciou-se o desenvolvimento
do Esfinge Framework 2, o qual consiste na criação de diversos
componentes que utilizam essa filosofia. Dentre os pilares utilizados
na construção do framework estão:
- Trabalhar com a configuração de metadados para customizar
comportamento.
- Utilizar componentes plugáveis que podem ser facilmente inseridos
em uma arquitetura.
- Disponibilizar funcionalidades principais independentes de
frameworks e APIs existentes, possuindo interfaces para que
tecnologias mais específicas possam ser plugadas.
- Trabalhar com metadados extensíveis, permitindo a criação de novos
tipos de metadados pela aplicação.
- Permitir que a equipe de desenvolvimento foque no domínio da
aplicação e gaste o mínimo de tempo com questões de infraestrutura.
Atualmente os fremeworks do projeto Esfinge são:
- QueryBuilder: cria consultas a partir da assinatura de
métodos, dando suporte a diferentes tipos de bancos de dados.
- Comparison: compara duas instâncias de dois objetos da
mesma classe, permitindo a configuração de algoritmos de comparação
para cada propriedade.
- Guardian: realiza controle de acesso através de
configurações, permitindo regras de segurança granulares e a
extensão das políticas.
- AOM Role Mapper: auxilia a criação de aplicações com
modelos de domínio dinâmicos, permitindo o mapeamento de modelos
específicos de um domínio para modelos genéricos, o que permite um
maior reuso de componentes.
- SystemGlue: desacopla a integração de sistemas externos
da funcionalidade principal da aplicação, permitindo que,
dependendo do local onde ela for implantada, diferentes sistemas
possam ser integrados.
Além dos frameworks citados acima estão em desenvolvimento os
seguintes frameworks:
- Gamification: permite que a definição da lógica de
gamification de uma aplicação, com pontos, troféus e etc..., possa
ser feita de forma declarativa e separada da funcionalidade
principal.
- Metadata: define um meta-framework para o
consumo de metadados, simplificando a implementação de frameworks
desse tipo.
- Classmock: é um framework que ajuda a criar testes unitários para componentes que usam reflexão ou anotações. Neste tipo de aulas, o comportamento depende da estrutura da classe. Desta forma, cada caso de teste geralmente funciona com uma classe diferente criada especificamente para o teste. Com o ClassMock é possível definir e gerar classes em tempo de execução, permitindo uma melhor legibilidade de teste e compartilhamento de lógica entre testes.
- ReTest:é uma extensão JUnit que realiza teste aleatório com facilidade e simplicidade. Ele suporta parâmetros de método com anotação de teste e muito mais.