saoj,
O JBoss, por exemplo, é um container JavaEE. Possui Servlet Container, EJB Container, etc.
O MyContainer provê recursos similares aos que o JBoss, por exemplo, oferece. Mas de forma mais leve, sem a robustez que o JBoss possui, pois, o foco do MyContainer é para ser utilizado em ambiente de desenvolvimento e não de produção.
O MyContainer não se propõe em momento algum ser um servidor de aplicações do porte do JBoss, Glassfish, etc.
Tentando exemplificar com situações reais quais as dificuldades que o MyContainer se propõe a resolver :
Pergunta: Para que ter um container JEE voltado para desenvolvimento e testes?
Resposta: Para não ter que subir containers JEE durante o desenvolvimento para verificar se o EJB que foi implementado está funcionando ou para verificar se a página que eu desenvolvi em JSF está alinhada e com o estilo correto.
Fato: Mas eu não preciso subir um servidor de aplicações para testar minha aplicação. Para testar meu serviço, basta eu escrever um teste unitário (com JUnit, por exemplo), e para testar se minha página está do jeito que eu queria, basta eu subir um Servlet Container (Jetty, por exemplo) com meu war instalado.
Pergunta: Como implementar e executar testes de serviços que dependem de recursos externos, por exemplo, um outro EJB ou fazer uma busca em um banco de dados? E de onde vem os dados para serem apresentados na minha página JSF?
Resposta: Você pode mockar os serviços dos quais o serviço que você está querendo testar depende e pode mockar os resultados de sua busca no banco de dados. Na parte Web, os dados também podem ser mockados.
Fato: Escrever e manter mocks é trabalhoso. E mockar o resultado de sua busca no banco de dados implica em você não testar a busca. E como você é um bom desenvolvedor, você vai implementar esse teste separadamente, fazendo com que a busca seja realmente executada no banco de dados.
Mais um fato: Para testar a busca real no banco de dados, você vai criar um arquivo SQL contendo seus adorados dados de teste. Que também é de difícil manutenção, e não possui um refactoring amigável.
Com o MyContainer:
- Você pode escrever testes unitários para o seu serviço provendo os recursos dos quais ele depende de forma rápida e eficiente;
- Você pode subir sua aplicação web disponibilizando acesso aos serviços reais sem perda de desempenho, com isso, você não precisa mais mockar seus dados;
- Você não precisa mais escrever arquivos SQL contendo seus dados de teste. Você inserir seus dados de teste através de código Java, utilizando seus objetos de domínio. Assim, os problemas de manutenção praticamente não existem.
Tudo isso, com fácil configuração e sem deixar o seu processo de build extremamente lento.
Um abraço!