Não sou iniciante em java mas sou iniciante em usar frameworks, já li matérias e tutoriais e cada sempre diz que é melhor que o outro, mas mesmo assim fiquei com dúvidas de quais são as vantagens que um tem sobre o outro.
JSF é um framework de controle ou só visão? É que fico meio confuso pq vejo uns tutos aqui na net com JSF +Struts ou Spring + Struts ou JSF +Spring, é que não entendo essa mistura de framework com framework
Parece que todos são de controle, então pq misturam eles?
Nesse caso, nenhuma, pois cada um serve a um propósito diferente:
- Struts2: view-controller
- JPA: persistência (em tempo, JPA é uma especificação implementada por frameworks, como Hibernate e TopLink)
- Spring: inversão de controle e injeção de dependência
Dessas 3 categorias, a que mais apresenta variedade é o view-controller:
-view-controller: Strus2, JSF (e todas suas implementações), VRaptor, MetaWai, Wicket, Play, GWT e por aí vai
- IoC e DI: Spring, Guice e CDI
- persistência: JPA (Hibernate, TopLink, EclipseLink, etc.) , iBatis, JDBC puro
Ou seja, você deve comparar frameworks dentro de cada categoria, e se for o caso, combinar um de cada categoria. Como você está começando com frameworks (assim como eu) vale a pena visitar o site de cada um deles para ter uma idéia do que cada um faz.
Ok, entendi sobre JPA e Struts 2mas vou ser sincero e dizer que não entendi ainda o Spring e o JSF.
O Spring é um framework que serve para você gerenciar as dependências entre suas classes. Por exemplo, você tem uma interface no seu sistema chamada ClienteDAO. Essa interface tem várias implementações ClienteDAOHibernate, ClienteDAOJdbc etc. Mesmo que você queira usar apenas a interface, na hora de instanciar o objeto você precisa especificar a implementação, na hora de criar o objeto com new. No final das contas, você ainda está acoplando suas classes. Com a injeção de dependência, você simplesmente declara a variável ClienteDAO e configura qual implementação deve ser fornecida em um XML, por exemplo, e o framework cuida de instanciar a classe para você.
O JSF também é um framework front-controller, mas assim como o JPA, ela é uma especificação. Existem várias implementações do JSF: Mojarra, MyFaces, PrimeFaces, RichFaces e IceFaces são os mais famosos.
“Ok, entendi sobre JPA e Struts 2mas vou ser sincero e dizer que não entendi ainda o Spring e o JSF.”
Não leve ao pé da letra… mais para você intender JSF seria um concorrente do Struts
Bem resumidamente,O JSF abstrai a complexidade de comunicar a UI com o backend.O problema é que ele tem sua própria complexidade,então precisa conhecer bem pra poder usar direito.