Spring Framework
O Spring atualmente possui diversos módulos como Spring Data (trata da persistência), Spring Security (trata da segurança da aplicação) entre outros módulos. Mas o principal (core) pode ser utilizado em qualquer aplicação Java, as principais funcionalidades são a injeção de dependência (CDI) e a programação orientada a aspectos (AOP), cabe ao desenvolvedor dizer ao Spring o que quer usar. O que faz dele uma poderosa ferramenta, pois não existe a necessidade de se arrastar todas as ferramentas do framework para criar uma aplicação simples.
NetBeans ou Eclipse e baixar a biblioteca do Spring.
Documentação:
http://spring.io/docs
Vantagens:
Testabilidade
Liberdade para trabalhar na View
Integração simples com outros frameworks
Suporte a varias Views Freemaker,JSP, Velocity
Simplificação no código da aplicação
Desvantagens:
Tratar erros como 400,404,500 na são simples de tratar
Pouco componentes de tela feitos
A cadeia de objetos pode se tornar muito grande.
Quando é utiliza a Di baseada em propriedade (injeção por métodos),
faz-se necessário marcar suas dependências como publicas.
Opinião sobre o Framework Spring:
Achei o Spring interessante por que ele é modular, sendo assim o usuário pode instalar só módulos que realmente ele vai usar.