Uma abordagem ao Java EE 6

40
Daniel Campos e Ernesto Oliveira Uma abordagem ao Java EE 6

description

Apresentação que abordou os conceitos do Java EE assim como as novidades da versão 6, focando em Servlets 3.0 e JSF 2.0, mostrando exemplos práticos e aplicações do zero. Ao final, foi apresentado em execução alguns dos melhores RIAs do mercado.

Transcript of Uma abordagem ao Java EE 6

Page 1: Uma abordagem ao Java EE 6

Daniel Campos e Ernesto Oliveira

Uma abordagem ao Java EE 6

Page 2: Uma abordagem ao Java EE 6

Tópicos Abordados JavaEE, o que é?; Arquitetura MVC; As novidades do Java EE 6; RIA e exemplos práticos; Próximos passos.

www.mgjug.com.br

Page 3: Uma abordagem ao Java EE 6

JavaEE, o que é?Conjunto de bibliotecas (API);Padrão de desenvolvimento;Componentes modulares;Executada em um servidor:

Web container:Tomcat.

Application Server:Glassfish; JbossAS.

www.mgjug.com.br

Page 4: Uma abordagem ao Java EE 6

Arquitetura MVCModel-View-Controller

www.mgjug.com.br

Page 5: Uma abordagem ao Java EE 6

As novidades do Java EE 6

www.mgjug.com.br

Page 6: Uma abordagem ao Java EE 6

As novidades do Java EE 6Servlet 3.0

www.mgjug.com.br

Como é no Servlet 2.5; Como está no Servlet 3.0; Modularização do web.xml; Servlets em tempo de execução; Asynchronous Processing.

Page 7: Uma abordagem ao Java EE 6

As novidades do Java EE 6Como é no Servlet 2.5

www.mgjug.com.br

Declarações extensas no arquivo web.xml.

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns=“http://java.sun.com/xml/ns/javaee” xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd” version="2.5">

<display-name>Aplicação WEB</display-name><servlet>

<servlet-name>HelloWorld</servlet-name><servlet-class>com.webapp. HelloWorld</servlet-class>

</servlet><servlet-mapping>

<servlet-name>HelloWorld</servlet-name><url-pattern>/hello</url-pattern>

</servlet-mapping></web-app>

Page 8: Uma abordagem ao Java EE 6

As novidades do Java EE 6Como é no Servlet 2.5

www.mgjug.com.br

public class HelloWorld extends HttpServlet { @Overrideprotected void doGet(HttpServletRequest request, HttpServetResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println(“MGJUG"); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }}

Page 9: Uma abordagem ao Java EE 6

As novidades do Java EE 6 Como está no Servlet 3.0

www.mgjug.com.br

Uso de anotações (annotations) ao invés de XML.

@WebServlet(“/hello”)public class HelloWorld extends HttpServlet { @Overrideprotected void doGet(HttpServletRequest request, HttpServetResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter();...

Page 10: Uma abordagem ao Java EE 6

As novidades do Java EE 6 Como está no Servlet 3.0

www.mgjug.com.br

@WebServlet(value="/hello“, initParams={@WebInitParam(name=“jug",value="mgjug")})public class HelloWorld extends HttpServlet { ...

@WebServlet(urlPatterns={"/hello","/hello2"})public class HelloWorld extends HttpServlet {...

Configurando um servlet utilizando os atributos value e initParams:

Configurando várias url’s utilizando o atributo urlPatterns:

Lembre-se, não é possível ter ao mesmo tempo os atributos value e urlPatterns!

Page 11: Uma abordagem ao Java EE 6

As novidades do Java EE 6 Como está no Servlet 3.0

www.mgjug.com.br

Outras annotations:@WebFilter;@WebListener;

Page 12: Uma abordagem ao Java EE 6

As novidades do Java EE 6 Servlet 3.0: Modularização do web.xml

www.mgjug.com.br

Organização; Pode utilizar as mesmas tags do web.xml. Ex

servlet,servlet-mapping, etc.; A ordem de carga dos web-fragments pode ser definida; Localização (META-INF ou WEB-INF/lib).

<web-fragment> <name>Fragmento_A</name> </web-fragment>

<web-fragment> <name>Fragmento_B</name> </web-fragment>

web-fragment.xml

Page 13: Uma abordagem ao Java EE 6

As novidades do Java EE 6 Servlet 3.0 : Modularização do web.xml

www.mgjug.com.br

<absolute-ordering> <name>Fragmento_B</name> <name>Fragmento_A</name>

</absolute-ordering>

web.xml

Definindo a ordenação no web.xml;

Page 14: Uma abordagem ao Java EE 6

As novidades do Java EE 6 Servlet 3.0: Servlets em tempo de execução

www.mgjug.com.br

Interface ServletContext com novos métodos; Dispensa utilização de @WebServlet.

try{ ProgrammaticallyConfiguredServlet servlet = servletContext. createServlet(ProgrammaticallyConfiguredServlet.class); servletContext.addServlet("ProgrammaticallyConfiguredServlet“, servlet); ServletRegistration servletRegistration = servletContext.getServletRegistration( "ProgrammaticallyConfiguredServlet"); servletRegistration.addMapping("/ProgrammaticallyConfiguredServlet");}catch (ServletException servletException){ servletContext.log(servletException.getMessage());}

Page 15: Uma abordagem ao Java EE 6

As novidades do Java EE 6 Servlet 3.0: Asynchronous Processing

www.mgjug.com.br

Utilização de mais uma Thread por requisição; Libera thread para outras requisições; Configuração feita através do atributo asyncSupported =

true.

@WebServlet(name = "AsynchronousServlet", urlPatterns = {"/AsynchronousServlet"}, asyncSupported = true)

Page 16: Uma abordagem ao Java EE 6

www.mgjug.com.br

Servlet 3.0Exemplo Prático

Page 17: Uma abordagem ao Java EE 6

As novidades do Java EE 6 JavaServer Faces (JSF2.0)

www.mgjug.com.br

Facelets;Faces-config.xml opcional;Localização padrão de arquivos de

recurso;Suporte nativo à Ajax;

Page 18: Uma abordagem ao Java EE 6

As novidades do Java EE 6 JSF 2.0: Facelets

www.mgjug.com.br

Novo padrão do JSF para camada de visão;Versões antigas utilizavam JSP;XHTML, ganho de desempenho (30% a

50%);Facilidade na criação e reutilização de

templates;Independende de web container;Criação de componentes reutilizáveis.

Page 19: Uma abordagem ao Java EE 6

As novidades do Java EE 6 JSF 2.0: Facelets

www.mgjug.com.br

Facelets x JSP

JSP é compilada, executada, produzido o html e enviado ao browser;

Facelets utiliza processo rápido de compilação SAX-parser e foi concebido respeitando o ciclo de vida da árvore de componentes do JSF.

Page 20: Uma abordagem ao Java EE 6

As novidades do Java EE 6 JSF 2.0: Facelets

www.mgjug.com.br

JSP compilada

public class _LOGIN extends com.orionserver.http.OrionHttpJspPage {   // ** Begin Declarations // ** End Declarations  public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException {  response.setContentType( "text/html;charset=ISO-8859-1"); /* set up the intrinsic variables using the pageContext goober: ** session = HttpSession ** application = ServletContext ** out = JspWriter ** page = this ** config = ServletConfig ** all session/app beans declared in globals.jsa */

Page 21: Uma abordagem ao Java EE 6

As novidades do Java EE 6 JSF 2.0: Facelets

www.mgjug.com.br

__jsp_tag_ctru0.setPageContext(pageContext); __jsp_tag_ctru0.setParent(null); __jsp_tag_starteval=__jsp_tag_ctru0.doStartTag(); if (OracleJspRuntime.checkStartBodyTagEval(__jsp_tag_starteval))

out.print(TelaPBAb.getWebRootApp(pageContext) +"/css/sicaf/sicaf.css" ); __ojsp_s_out.write(__oracle_jsp_text[1]); out.print(TelaPBAb.getWebRootApp(pageContext) +"/css/sicaf/unifw.css" ); __ojsp_s_out.write(__oracle_jsp_text[2]);

__oracle_jsp_text[10] = "/js/sicaf/unifwMenuInit.js\"></script>\r\n<script language=\"JavaScript1.2\" fptype=\"dynamicanimation\" src=\"".getBytes("ISO8859_1");

JSP compilada

Page 22: Uma abordagem ao Java EE 6

As novidades do Java EE 6 JSF 2.0: Facelets

www.mgjug.com.br

Customização / Reutilização de componentes

< Cabeçalho omitido >

<ui:component> <h:outputLabel for="#{id}" value="#{label}" /> <h:inputText id="#{id}" value="#{value}" /> <h:message for="#{id}" /></ui:component>

itemFormulario.hxtml

Page 23: Uma abordagem ao Java EE 6

As novidades do Java EE 6 JSF 2.0: Facelets

www.mgjug.com.br

< Cabeçalho omitido >

<facelet-taglib> <namespace>http://exemplo.com.br/jsf</namespace> <tag> <tag-name>itemFormulario</tag-name> <source>itemFormulario.xhtml</source> </tag></facelet-taglib>

Customização / Reutilização de componentes

meuProjeto.taglib.xml

Page 24: Uma abordagem ao Java EE 6

As novidades do Java EE 6 JSF 2.0: Facelets

www.mgjug.com.br

< Cabeçalho omitido >

<context-param> <param-name>facelets.LIBRARIES</param-name> <param-value>/WEB-INF/facelets/meuProjeto.taglib.xml</param-value></context-param>

Registrando a Taglib

Customização / Reutilização de componentes

web.xml

Page 25: Uma abordagem ao Java EE 6

As novidades do Java EE 6 JSF 2.0: Facelets

www.mgjug.com.br

<html xmlns=http://www.w3.org/1999/xhtml xmlns:custom="http://exemplo.com.br/jsf">

<body> <custom:itemFormulario id="username" label=“Login:" value="#{loginController.username}" /></body>

Utilização

Customização / Reutilização de componentes

minhaPagina.xhtml

Page 26: Uma abordagem ao Java EE 6

As novidades do Java EE 6 JSF 2.0: Faces-config.xml opcional

www.mgjug.com.br

JSF 1.2• Definição de managed-bean;• Definição de regras de navegação.

Page 27: Uma abordagem ao Java EE 6

As novidades do Java EE 6 JSF 2.0: Faces-config.xml opcional

www.mgjug.com.br

<faces-config version="2.0"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd><managed-bean> <managed-bean-name>UsuarioManagedBean</managed-bean-name> <managed-bean-class>br.com.UsuarioManagedBean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope></managed-bean> <navigation-rule> <from-view-id>/index.xhtml</from-view-id> <navigation-case> <from-outcome>inserir</from-outcome> <to-view-id>/usuario/cadastrar.xhtml</to-view-id> </navigation-case> </navigation-rule></faces-config>

Page 28: Uma abordagem ao Java EE 6

As novidades do Java EE 6 JSF 2.0: Faces-config.xml opcional

www.mgjug.com.br

JSF 2.0• Managed-bean anotado na própria

classe;• Regras de navegação utilizam o

nome do arquivo .xhtml (por default) através do action value (command link ou command button).

Page 29: Uma abordagem ao Java EE 6

As novidades do Java EE 6 JSF 2.0: Faces-config.xml opcional

www.mgjug.com.br

Classe

@ManagedBean(name = "login")@RequestScopedpublic class LoginManagedBean {

Arquivo .xhtml

<h:commandButton action="usuario/cadastrar" value="Cadastrar" />

Page 30: Uma abordagem ao Java EE 6

As novidades do Java EE 6 JSF 2.0: Localização padrão de arquivos de recurso

www.mgjug.com.br

Resources são artefatos que uma página JSF precisa para renderizar devidamente;CSS;Javascript;Imagens;

Localização (Raíz ou dentro do META-INF).

Page 31: Uma abordagem ao Java EE 6

As novidades do Java EE 6 JSF 2.0: Localização padrão de arquivos de recurso

www.mgjug.com.br

Por exemplo, podemos colocar um arquivo de estilo chamado styles.css no caminho/resources/css/styles.css.

Em nossas páginas JSF, nós podemos chamá-lo usando a tag <h:outputStylesheet>:

<h:outputStylesheet library="css" name="styles.css"/>

O valor do atributo library deve ser equivalente ao subdiretório de resources, nesse caso, css.

Exemplos para Javascript e Imagens:

<h:outputStylesheet library="css" name="styles.css"/>

<h:graphicImage library="images" name="logo.png"/>

Page 32: Uma abordagem ao Java EE 6

www.mgjug.com.br

JSF 2.0Exemplo Prático

Page 33: Uma abordagem ao Java EE 6

RIA – Rich Internet Application

www.mgjug.com.br

ZK Framework;Richfaces;Apache Trinidad;Icefaces;Primefaces;Vaadin.

Page 34: Uma abordagem ao Java EE 6

www.mgjug.com.br

RIAExemplo Prático

Page 35: Uma abordagem ao Java EE 6

Próximos passos

www.mgjug.com.br

Page 36: Uma abordagem ao Java EE 6

Próximos passos

www.mgjug.com.br

Comunidades virtuais•http://www.portaljava.com•http://www.guj.com.br

Grupos de usuários•http://www.soujava.org.br•http://www.mgjug.com.br•http://www.rsjug.org•http://www.dfjug.org

Cursos on-line•http://jedi.wv.com.br

Page 37: Uma abordagem ao Java EE 6

Próximos passos

www.mgjug.com.br

Download JDK•http://www.oracle.com/technetwork/java/javase/downloads/index.html

Download Netbeans IDE•http://www.netbeans.org

Download Eclipse IDE•http://www.eclipse.org

Page 38: Uma abordagem ao Java EE 6

MGJUG

www.mgjug.com.br

• Divulgação de vagas de emprego;• Divulgação de eventos;• Dúvidas;• Novidades;

JUG Leader :Adriano de Pinho Tavares - [email protected]

Coordenadores:Daniel Felicíssimo Campos - [email protected] Alvares Barbosa Junior - [email protected] Aurélio de Souza Mendes - [email protected]íades Araujo - [email protected] G. Souza - [email protected] Carvalho - [email protected]

+ de 500 membros

[email protected]

Page 39: Uma abordagem ao Java EE 6

Perguntas?

www.mgjug.com.br

Page 40: Uma abordagem ao Java EE 6

Obrigado!

www.mgjug.com.br