1. Java Enterpise Edition
e as novidades da versão 6
Fabio Velloso
fabio@soujava.org.br
JAVALI@FISL10
2. FISL10 - Fórum Internacional de Software Livre / JAVALI
Esta obra está licenciada sob uma
Licença Creative Commons
http://creativecommons.org/licenses/by-nc-sa/2.0/br/
3. FISL10 - Fórum Internacional de Software Livre / JAVALI
Fabio Velloso
Bacharel em Ciência da Computação pela
Universidade Federal de São Carlos-UFSCar
Fundador e Vice-Presidente do SouJava
Trabalha com tecnologia Java desde 96
Professor de SOA e Web Services do curso de
Pós-Graduação "Lato-Sensu" em
Desenvolvimento de Software para Web da
UFSCar
Arquiteto de Integração e Sistemas na
Telefonica
4. FISL10 - Fórum Internacional de Software Livre / JAVALI
Agenda
Java Enterprise Edition
Java Enterprise Edition 6
Java Authentication SPI for Containers
Contexts and Dependency Injection for JavaEE
(anteriormente WebBeans)
Java API for RESTful Web Services
JavaServer Faces 2.0
Servlets 3.0
EJB 3.1
5. FISL10 - Fórum Internacional de Software Livre / JAVALI
Java Platform
6. FISL10 - Fórum Internacional de Software Livre / JAVALI
Java Enterprise Edition
Especificação de arquitetura para a criação
de aplicações para servidores, exigindo alta
disponibilidade, robustez, segurança,
performance, escalabilidade e
interoperabilidade.
7. FISL10 - Fórum Internacional de Software Livre / JAVALI
Camadas JEE
8. FISL10 - Fórum Internacional de Software Livre / JAVALI
Servlet - Request e Response HTTP
9. FISL10 - Fórum Internacional de Software Livre / JAVALI
Java Web Technologies
10. FISL10 - Fórum Internacional de Software Livre / JAVALI
JavaServer Faces
Framework MVC padrão de JEE
JSR 128
Facilidade de desenvolvimento
Suporte visual de IDE's
Modelo de componentes
Várias implementações
Comunidade Open Source
11. FISL10 - Fórum Internacional de Software Livre / JAVALI
Enterprise Java Beans
Definição:
“Enterprise JavaBeans is a cross-platform component architecture for the
development and deployment of multi-tier, distributed, scalable, object-
oriented Java applications. Enterprise JavaBeans makes it easy to write
business applications as components by providing a set of automatic
services to support scalable transactional application server components.
Enterprise JavaBeans can be deployed on top of existing transaction
processing systems including traditional transaction processing monitors,
web servers, database servers, application servers, etc. “
O único padrão para desenvolvimento de
componentes server side para monitores
transacionais, habilitando o desenvolvimento de
aplicações distribuídas, transacionais, robustas,
escaláveis e seguras.
12. FISL10 - Fórum Internacional de Software Livre / JAVALI
Java EE Timeline
Fonte: TS-5055 (JavaOne 2009)
13. FISL10 - Fórum Internacional de Software Livre / JAVALI
Agenda
Java Enterprise Edition
Java Enterprise Edition 6
Java Authentication SPI for Containers
Contexts and Dependency Injection for JavaEE
(anteriormente WebBeans)
Java API for RESTful Web Services
JavaServer Faces 2.0
Servlets 3.0
EJB 3.1
14. FISL10 - Fórum Internacional de Software Livre / JAVALI
Java Authentication SPI for Containers
JSR 196
Final
Define uma interface padrão para integração
de containers JEE com servidores de
autenticação
Possibilita delegar o processo de autenticação
a um servidor/ externo
Define SPI que amplia os conceitos de JAAS
Define “profiles” que estabelecem contratos
para uso da SPI
15. FISL10 - Fórum Internacional de Software Livre / JAVALI
Java Authentication SPI for Containers
Suporta o modelo de segurança declarativa de JEE
Possibilita a implementação de protocolos complexos
como SOAP
Tokens
SAML
Kerberos service tickets
X509 Certificates
Liberty
16. FISL10 - Fórum Internacional de Software Livre / JAVALI
Java Authentication SPI for Containers
Client Server
Verifica tokens ou Adiciona tokens e
assinaturas assinatura
Extraem datos Chama o Discovery para
Adiciona ao “Security localizar o serviço
Context”
17. FISL10 - Fórum Internacional de Software Livre / JAVALI
Java Authentication SPI for Containers
Servlet
Container Profile
LoginModule Bridge Profile
Define a integração e delega o processamento de
autorização de segurança a um JAAS Login
Module
SOAP Profile
Profiles a definir
Java Message Service
RMI/IIOP (Internet Inter-ORB Protocol)
18. FISL10 - Fórum Internacional de Software Livre / JAVALI
JavaServer Faces 2.0
JSR 314
Final Approval Ballot
Incorporação de Facelets
Suporte a AJAX nativo
<h:commandButton id="btnDeleteSprint"
action="#{sprintManager.remove}" value="Delete"
onclick="jsf.ajax.request(this, event, {execute:
'frmListSprints', render: 'frmListSprints'}); return false;"/>
19. FISL10 - Fórum Internacional de Software Livre / JAVALI
JavaServer Faces 2.0
Composite Componentes:
Componentes customizados mais fáceis de
desenvolver
Não precisa de XML
Não precisa criar CustomTag
É um componente real, pode ter conversores e
validadores
20. FISL10 - Fórum Internacional de Software Livre / JAVALI
JavaServer Faces 2.0
Mínimo de configuração
Mais anotações menos XML
Navegação implícita
Declaração e configuração de
ManagedBeans em anotações
Maior flexibilidade na navegação
Suporte a EL dentro do facesconfig.xml;
Navegação condicional (if) no
facesconfig.xml
21. FISL10 - Fórum Internacional de Software Livre / JAVALI
JavaServer Faces 2.0
Processamento e atualização parcial da árvore
de componentes
Melhor suporte a “Resources” como CSS,
arquivos JavaScript com novas tags:
<h:outputStylesheet library="css/1_1" name="common.css"/>
<h:outputScript library="js" name="menu.js" target="head"/>
Novos escopos :
CustomScope
ViewScope
Acesso via EL #{viewScope.attrName}
22. FISL10 - Fórum Internacional de Software Livre / JAVALI
Servlet 3.0
JSR 315
Proposed Final Draft
Non-blocking I/O
Processamento assíncrono
Maior número de usuários concorrentes
Anotações para declarar Servlets, Filters,
Listeners e segurança
Web.xml opcional, porém se utilizado suas
definições valem sobre as anotações
23. FISL10 - Fórum Internacional de Software Livre / JAVALI
Servlet 3.0
@WebServlet
Classe anotada é um Servlet
Precisa declarar a “URL pattern”
Outros parâmetros são opcionais
Exemplo:
Nome é o full qualified name da
classe
Classe precisa declarar extends
HttpServlet
Métodos doGet, doPost são herdados
24. FISL10 - Fórum Internacional de Software Livre / JAVALI
Servlet 3.0
Exemplos:
@WebServlet(“/hello”)
public class Exemplo extends HttpServlet {
public void doGet(HttpServletRequest req,
HttpServletResponse res) { } }
@WebServlet(urlPatterns=“/hello”, name=”JavaliServlet”,
asyncSupported=true)
public class Exemplo extends HttpServlet {
public void doGet(HttpServletRequest req,
HttpServletResponse res) { } }
25. FISL10 - Fórum Internacional de Software Livre / JAVALI
Servlet 3.0
@WebFilter
Classe anotada é um filtro
Precisa declarar a “URL pattern” do filtro
Outros parâmetros são opcionais
Classe precisa declarar implements Filter
Exemplo:
@WebFilter(“/javaliFilter”)
public class Exemplo implements Filter {
public void doFilter(HttpServletRequest req,
HttpServletResponse res) { } }
26. FISL10 - Fórum Internacional de Software Livre / JAVALI
Servlet 3.0
Pluggability
Modularidade do web.xml com fragmentos
Alterar parâmetros definidos via anotações
Não é necessário escrever todo o web.xml
Exemplos de uso:
Logging e Filters de segurança
Declarar Listeners para executar ações em
diferentes pontos da aplicação
28. FISL10 - Fórum Internacional de Software Livre / JAVALI
Servlet 3.0
Fragmentos podem ser ordenados
Exemplo:
web-fragment1.xml
<web-fragment>
<name>fragmento1</name>
<ordering><after>fragmento2</after></ordering>
</web-fragment>
<after> - carregado após o fragmento descrito
<before> - carregado antes do fragmento descrito
<others> - indica ordem que é carregado na lista
Com <before> - no início
Com <after> - ao final
29. FISL10 - Fórum Internacional de Software Livre / JAVALI
Servlet 3.0
Asynchronous Servlets
Evitar gargalos com recursos como
Conexão JDBC
Web Services
JMS
Outro recurso acessado pela aplicação
Retorna o processamento ao container
Outra thread ou callback retorna o resultado
paralelo executado em paralelo
30. FISL10 - Fórum Internacional de Software Livre / JAVALI
Servlet 3.0
Programmatic Security
Usado quando a segurança declarativa
não é suficiente
Métodos de HttpServletRequest interface:
login
logout
getRemoteUser
isUserInRole
getUserPrincipal
31. FISL10 - Fórum Internacional de Software Livre / JAVALI
Servlet 3.0
Suporte a anotações de seguranca
@RolesAllowed
Grupo que tem acesso ao recurso
@DenyAll
Recurso não acessíveis a usuário
@PermitAll
Recurso acessível a todos usuários
@TransportProtected
Uso de SSL
Aplicável a classes e métodos
33. FISL10 - Fórum Internacional de Software Livre / JAVALI
Servlet 3.0
@WebInitParam
@WebServlet(name="hello", urlPatterns={"/hello"},
initParams={ @InitParam(name="evento", value="Javali"),
@InitParam(name="local", value="Porto Alegre") })
public class JavaliServlet extends javax.servlet.http.HttpServlet{ }
@MultipartConfig
Define o mime/multipart suportado pelo
Request
34. FISL10 - Fórum Internacional de Software Livre / JAVALI
JSR 299
Contexts and Dependency Injection for
JavaEE (anteriormente WebBeans)
Public Review Ballot
Modelo unificado de injeção de dependência
Modelo para uso integração entre camada
Web e transacional
Possibilita o uso direto de um EJB em
páginas JSF
Define uma Service Provider Interface (SPI)
para integração de novas anotações
35. FISL10 - Fórum Internacional de Software Livre / JAVALI
JSR 299
O que pode ser injetado
Classes Java
EJB Session Beans
Java EE resources (Datasources, JMS
topics/queues, etc)
Persistence contexts (JPA EntityManager)
Referências a Web services
Referências remotas a EJBs
Framework é aberto a novos tipos
36. FISL10 - Fórum Internacional de Software Livre / JAVALI
JSR 299
@Named(“<nome>”)
Habilita uso com Unified Expression language
expressions
Nome definido em Nome default da classe
@Named public
public @Named
@Named(“hello”) class Hello {
class Hello { public String sayHello
(String name) {
public String sayHello
return “hello “ + name;
(String name) {
}
return “hello “ + name;
}
}
}
37. FISL10 - Fórum Internacional de Software Livre / JAVALI
JSR 299
Unified EL
Objeto pode ser usado diretamente em
uma página JSP ou JSF:
<h:commandButton value=”Say Hello”
action=”#{hello.sayHello}”/>
<h:commandButton value=”Say Hello”
action=”#{Hello.sayHello}”/>
38. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
JSR 318
Proposed Final Draft – Março 2009
Versão final planejada para Q3 2009
Simplificar desenvolvimento
Reduzir número de interfaces
Minimizar uso de deployment descriptors
Java Persistence API (JPA) passa a ser
definida em uma JSR separada (JSR 317)
39. FISL10 - Fórum Internacional de Software Livre / JAVALI
JEE 6 - Empacotamento simplificado
JEE 5 – WEB e EJB JEE 6
Fonte: TS-5055 (JavaOne 2009)
40. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
Local Business Interfaces opcionais
Empacotamento simplificado
API simplificada de EJB 3.1
Portable JNDI Names
Simple Component Testing
Passam a ser opcionais CMP e JAX-RPC
41. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
Optional Local Business Interfaces
Classe simples, sem uma interface local
Todos métodos públicos são acessíveis
ao cliente
Injeção de dependência com @EJB ou
lookup para a referência do objeto
Client não chama new() do bean
Modelo de programação permanece
igual ao com Local Business Interface
42. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
EJB segue o mesmo modelo de
desenvolvimento atual
@Stateless
public class HelloBean {
public String sayHello(String msg) {
return “Hello “ + msg;
}
}
43. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
Session Bean com Local Business Interface
Fonte: TS-4605 (JavaOne 2009)
44. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
Uso no cliente por injeção de dependência
Chamando diretamente o EJB
@EJB HelloBean hello;
...
hello.sayHello(“FISL”);
JNDI Lookup
@Resource SessionContext ctx;
HelloBean hello = (HelloBean)ctx.lookup(“hello”);
45. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB “Lite”
Subset de EJB 3.1 API para Web Profiler
Expansão da portabilidade de EJBs, sem
perda da portabilidade
Mesma publicação pode ser feita no “Web
Profile” e “Full Profile”
Sem alteração no modelo de
desenvolvimento
Possível pela simplificação do
empacotamento .war
46. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB Profiler's
Lite Full (Lite e as seguintes funcionalidades)
Local Session Bean Message Driven Beans
Annotations /ejb-jar.xml EJB Web Services endpoint
CMT e BMT RMI-IIOP intereoperability
Segurança declarativa 2.x e 3.x Remote view
Interceptor 2.x Local view
JPA 2.0/ JTA 1.1 Timer Service
CMP e BMP
Assynchronous Beans
47. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
Portable JNDI names
Sintaxe:
java:global[/<app-name>]/<module-name>/<bean-
name>[!<fully-qualified-interface-name>]
Por default usa o nome do pacote do bean
Pode ser alterado no application.xml
Pode ser alterado no ejb-jar.xml ou web.xml
Simplifica Local Session lookups entre aplicações
Simplifica o mapeamento de referências a Session
beans entre aplicações
Melhora a portabilidade de clientes remotos
48. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1 - Portable JNDI names
Nome único global
java:global[/<app-name>]/<module-
name>/<ejb-name>
Nome único na mesma aplicação
java:app[/<module-name>]/<ejb-name>
Nome único no módulo
java:module/<ejb-name>
49. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
Exemplo:
package org.soujava;
@Stateless
public class HelloBean implements Hello { ... }
50. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
HelloBean empacotado em helloejb.jar e
helloapp.ear
java:global/helloapp/helloejb/HelloBean
java:global/helloapp/helloejb/HelloBean!
org.soujava.Hello
java:app/helloejb/HelloBean
java:app/helloejb/HelloBean!org.soujava.Hello
java:module/HelloBean
java:module/HelloBean!org.soujava.Hello
51. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
HelloBean empacotado em helloweb.war
java:global/helloweb/HelloBean
java:global/helloweb/HelloBean!org.soujava.Hello
java:app/HelloBean
java:app/HelloBean!org.soujava.Hello
java:module/HelloBean
java:module/HelloBean!org.soujava.Hello
52. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
Singleton
Componente instanciado uma única vez por
aplicação
Criado para compartilhamento e suporte a
acesso concorrente
Em aplicações distribuídas em várias JVMs,
existirá uma instância do componente por
JVM para cada aplicação
53. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
Exemplo Singleton Exemplo Client
@Singleton @Stateless
public class SharedBean { public class FooBean {
private SharedData shared; // Injeção da referência ao
@PostConstruct Singleton bean
private void init() { @EJB
shared = ...; private SharedBean shared;
} public void foo() {
public int getData() { int var = shared.getData();
return shared.data; } } }
}
54. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
Singleton
Necessário controlar:
Concorrência
Integridade de dados
Dois mecanismos:
Container Managed Concurrency
O container controla a concorrência baseado em
anotações ao nível de método
Bean Managed Concurrency
Container habilita acesso total a instância e delega ao
desenvolvedor a responsabilidade de controle
É necessário definir um dos modelos
55. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
Singleton Container Managed Concurrency
@Lock(READ)
Habilita leitura a todos acessos
@Lock(Write)
Controla a concorrência permitindo um
único acesso
@AccessTimeout(value=1,unit=SECONDS)
Aplicavel a classes e métodos
Especifica o tempo de bloqueio antes
do timeout
56. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
Singleton Singleton com Timeout
@Singleton @Singleton
@Lock(READ) public class SharedBean {
public class SharedBean { private SharedData shared;
private SharedData shared; @Lock(READ)
@AccessTimeout(value=1, unit=SECONDS)
public int getData() {
public int getData() {
return shared.data;
return shared.data;
}
}
@Lock(WRITE) public void update(...) {
public void update(...) { // update shared data
// update shared data
}
}
57. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
BeanManaged Concurrency
Controle pelo desenvolvedor
Exemplo:
@Singleton
@ConcurrencyManagement(BEAN)
public class SharedBean {
private SharedData shared;
synchronized public int getData() {
return shared.data;
}
synchronized public void update(...) {
// update shared data
} }
58. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
Singleton é inicializado pelo container no
momento mais apropriado
@Startup indica ao container que o Singleton
deve ser inicializado junto com a aplicação
Exemplo
@Singleton
@Startup
public class StartupBean {
@PostConstruct
private void onStartup() { }
@PreDestroy
private void onShutdown() { }
59. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1
@DependsOn
Define um grau de dependência para
sequência de inicialização de EJBs
Exemplo:
@Singleton
public class B { ... }
@DependsOn(“B”)
@Singleton
public class A { ... }
Container deve garantir que A é inicializado após B
60. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1 – Timer Service
Calendar-based timeout (EJB 2.1)
Persistente (shutdown/restart)
Executado quando “expira”
Exemplo:
ScheduleExpression schedule =
new ScheduleExpression().dayOfWeek(“Sat”).hour(1); //1:00 AM
Timer timer = timerService.createCalendarTimer(schedule);
Novidades com EJB 3.1
Automatic timer creation
Cron-based scheduling
61. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1 – Timer Service
Calendar-based timeout
Semântica similar ao Cron
Criado automaticamente ou por programação
Named attributes
second, minute, hour (default = “0”)
dayOfMonth, month, dayOfWeek, year (default = “*”)
Attribute Syntax
Single value : minute = “30”
Lista : month = “Jan, Jul, Dec”
Faixa : dayOfWeek = “Mon-Fri”
Wild card : hour = “*”
Incremental : minute = “*/10”
62. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1 – Timer Service
Exemplos de Calendar Expression:
“A cada 15 segundos”
(second=”*/15”, minute=”*”, hour=”*”)
“Último domingo de Março às 2h.”
(hour=”2”, dayOfMonth=”LastSun”,month=”Mar”)
“Todo dia 2:30 p.m. U.S. Eastern Time”
(minute=”30”,
hour=”14”,timezone=”America/New_York”)
63. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1 – Timer Service
Automatic Timer Creation
Container cria o timer automaticamente após o
deployment
Equivale a chamada:
TimerService.createCalendarTimer()
Definido por anotação ou no deployment descriptor
ejb-jar.xml
64. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1 – Timer Service
Automatic Timer Creation
Container cria o timer automaticamente após o deployment
Equivale a TimerService.createCalendarTimer()
Definido por anotação ou no deployment descriptor ejb-
jar.xml
Exemplo:
@Stateless
public class SendStatements {
@Resource javax.mail.Session mailSession;
// Callback the last day of each month at 8 a.m.
@Schedule(hour=”8”, dayOfMonth=”Last”)
void sendMonthlyBankStatements() {
}}
65. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1 – Embeddable API
Possibilita execução de EJBs no mesmo
processo de aplicações client com JSE
Mesmo comportamento e ciclo de vida quando
executado em um container JEE
CMT/BMT, injection, threading guarantees
Suporte mandatório mínimo é 3.1 “Lite” API
Opcionalmente pode-se adicionar outras
funcionalidades
66. FISL10 - Fórum Internacional de Software Livre / JAVALI
EJB 3.1 – Embeddable API
Exemplo:
public class BankTester {
public static void main(String[] args) {
EJBContainer container =
EJBContainer.createEJBContainer();
// Acquire Local EJB reference
Bank bank = (Bank) container.getContext().
lookup(“java:global/bank/BankBean”);
testAccountCreation(bank);
}
67. FISL10 - Fórum Internacional de Software Livre / JAVALI
JAX-RS
Java API for RESTful Web Services
JSR 311
Objetivos:
Suporte a RESTful em Java
Programação declarativa
Modelo de anotações
Facilitar o desenvolvimento
JSE5 e JEE5 ou superior
Integrado ao JEE6 (JSR 313)
68. FISL10 - Fórum Internacional de Software Livre / JAVALI
JAX-RS
@Path - Indica que o recurso é exposto como
uma REST Web Services
@GET – Indica que o método Java é acessível
pelo metodo GET HTTP
Exemplo:
@Path("/helloWorld")
public class HelloWorldRest {
@GET
public String sayHello() {
return "hello from Java REST;
}}
http://localhost/SouJava/resources/helloWorld
69. FISL10 - Fórum Internacional de Software Livre / JAVALI
JAX-RS - @Path – sub recursos
Exemplo:
@Path("noticias")
public class ListaNoticias {
@GET
@Path("esporte")
public String getNewsSport() {...}
@GET
@Path("economia")
public String getNewsEconomy() {...} }
http://localhost/fisl/resources/noticias/economia
70. FISL10 - Fórum Internacional de Software Livre / JAVALI
JAX-RS - EJB
EJB Session Bean como serviço REST
Disponível no JEE 6
Exemplo:
@Stateless
@Path("ssb")
public class StatelessSessionRootResource {
@Context private UriInfo ui;
@GET
public String get() {
return "GET: " + ui.getRequestUri().toASCIIString();
}}
71. What is GlassFish ?
• Open Source Community
> Users, Partners, Testers, Developers, ...
> Started in 2005 on java.net
• Application Server
> Java EE 5 and 6 Reference Implementation
> Enterprise Quality and Open Source
> Full Commercial Support from Sun
Creating Quick and Powerful Web Applications with MySQL, GlassFish, and NetBeans/Eclipse 71
72. State of GlassFish
• GlassFish v2
> Java EE 5 Reference Implementation
> Clustering, Load Balancing, High Availability
> Web-based/CLI Administration Console
> .NET 3.x/4.x Web services Interoperability
> Current Release: 2.1
• GlassFish v3
> Java EE 6 Reference Implementation
> Modular (OSGi), Embeddable, Extensible
> Java EE, Rails, Grails, Django, ...
> Current Release: v3 Preview
Creating Quick and Powerful Web Applications with MySQL, GlassFish, and NetBeans/Eclipse 72
73. FISL10 - Fórum Internacional de Software Livre / JAVALI
Conclusão
Facilidade de desenvolvimento
Compatibilidade com versões anteriores
Modelo de anotações
Alterações em todas camadas
GlassFish v3
Java EE 6 Reference Implementation
Modelo robusto para desenvolvimento de
aplicações corporativas
74. FISL10 - Fórum Internacional de Software Livre / JAVALI
Referências
Java Comunnity Process
www.jcp.org
JavaOne
http://www.cplan.com/javaone2009/contentcatalog/
Glassfish
https://glassfish.dev.java.net/
75. FISL10 - Fórum Internacional de Software Livre / JAVALI
Obrigado
Fabio Velloso
fabio@soujava.org.br