Você está na página 1de 14

TRABALHO ACADMICO EFETIVO

SISTEMAS DE INFORMAO
Engenharia de Software

Frameworks para web em JAVA

Thiago de Oliveira Barreto Ellera


Una-MG, 23 de setembro de 2014

Sumrio
Introduo.............................................................................................................................................................................3
Frameworks..........................................................................................................................................................................4
JSF...................................................................................................................................................................................4
Porque utilizar o JSF?...............................................................................................................................................4
Struts...............................................................................................................................................................................6
Qual a funcionalidade do Struts?............................................................................................................................7
Entendendo o Struts:.................................................................................................................................................7
Hibernate.........................................................................................................................................................................8
Mapeando a sua Tabela:..........................................................................................................................................9
Spring.............................................................................................................................................................................11
O que o framework Spring?................................................................................................................................11
Bibliografia:........................................................................................................................................................................14

Introduo

Nesse trabalho irei apresentar alguns frameworks para web em java, framework uma
aplicao que prov uma soluo para uma famlia de problemas usando um conjunto de
classes e interfaces que devem ser flexveis para permitir a construo de aplicaes com
o mnimo de esforo. Nesse trabalho irei apresentar os frameworks JSF, Struts, Hibernate
e Spring.

Frameworks

JSF
Segundo o livro Desenvolvendo aplicaes para web de Edson Gonalves o
javaserver faces uma tecnologia do mundo de java ee e desenhado para simplificar o
desenvolvimento de aplicaes web. Jsf toma fcil o desenvolvimento atravs de
componentes de interface de usurio (gui) e conecta esses componentes a objetos de
negcios.Tambm automatiza o processo de uso de javabeans e navegao de pginas.
JavaServer Faces (JSF) um framework de interface de usurio para
desenvolvimento de aplicaes web Java. Ele possui um design para facilitar
significativamente o trabalho de escrever e manter aplicaes wen que rodam em
servidores de aplicaes Java e renderizam suas interfaces de usurio (telas) de volta
para o cliente (navegador) solicitante. (JSR 314: JavaServer Faces 2.0 Specification)
O JSF utiliza o padro de projeto Model-View-Controller (MVC) para facilitar o
desenvolvimento das telas, onde:
- No View teremos as pginas .xhtml que sero responsveis apenas pela renderizao
das pginas.
- No Model teremos o ManagedBean que uma classe que ir executar as aes da
pgina e possuir os atributos que sero apresentados pela tela.
- E o Controller gerenciado pelo JSF, mais especificamente pelo FacesServlet que ir
redirecionar as chamadas de pginas, fazer as converses das tas JSF para HTML e
outros.
Uma das vantagens de utilizar o JSF que a pessoa que escreve as pginas
usando as tags do JSF no precisa saber programar em Java, portanto voc pode deixar
que o web designer desenhe o layout de todas as pginas enquanto outra pessoa pode ir
criando as aes das telas e a parte de negcio da aplicao.
Porque utilizar o JSF?
Facilidade de desenvolver aplicaes web:
No desenvolvimento das telas os componentes do JSF so escritos como tags
simples, onde uma pessoa que no programa nada em Java pode muito bem criar timas
telas web.

Na tela todos os valores so apenas textos e nem sempre nos objetos temos
apenas atributos String, com o JSF os valores dos componentes podem ser diretamente
associados aos atributos objetos Java criados sendo feita automaticamente a busca (get)
e alterao (set) de seus valores, sem tem quer fazer diversas converses de String para
os tipos de dados comuns (boolean, int, long, double e outros).
A converso de tipos conhecidos feita automaticamente, tambm possvel usar
os conversores prontos para por exemplo Date ou BigDecimal e tambm criar um
conversor para os seus prprios objetos.
Podemos validar o valor de entrada dos inputText (caixas de texto), para saber se um
campo obrigatrio foi preenchido, se a quantidade de caracteres mnimas foi digitado, se
a quantidade de caracteres no ultrapassou o limite e outros. Podemos usar componentes
para validao do prprio JSF ou criarmos os nossos prprios componentes de validao
personalizados.
Com arquivos .properties podemos internacionalizar a aplicao para diversos
idiomas. Os properties so arquivos de textos baseados em chave=valor. A partir de uma
chave podemos obter o seu valor, ento quando precisamos adicionar uma novo idioma
ao projeto como o ingls, por exemplo: podemos adicionar no final do arquivo a sigla en
(uj_en.properties) e traduzimos a parte do valor das propriedades para ingls,
automaticamente quando o navegador (browser) estiver configurado com o idioma ingls
o JSF ir ler o arquivo de propriedades com a final _en e pegar todos os textos
traduzidos.
Caso algum componente no faa tudo o que voc precisa possvel facilmente
criar uma subclasse deste componente e melhorar ou adicionar novas funcionalidades,
podemos tambm criar os nossos prprios componentes de tela.
possvel criar pginas de modelo (template) com a estrutura base para outras
telas, aproveitando o cdigo e diminuindo a alterao do cdigo em muitas telas.
Os componentes podem funcionar de forma assncrona com AJAX, fazendo requisies e
alterando a menor quantidade possvel de informaes da tela.
Existem

muitos

componentes

de

terceiros

como

RichFaces,

MyFaces,

PrimeFaces IceFaces e outros que podem ser adicionados ao projeto para aumentar
ainda mais a quantidade de componentes de tela e funcionalidade.

Struts
Struts (Dcio, 2010) um framework, que fornece aos desenvolvedores um conjunto de
componentes estruturais, um software de cdigo aberto (open-source) que auxilia na
construo de aplicaes web de uma forma simples e rpida. Ele construdo em Java,
e seu corao consiste numa camada de controle flexvel baseada nas tecnologias
JavaBeans, Servlets Java, ResourceBundles e XML.Foi escrita por Craig McClanahan
entre maio de 2000 e abril de 2001, quando foi lanada a verso 1.0 (Dcio, 2010), e
desde ento vem sendo melhorado pela comunidade open-source. Foi desenvolvida com
o objetivo de fornecer uma framework para facilitar o desenvolvimento de aplicaes para
web. Ele mantido pela Apache Software Foundation (ASF) como parte de seu projeto
Jakarta.
O Struts favorece o desenvolvimento de aplicaes seguindo o paradigma MVC (ModelView-Controller). A arquitetura MVC (Modelo-Visualizao-Controle) um padro que
separa de maneira independente o Modelo, que representa os objetos de negcio (Model)
da camada de apresentao, que representa a interface com o usurio ou outro sistema
(View); e o Controle de fluxo da aplicao (Controller). O Struts fornece um componente
Controller e se integra a outras tecnologias para oferecer suporte aos componentes Model
(como JDBC, EJBs, etc.), e View (como JSP, XSTL, etc.). A sua abordagem adota um
padro do tipo preencha as lacunas para a criao de Softwares, aliviando grande parte
do esforo empregado na criao de um novo projeto.
O Struts est disponvel para o pblico, sem que seja cobrada alguma taxa, sob a licena
da Apache Software License. No h restries de uso deste software, podendo ser
empregado em qualquer ambiente de desenvolvimento.
O Struts um framework, baseado em open-source pelo projeto Jakarta, auxiliando a
criao de aplicaes para a Web. O Struts foi criado em Java, e seu ncleo formado
por uma camada flexvel, proveniente das tecnologias Java Servlets, JavaBeans e XML.
Contamos ainda com o desenvolvimento de aplicaes do moedlo MVC (Model-ViewController).
O Struts possue um componente denominado Controller que se integra a tecnologias que
fornecem suporte aos componentes Model (como JDBCe EJBs), e View (como JSP e
XSLT).
O Struts um framework desenvolvido a partir de maio de 2000 e teve sua concluso no
meio do ano de 2001, data de incio da primeira verso.

A equipe responsvel pelo projeto foi de cerca de 30 desenvolvedores, incluindo o


renomado Craig R. MacClanahan, pioneiro e arquiteto-desenvolvedor do framework.
O Struts chegou ao ponto de ser o padro de mercado em aplicaes web baseada em
java. Mas como em qualquer projeto de software j se falam em sucessores para o Struts,
como o Java Server Faces (JSF), tambm desenvolvido por MacClanahan.
Qual a funcionalidade do Struts?
Para os desenvolvedores que fazem uso do Struts, h uma observao que trata do
suporte para cada camada da aplicao. Esse nome, Struts, proveniente ao papel
desempenhado nas aplicaes web, que o de fornecimento de toda a estrutura primria
inicial, implementando o controlador para a aplicao, sendo responsvel pela parte de
comunicao e pela integrao entre as camadas de visualizao.

Entendendo o Struts:
Vamos observar o esquema abaixo, e veremos a ordem do MVC, combinados formando o
fluxo correto para uma aplicao com Struts:

Observando a rea de utilizao do Struts, vemos que sua utilizao o ncleo da


operao.
Vejamos agora algumas dessas classes:
1) Action - uma classe Java, que estende o org.apache.struts.Action, sendo o
responsvel pela validao de entrada, acessando as informaes comerciais e
determinando qual ActionForward dever retornar as informaes para o controlador.
2) ActionServlet Realiza o papel de controlador da aplicao, preenchendo o ActionForm
(JavaBean), transmitindo para o Action.
3) ActionForm Onde esto localizadas as propriedades criadas usasndo os diferentes
mtodos para a realizao de um pedido.

Hibernate
Hibernate(Edson 2007) um projeto audacioso que procura ter uma completa soluo
para o problema de gerenciamento de dados persistentes em Java. O Hibernate um
framework que se relaciona com o banco de dados, onde esse relacionamento
conhecido como mapeamento objetolrelacional para Java, deixando o desenvolvedor livre
para se concentrar em problemas da lgica do negcio. Sua simplicidade em
configurao, d ao desenvolvedor algumas regras para que sejam seguidas como
padres de desenvolvimento ao escrever sua lgica de negcios e suas classes
persistentes. De resto, o Hibernate se integra suavemente ao seu sistema se
comunicando com o banco de dados como se fosse diretamente feito por sua aplicao.
Uma mudana de banco de dados, nesse caso, no se torna traumtica, alterando
apenas um ou outro detalhe nas configuraes do Hibernate.
H muito a se falar sobre o Hibemate, mas infelizmente o foco desse captulo est no
desenvolvimento de JavaServer Faces com a um ORM. Por isso, voc vai comear pela
instalao e configurao do Hibemate. Para baixar o Hibemate, entre no endereo
http://www.hibernate.org/6.htmI, e selecione o primeiro I ink existente em Binary Releases,
o package Hibernate Core, que no momento em que esse livro escrito, est na verso
3.2.1.
Hibernate um mecanismo bem simples e poderoso que permite a persistncia de
objetos em banco de dados relacionais de maneira transparente e para qualquer tipo de
aplicao Java (seja ela web-based ou desktop-based). Ou seja, ao invs de perder

tempo escrevendo SQL, misturando estas consultas no meio do seu cdigo Java e ficar
mapeando o resultado de suas consultas para objetos, com o Hibernate voc vai precisar
se preocupar somente com seus objetos (Quirino, 2003).
Entretanto, utilizar o Hibernate no processo de desenvolvimento muito mais fcil que
usar JDBC puro. Par criar com o Hibernate faa o seguinte: criar a tabela no seu banco de
dados dados onde os objetos vo persistir; criar o objeto cujo estado vai ser persistido;
criar um XML, que relaciona as propriedades do objeto aos campos na tabela; criar um
arquivo contendo as propriedades para que o Hibernate se conecte ao bando de dados;

Mapeando a sua Tabela:


Antes de utilizar o Hibernate, voc tem que fazer um arquivo que ir mapear as tabelas
que deseja trabalhar. Como o exemplo simples, apenas uma tabela ser mapeada aqui.
Para um banco de dados, cada linha de uma tabela contm um nome. Na maior parte das
tabelas, sempre h um campo especial, no qual se usa uma chave, conhecida como
chave primria. Essa coluna com uma chave primria, a ID da nossa tabela, visto de
uma forma diferente no modelo orientado a objetos, onde essa identidade no
encontrada dessa forma. Em Java, voc define a identidade dos objetos utilizando um
mtodo como equals(Object object), da maneira que lhe convm. A implementao
padro desse mtodo define a identidade atravs da posio de memria ocupada pelo
objeto.
Como o banco de dados no entende essas informaes orientadas a objetos, a soluo
adicionar aos objetos um identificador no natural, como os que os encontrados em
banco de dados. Dessa forma, o banco de dados e o Hibernate sero capazes de
diferenciar os objetos e montar os seus relacionamentos. Como voc j tem um Bean
Livros criado, a coisa a fazer o arquivo que ir mape-Io. Crie o arquivo listado a seguir,
colocando-o no diretrio classes da sua aplicao. No se esquea que no NetBeans
voc ir definir esse arquivo dentro de Source Packages, fora de qualquer pacote
existente e no Eclipse dentro de src, como j visto na primeira imagem mostrada
deste captulo.
Alm do mais, nem todos os bancos de dados so suportados pelo Hibemate,embora os
mais populares sejam. A seguir voc tem uma listagem dos dialetos possveis de serem
usados, caso voc esteja fazendo os exemplos deste livro com outro banco de dados:

DB2 - org.hibemate.dialect.DB2Dialect
HypersonicSQL - org.hibemate.dialect.HSQLDialect
Informix - org.hibemate.dialect.InformixDialect
logres - org.hibemate.dialect.IngresDialect
Interbase - org.hibemate.dialect.InterbaseDialect
Pointbase - org.hibemate.dialect.PointbaseDialect
PostgreSQL - org.hibemate.dialect.PostgreSQLDialect
Mckoi SQL - org.hibemate.dialect.MckoiDialect
Microsoft SQL Server - org.hibemate.dialect.SQLServerDialect
MySQL - org.hibemate.dialect.MySQLDialect
Oraele (any version) - org.hibemate.dialect.Orac1eDialect
Oraele 9 - org.hibemate.dialect.Oracle9Dialect
Progress - org.hibemate.dialect.ProgressDialect
FrontBase - org.hibemate.dialect.FrontbaseDialect
SAP DB - org.hibemate.dialect.SAPDBDialect
Sybase - org.hibemate.dialect.SybaseDialect
Sybase Anywhere - org.hibemate.dialect.SybaseAnywhereDialect

Spring
Um framework muito popular na comunidade Java o Spring. Idealizado por Rod
Johnson, possui cdigo aberto e foi lanado em maro de 2004. O Spring considerado
por muitos desenvolvedores como o framework mais vitorioso e poderoso disponvel para
a linguagem Java, em decorrncia de sua grande aceitao, possibilidade de integrao e
APIs disponveis. O Spring fornece vrias ferramentas para serem utilizadas em projetos,
por exemplo: Spring Security, Spring Social, Spring MVC, Spring Rich Client, entre outras.
A mais usada com certeza o Container de Inverso de Controle (Inversion of Control
IoC) e Injeo de Dependncias (Dependency Injection DI). A injeo de dependncias
possibilita um baixo nvel de acoplamento entre os mdulos do sistema, e tem como
finalidade injetar em cada componente suas dependncias. A inverso de controle trs o
lema: no nos chame, ns chamamos voc. a tcnica de desenvolvimento na qual um
comportamento do sistema delegado a uma entidade externa, neste caso o Container
IoC do Spring. Isso significa que o Container IoC assume a responsabilidade de criar
novos objetos e destru-los quando necessrio.

Alm disso, o Spring Framework fornece a implementao de vrias especificaes Java


EE, como: JMS, JDBC, JavaMail, JNDI, entre vrias outras. Implementaes como estas
so disponibilizadas atravs de objetos que o Spring chama de template,
como JmsTemplate, HibernateTemplate, RestTemplate, etc. Por exemplo, quem usa o
de SessionFactory, Session e Transaction.Assim, se deve desenvolver o controle de
transaes

controlar

quando

iniciar

fechar

uma

sesso.

Com

uso

do HibernateTemplate tudo isso controlado pelo Spring, visto que ele j possui tudo isso
implementado. Mesmo assim, se voc precisar usar a sua prpria implementao,
tambm pode ter essa possibilidade de integr-la com o Spring.
O que o framework Spring?
O Spring, atualmente na verso 3, nasceu como uma resposta complexidade existente
no uso de EJB (Enterprise Java Beans). Rod Johnson idealizou e o descreveu em seu
livro Expert One-on-One: J2EE Design and Development. O framework baseado nos
padres de projeto inverso de controle (IoC) e injeo de dependncia (DI). No Spring, o
Container IoC se encarrega de instanciar classes de uma aplicao Java e definir as
dependncias entre elas atravs de um arquivo de configurao no formato XML ou
anotaes nas classes, mtodos e propriedades. Desta forma, se permite o baixo
acoplamento entre classes de uma aplicao orientada a objetos.
Este framework composto por recursos organizados em vrios mdulos, como testes
unitrios, web, persistncia, acesso remoto, programao orientada a aspectos, entre
outros. Estes mdulos podem ser implementados separadamente ou em conjunto,
conforme a necessidade do projeto. Isto possibilita que o Spring seja empregado nos mais
variados tipos de aplicao, sendo elas de pequeno, mdio ou grande porte. Com sua
arquitetura baseada em interfaces e POJOs, possui como um dos seus principais
objetivos tornar mais fcil o uso das tecnologias existentes no mercado. Outro recurso
interessante o Lazy Initialization, que permite ao Spring carregar apenas os beans
solicitados. Assim, a aplicao ganha em desempenho porque se um bean for declarado
no contexto, mas no estiver sendo utilizado, ele no ser carregado at que seja
necessrio.
Inicialmente, preciso entender o conceito, adotado pelo Spring, de beans. Para este
framework, qualquer objeto que forma sua aplicao e que est sob controle do Spring,
considerado um bean. Enfim, um bean trata-se apenas de um objeto de sua aplicao e
nada mais. O Container IoC o responsvel pelo gerenciamento destes beans.

Estes beans, entretanto, muitssimo provavelmente possuem dependncias entre si.


Estas dependncias so definidas atravs de metadados. O Container IoC obtm essas
configuraes e, partindo destas configuraes, gerencia a dependncia entre os beans.
Neste contexto, a interface org.springframework.beans.factory.BeanFactoryrepresenta
o Container IoC do Spring. Conforme explicitado anteriormente, uma implementao
desta interface responsvel em realizar o trabalho do Assembler, apresentado na Figura
01. Existem diversas implementaes de BeanFactory, sendo a XmlBeanFactory a
implementao mais comum. Nesta, toda configurao de dependncia entre os objetos
definida em um arquivo XML.

Concluso
Nesse trabalho tentei abordar os principais frameworks em java, procurando definir e
mostrar as suas utilizaes assim como as suas diferenas. Apesar de no ter achado
todos os frameworks nos livros como pedido pelo professor optei por pegar fontes da
internet quando no eram existentes no livro. Com isso o trabalho ficou mais abrangente e
com maior riqueza de informaes sobre os frameworks.

Bibliografia:
GONALVES, E. Desenvolvendo Aplicaes Web com JSP, SERVELTS, JAVASERVER
FACES, HIBERNATE, EJB 3 PERSISTANCE E AJAX; Rio de Janeiro: Cincia Moderna,
2007.
http://imasters.com.br/artigo/4497/java/spring-framework-introducao/
http://www.devmedia.com.br/fundamentos-do-java-struts/7238
http://www.devmedia.com.br/introducao-ao-java-server-pages-jsp/25602