SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Mini Curso Java
EE
Sobre
- Graduando em Banco de dados na Fatec de São José dos Campos
- Especialização em sistemas da informação pela UAB na UFABC
- Trabalha há quase 10 anos na área de TI
- Trabalha há 5 anos na Red Hat com manutenção de sistemas Java open
source (JBoss, jBPM e outros)
- Dados abertos, software livre e blogueiro:
- http://aprendendo-javase.blogspot.com.br
- http://aprendendo-javafx.blogspot.com.br/
- http://aprendendo-javaee.blogspot.com.br/
REGRA PARA ESSE MINI CURSO
QUESTIONE, CONTESTE E CRIE!
Conhecendo a turma
- Conhecimento em Java, BD, etc
- Querem usar IDE?
- Gostam de linha de comando?
- Familiaridade com Linux?
Programação
- Dia 1
- Ferramentas necessárias
- Conhecendo e explicando o que será usado
- Explorando aplicações Java EE e executando no Wildfly Swarm
- Dia 2
- Discussão sobre nossa aplicação
- Criação das classes de modelo (JPA)
- Classes para acesso às informações (EJB)
- Ligando as camadas (CDI)
- Testes com Arquillian a cada desenvolvimento
- Dia 3
- Expondo as funcionalidades usando REST (JAX-RS)
- Adicionando segurança a algumas páginas (JAAS)
- Criando a aplicação WEB
- Discussões de melhorias
Ferramentas necessárias
- Maven 3.x
- https://maven.apache.org/download.cgi
- Java JDK 8
- http://www.oracle.com/technetwork/pt/java/javase/downloads/jdk8-downloads-2133151.
html
- Eclipse "mais novo possível" para Java EE
- http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/mars2
- Servidor de aplicação Wildfly
- wildfly.org/downloads
- Quickstarts
- https://github.com/wildfly/quickstart/archive/10.x.zip
O que vamos fazer?
Uma aplicação completa utilizando as APIs que fazem parte do Java Enterprise
Edition. Essas APIs têm uma especificação que são implementadas em
projetos como Wildfly, TomEE, Websphere, etc.Vamos explicar e usar as APIs
EJB, JPA, CDI, JAX-RS, JTA (entre outras) e realizar a execução da nossa
aplicação no Wildfly e no Swarm uma versão "microservice" do Wildfly.
Nossa aplicação irá consistir de um site de cursos gratuitos! Onde as pessoas
se inscrevem e podem ver os dados do curso.
Mas antes vamos conhecer nossas ferramentas.
Mas afinal, o que é Java EE?
Java EE é um conjunto de especificações destinados a facilitar a criação de aplicações
"Enterprise"(aplicações que empresas usam) em Java. Assim, Java EE define um modelo de
programação para criar aplicações para empresas, onde diversas tarefas comuns(persistência de
dados, validações, transações, tratamento de requisições HTTP, entre outras) são especificadas e
"colocadas no papel" para todos lerem, implementarem e usarem. O grupo que determina as
especificações é aberto e até você pode fazer parte! Fonte: http://bit.ly/2fboJRc
Dentro do Java EE temos diversas APIs, vamos abordar algumas nesse curso
para criarmos nossa app. JEE também tem versões, no nosso curso usaremos
a verão 7. O mercado usa 5, 6 e 7.
Servlets, JSP, JPA, JAX-RS, JAX-WS, JMS, Batch Jobs, JAXB, JAXP, CDI, EJB e outras
letrinhas são parte do mundo Java EE, mas não se assuste, vamos mostrar
como é fácil criar aplicações usando essa plataforma.
O que é maven?
Maven é uma ferramenta para realizar o build da aplicação e organizar as
dependências em um repositório, o repositório maven.
Para usar maven você deve:
- Seguir a estrutura padrão
- Descrever o projeto em um arquivo pom.xml(onde você fornece as
informações do seu projeto (grupo, id do artefato, versão, tipo do
projeto), plugins e as dependências)
Para fazer o build do projeto você deve usar os ciclos de build:
clean limpa o projeto; compile compila o projeto; test só roda os testes após
compilar; package compila, teste e "empacota" o projeto para uso
Verificar instalação
- Comandos para verificar se tudo está ok:
- Maven: $ mvn -version
- Java: $ java -version
- Abrir eclipse e apontar para a instalação do Maven
Windows -> Preferences -> Maven -> Installations -> Add
Gerando e entendendo um projeto maven
File -> New -> Other -> Maven Project. Selecione Create Simple Archetype, next e, por fim, informe os dados
do seu projeto
Gerando e entendendo um projeto maven
Gerando e entendendo um projeto maven
Gerando e entendendo um projeto maven
A estrutura:
src/main/java: Onde fica seu código principal, o código da aplicação
src/main/resources: localização de arquivos que ficarão no classpath
src/test/java: arquivos de teste java
src/test/resources: arquivos que ficam no classpath durante o teste somente
pom.xml: O descritor do projeto com as informações do mesmo.
A plataforma para execução de apps JEE
Nossas aplicações rodam em algum lugar. Vamos usar o Wildfly, um servidor
de aplicação que roda aplicações JEE.
Vamos usar um servidor de aplicação monolítico, onde instalamos diversas
aplicações nele. Há uma outra versão que, se tivermos tempo, abordaremos
no final do curso, o Wildfly Swarm.
Vamos agora conhecer o Wildfly e aprender a usar ele no Eclipse para
podermos usar.
Motivações para usar um servidor de aplicação
- APIs prontas, testadas e configuradas para uso;
- Facilita monitoramento;
- Pool de conexões com banco de dados;
- Gerenciamento de transações nativo (Java Transaction API);
- Pool de objetos pronto (EJBs são gerenciados pelo servidor);
- Múltiplas aplicações em um só lugar;
- Gerenciamento de LOG facilitado;
- Gerenciamento geral feito através de diversas ferramentas providas pelo
servidor(CLI, interface WEB)
- e a lista vai….
Instalando o Wildfly
A instalação consiste simplesmente em “deszipar” o arquivo em algum
diretório no disco! Tendo o Java, você já pode “subir” o servidor em seguida.
Estamos utilizando o Wildfly 10, então “deszipe” o arquivo em algum lugar:
$ unzip ~/Downloads/wildfly-10.1.0.Final.zip -d .
Agora temos que ter a variável de ambiente JAVA_HOME configurada.
Agora vamos entender o Wildfly.
Os diretórios do Wildfly podem assustar, mas não é necessário aprender tudo
agora:
bin: Nesse diretório ficam scripts para gerenciar o servidor
modules: Onde ficam os módulos (JARs)
standalone e domain: Wildfly pode ser executado de uma forma onde
múltiplos servidores pode ser gerenciados (domain) ou somente um
(standalone). Vamos usar somente o standalone
standalone/deployments: Onde colocamos nossas aplicações no formato JAR
ou WAR
standalone/configuration: Configuração do servidor. Hoje não iremos em
detalhes em como configurar
Entendendo o que tem dentro do Wildfly
Criando usuário de administração
Antes de subir, vamos criar um usuário de gerenciamento para conhecermos
a página que permite gerenciar as coisas. Para isso usamos o script
bin/add-user:
Inicializando e acessando a página de
gerenciamento
Para inicializar o servidor execute o script bin/standalone.sh
Acessando página inicial
Acessando página de gerenciamento
Adicionando o servidor ao Eclipse
File -> New -> Other -> Server -> escreva wildfly na lista (deixe baixando e
vamos brincar com outras coisas)
Exemplos de aplicações Java EE
Agora sem Eclipse vamos explorar os quickstarts. Unzip os quickstarts em
algum diretório. Quickstarts são pequenas aplicações Java EE que
demonstram alguma funcionalidade. E foram criados muuuuiiitttooos
quickstarts:
Explorando uma aplicação: Kitchensink
Deixe o wildfly em execução e entre no diretório kitchensink e execute:
quickstart-10.x/kitchensink$ mvn clean package wildfly:deploy
No JBoss você poderá ver que a aplicação foi “deployada“:
Explorando uma aplicação: Kitchensink
Agora acesse a aplicação em localhost:8080/wildfly-kitchensink
Explorando uma aplicação: Kitchensink
Vamos explorar os arquivos da aplicação para nos familiarizarmos um
brainstorm - Lembre-se: seja curioso e não tenha medo!
- Veja o arquivo pom.xml
- Discutir o que tem nesse arquivo
- Classes Java:
- Member.java - anotações e o que elas representam
- MemberResourceRESTService.java - o que faz dessa classe um Web Service REST?
- MemberRegistration.java - o que faz a anotação @Inject?
- Arquivos XML:
- ./src/main/resources/META-INF/persistence.xml
- ./src/main/webapp/WEB-INF/kitchensink-quickstart-ds.xml
Se você chegou até aqui...
… e ainda temos tempo, podemos enfim programar.
Vamos criar nossa própria aplicação!
(prática)

Mais conteúdo relacionado

Destaque

[Curso Java Basico] Aula 60: Escopo de Variaveis
[Curso Java Basico] Aula 60: Escopo de Variaveis[Curso Java Basico] Aula 60: Escopo de Variaveis
[Curso Java Basico] Aula 60: Escopo de VariaveisLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 41: Heranca: classes abstratas
[Curso Java Basico - Orientacao a Objetos] Aula 41: Heranca: classes abstratas[Curso Java Basico - Orientacao a Objetos] Aula 41: Heranca: classes abstratas
[Curso Java Basico - Orientacao a Objetos] Aula 41: Heranca: classes abstratasLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 46: Interface e heranca
[Curso Java Basico - Orientacao a Objetos] Aula 46: Interface e heranca [Curso Java Basico - Orientacao a Objetos] Aula 46: Interface e heranca
[Curso Java Basico - Orientacao a Objetos] Aula 46: Interface e heranca Loiane Groner
 
[Curso Java Basico - Exceptions] Aula 51: tipos de erros no Java
[Curso Java Basico - Exceptions] Aula 51: tipos de erros no Java[Curso Java Basico - Exceptions] Aula 51: tipos de erros no Java
[Curso Java Basico - Exceptions] Aula 51: tipos de erros no JavaLoiane Groner
 
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throwsLoiane Groner
 
[Curso Java Basico - Exceptions] Aula 49: finally
[Curso Java Basico - Exceptions] Aula 49: finally[Curso Java Basico - Exceptions] Aula 49: finally
[Curso Java Basico - Exceptions] Aula 49: finallyLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 44: Interfaces
[Curso Java Basico - Orientacao a Objetos] Aula 44: Interfaces[Curso Java Basico - Orientacao a Objetos] Aula 44: Interfaces
[Curso Java Basico - Orientacao a Objetos] Aula 44: InterfacesLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...Loiane Groner
 
Curso Java Basico] Aula 66: Garbage Collector (Coletor de Lixo)
Curso Java Basico] Aula 66: Garbage Collector (Coletor de Lixo)Curso Java Basico] Aula 66: Garbage Collector (Coletor de Lixo)
Curso Java Basico] Aula 66: Garbage Collector (Coletor de Lixo)Loiane Groner
 
[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printf[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printfLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...
[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...
[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...Loiane Groner
 
[Curso Java Basico] Aula 54: Enumeradores como classe (construtor e metodos)
[Curso Java Basico] Aula 54: Enumeradores como classe (construtor e metodos)[Curso Java Basico] Aula 54: Enumeradores como classe (construtor e metodos)
[Curso Java Basico] Aula 54: Enumeradores como classe (construtor e metodos)Loiane Groner
 
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referenciaLoiane Groner
 
Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)
Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)
Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)Loiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 34: Variáveis e metodos estat...
[Curso Java Basico - Orientacao a Objetos] Aula 34: Variáveis e metodos estat...[Curso Java Basico - Orientacao a Objetos] Aula 34: Variáveis e metodos estat...
[Curso Java Basico - Orientacao a Objetos] Aula 34: Variáveis e metodos estat...Loiane Groner
 
[Curso Java Basico] Aula 64: Classes aninhadas: internas, locais e anonimas
[Curso Java Basico] Aula 64: Classes aninhadas: internas, locais e anonimas[Curso Java Basico] Aula 64: Classes aninhadas: internas, locais e anonimas
[Curso Java Basico] Aula 64: Classes aninhadas: internas, locais e anonimasLoiane Groner
 
[Curso Java Basico] Aula 73: Threads: resume, suspend e stop
[Curso Java Basico] Aula 73: Threads: resume, suspend e stop[Curso Java Basico] Aula 73: Threads: resume, suspend e stop
[Curso Java Basico] Aula 73: Threads: resume, suspend e stopLoiane Groner
 
[Curso Java Basico] Aula 57: Wrappers: classes de tipos primitivos
[Curso Java Basico] Aula 57: Wrappers: classes de tipos primitivos[Curso Java Basico] Aula 57: Wrappers: classes de tipos primitivos
[Curso Java Basico] Aula 57: Wrappers: classes de tipos primitivosLoiane Groner
 
Curso Java Basico] Aula 67: Criando Threads + metodos start, run e sleep
Curso Java Basico] Aula 67: Criando Threads + metodos start, run e sleepCurso Java Basico] Aula 67: Criando Threads + metodos start, run e sleep
Curso Java Basico] Aula 67: Criando Threads + metodos start, run e sleepLoiane Groner
 
[Curso Java Basico] Aula 59: Importacao estatica (static import)
[Curso Java Basico] Aula 59: Importacao estatica (static import)[Curso Java Basico] Aula 59: Importacao estatica (static import)
[Curso Java Basico] Aula 59: Importacao estatica (static import)Loiane Groner
 

Destaque (20)

[Curso Java Basico] Aula 60: Escopo de Variaveis
[Curso Java Basico] Aula 60: Escopo de Variaveis[Curso Java Basico] Aula 60: Escopo de Variaveis
[Curso Java Basico] Aula 60: Escopo de Variaveis
 
[Curso Java Basico - Orientacao a Objetos] Aula 41: Heranca: classes abstratas
[Curso Java Basico - Orientacao a Objetos] Aula 41: Heranca: classes abstratas[Curso Java Basico - Orientacao a Objetos] Aula 41: Heranca: classes abstratas
[Curso Java Basico - Orientacao a Objetos] Aula 41: Heranca: classes abstratas
 
[Curso Java Basico - Orientacao a Objetos] Aula 46: Interface e heranca
[Curso Java Basico - Orientacao a Objetos] Aula 46: Interface e heranca [Curso Java Basico - Orientacao a Objetos] Aula 46: Interface e heranca
[Curso Java Basico - Orientacao a Objetos] Aula 46: Interface e heranca
 
[Curso Java Basico - Exceptions] Aula 51: tipos de erros no Java
[Curso Java Basico - Exceptions] Aula 51: tipos de erros no Java[Curso Java Basico - Exceptions] Aula 51: tipos de erros no Java
[Curso Java Basico - Exceptions] Aula 51: tipos de erros no Java
 
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
 
[Curso Java Basico - Exceptions] Aula 49: finally
[Curso Java Basico - Exceptions] Aula 49: finally[Curso Java Basico - Exceptions] Aula 49: finally
[Curso Java Basico - Exceptions] Aula 49: finally
 
[Curso Java Basico - Orientacao a Objetos] Aula 44: Interfaces
[Curso Java Basico - Orientacao a Objetos] Aula 44: Interfaces[Curso Java Basico - Orientacao a Objetos] Aula 44: Interfaces
[Curso Java Basico - Orientacao a Objetos] Aula 44: Interfaces
 
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...
 
Curso Java Basico] Aula 66: Garbage Collector (Coletor de Lixo)
Curso Java Basico] Aula 66: Garbage Collector (Coletor de Lixo)Curso Java Basico] Aula 66: Garbage Collector (Coletor de Lixo)
Curso Java Basico] Aula 66: Garbage Collector (Coletor de Lixo)
 
[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printf[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printf
 
[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...
[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...
[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...
 
[Curso Java Basico] Aula 54: Enumeradores como classe (construtor e metodos)
[Curso Java Basico] Aula 54: Enumeradores como classe (construtor e metodos)[Curso Java Basico] Aula 54: Enumeradores como classe (construtor e metodos)
[Curso Java Basico] Aula 54: Enumeradores como classe (construtor e metodos)
 
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia
 
Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)
Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)
Estrutura de Dados e Algoritmos com Java #19-25: Filas (Queue)
 
[Curso Java Basico - Orientacao a Objetos] Aula 34: Variáveis e metodos estat...
[Curso Java Basico - Orientacao a Objetos] Aula 34: Variáveis e metodos estat...[Curso Java Basico - Orientacao a Objetos] Aula 34: Variáveis e metodos estat...
[Curso Java Basico - Orientacao a Objetos] Aula 34: Variáveis e metodos estat...
 
[Curso Java Basico] Aula 64: Classes aninhadas: internas, locais e anonimas
[Curso Java Basico] Aula 64: Classes aninhadas: internas, locais e anonimas[Curso Java Basico] Aula 64: Classes aninhadas: internas, locais e anonimas
[Curso Java Basico] Aula 64: Classes aninhadas: internas, locais e anonimas
 
[Curso Java Basico] Aula 73: Threads: resume, suspend e stop
[Curso Java Basico] Aula 73: Threads: resume, suspend e stop[Curso Java Basico] Aula 73: Threads: resume, suspend e stop
[Curso Java Basico] Aula 73: Threads: resume, suspend e stop
 
[Curso Java Basico] Aula 57: Wrappers: classes de tipos primitivos
[Curso Java Basico] Aula 57: Wrappers: classes de tipos primitivos[Curso Java Basico] Aula 57: Wrappers: classes de tipos primitivos
[Curso Java Basico] Aula 57: Wrappers: classes de tipos primitivos
 
Curso Java Basico] Aula 67: Criando Threads + metodos start, run e sleep
Curso Java Basico] Aula 67: Criando Threads + metodos start, run e sleepCurso Java Basico] Aula 67: Criando Threads + metodos start, run e sleep
Curso Java Basico] Aula 67: Criando Threads + metodos start, run e sleep
 
[Curso Java Basico] Aula 59: Importacao estatica (static import)
[Curso Java Basico] Aula 59: Importacao estatica (static import)[Curso Java Basico] Aula 59: Importacao estatica (static import)
[Curso Java Basico] Aula 59: Importacao estatica (static import)
 

Mais de jesuinoPower

Básico sobre Debugging com Java
Básico sobre Debugging com JavaBásico sobre Debugging com Java
Básico sobre Debugging com JavajesuinoPower
 
Introdução ao LiveOak
Introdução ao LiveOakIntrodução ao LiveOak
Introdução ao LiveOakjesuinoPower
 
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPBoas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPjesuinoPower
 
Conectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SPConectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SPjesuinoPower
 
JavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEBJavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEBjesuinoPower
 
JavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasJavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasjesuinoPower
 
Java não é tão difícil quanto parece
Java não é tão difícil quanto pareceJava não é tão difícil quanto parece
Java não é tão difícil quanto parecejesuinoPower
 
JavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavaJavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavajesuinoPower
 
Desenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXDesenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXjesuinoPower
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0jesuinoPower
 
JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012jesuinoPower
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFXjesuinoPower
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visagejesuinoPower
 

Mais de jesuinoPower (14)

Básico sobre Debugging com Java
Básico sobre Debugging com JavaBásico sobre Debugging com Java
Básico sobre Debugging com Java
 
Introdução ao LiveOak
Introdução ao LiveOakIntrodução ao LiveOak
Introdução ao LiveOak
 
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPBoas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
 
Conectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SPConectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SP
 
JavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEBJavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEB
 
JavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasJavaFX 8, Collections e Lambdas
JavaFX 8, Collections e Lambdas
 
Java não é tão difícil quanto parece
Java não é tão difícil quanto pareceJava não é tão difícil quanto parece
Java não é tão difícil quanto parece
 
JavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavaJavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma Java
 
Desenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXDesenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFX
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0
 
JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012
 
JavaFX 2
JavaFX 2JavaFX 2
JavaFX 2
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visage
 

Mini Curso Java EE

  • 2. Sobre - Graduando em Banco de dados na Fatec de São José dos Campos - Especialização em sistemas da informação pela UAB na UFABC - Trabalha há quase 10 anos na área de TI - Trabalha há 5 anos na Red Hat com manutenção de sistemas Java open source (JBoss, jBPM e outros) - Dados abertos, software livre e blogueiro: - http://aprendendo-javase.blogspot.com.br - http://aprendendo-javafx.blogspot.com.br/ - http://aprendendo-javaee.blogspot.com.br/
  • 3. REGRA PARA ESSE MINI CURSO QUESTIONE, CONTESTE E CRIE!
  • 4. Conhecendo a turma - Conhecimento em Java, BD, etc - Querem usar IDE? - Gostam de linha de comando? - Familiaridade com Linux?
  • 5. Programação - Dia 1 - Ferramentas necessárias - Conhecendo e explicando o que será usado - Explorando aplicações Java EE e executando no Wildfly Swarm - Dia 2 - Discussão sobre nossa aplicação - Criação das classes de modelo (JPA) - Classes para acesso às informações (EJB) - Ligando as camadas (CDI) - Testes com Arquillian a cada desenvolvimento - Dia 3 - Expondo as funcionalidades usando REST (JAX-RS) - Adicionando segurança a algumas páginas (JAAS) - Criando a aplicação WEB - Discussões de melhorias
  • 6. Ferramentas necessárias - Maven 3.x - https://maven.apache.org/download.cgi - Java JDK 8 - http://www.oracle.com/technetwork/pt/java/javase/downloads/jdk8-downloads-2133151. html - Eclipse "mais novo possível" para Java EE - http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/mars2 - Servidor de aplicação Wildfly - wildfly.org/downloads - Quickstarts - https://github.com/wildfly/quickstart/archive/10.x.zip
  • 7. O que vamos fazer? Uma aplicação completa utilizando as APIs que fazem parte do Java Enterprise Edition. Essas APIs têm uma especificação que são implementadas em projetos como Wildfly, TomEE, Websphere, etc.Vamos explicar e usar as APIs EJB, JPA, CDI, JAX-RS, JTA (entre outras) e realizar a execução da nossa aplicação no Wildfly e no Swarm uma versão "microservice" do Wildfly. Nossa aplicação irá consistir de um site de cursos gratuitos! Onde as pessoas se inscrevem e podem ver os dados do curso. Mas antes vamos conhecer nossas ferramentas.
  • 8. Mas afinal, o que é Java EE? Java EE é um conjunto de especificações destinados a facilitar a criação de aplicações "Enterprise"(aplicações que empresas usam) em Java. Assim, Java EE define um modelo de programação para criar aplicações para empresas, onde diversas tarefas comuns(persistência de dados, validações, transações, tratamento de requisições HTTP, entre outras) são especificadas e "colocadas no papel" para todos lerem, implementarem e usarem. O grupo que determina as especificações é aberto e até você pode fazer parte! Fonte: http://bit.ly/2fboJRc Dentro do Java EE temos diversas APIs, vamos abordar algumas nesse curso para criarmos nossa app. JEE também tem versões, no nosso curso usaremos a verão 7. O mercado usa 5, 6 e 7. Servlets, JSP, JPA, JAX-RS, JAX-WS, JMS, Batch Jobs, JAXB, JAXP, CDI, EJB e outras letrinhas são parte do mundo Java EE, mas não se assuste, vamos mostrar como é fácil criar aplicações usando essa plataforma.
  • 9. O que é maven? Maven é uma ferramenta para realizar o build da aplicação e organizar as dependências em um repositório, o repositório maven. Para usar maven você deve: - Seguir a estrutura padrão - Descrever o projeto em um arquivo pom.xml(onde você fornece as informações do seu projeto (grupo, id do artefato, versão, tipo do projeto), plugins e as dependências) Para fazer o build do projeto você deve usar os ciclos de build: clean limpa o projeto; compile compila o projeto; test só roda os testes após compilar; package compila, teste e "empacota" o projeto para uso
  • 10. Verificar instalação - Comandos para verificar se tudo está ok: - Maven: $ mvn -version - Java: $ java -version - Abrir eclipse e apontar para a instalação do Maven Windows -> Preferences -> Maven -> Installations -> Add
  • 11. Gerando e entendendo um projeto maven File -> New -> Other -> Maven Project. Selecione Create Simple Archetype, next e, por fim, informe os dados do seu projeto
  • 12. Gerando e entendendo um projeto maven
  • 13. Gerando e entendendo um projeto maven
  • 14. Gerando e entendendo um projeto maven A estrutura: src/main/java: Onde fica seu código principal, o código da aplicação src/main/resources: localização de arquivos que ficarão no classpath src/test/java: arquivos de teste java src/test/resources: arquivos que ficam no classpath durante o teste somente pom.xml: O descritor do projeto com as informações do mesmo.
  • 15. A plataforma para execução de apps JEE Nossas aplicações rodam em algum lugar. Vamos usar o Wildfly, um servidor de aplicação que roda aplicações JEE. Vamos usar um servidor de aplicação monolítico, onde instalamos diversas aplicações nele. Há uma outra versão que, se tivermos tempo, abordaremos no final do curso, o Wildfly Swarm. Vamos agora conhecer o Wildfly e aprender a usar ele no Eclipse para podermos usar.
  • 16. Motivações para usar um servidor de aplicação - APIs prontas, testadas e configuradas para uso; - Facilita monitoramento; - Pool de conexões com banco de dados; - Gerenciamento de transações nativo (Java Transaction API); - Pool de objetos pronto (EJBs são gerenciados pelo servidor); - Múltiplas aplicações em um só lugar; - Gerenciamento de LOG facilitado; - Gerenciamento geral feito através de diversas ferramentas providas pelo servidor(CLI, interface WEB) - e a lista vai….
  • 17. Instalando o Wildfly A instalação consiste simplesmente em “deszipar” o arquivo em algum diretório no disco! Tendo o Java, você já pode “subir” o servidor em seguida. Estamos utilizando o Wildfly 10, então “deszipe” o arquivo em algum lugar: $ unzip ~/Downloads/wildfly-10.1.0.Final.zip -d . Agora temos que ter a variável de ambiente JAVA_HOME configurada. Agora vamos entender o Wildfly.
  • 18. Os diretórios do Wildfly podem assustar, mas não é necessário aprender tudo agora: bin: Nesse diretório ficam scripts para gerenciar o servidor modules: Onde ficam os módulos (JARs) standalone e domain: Wildfly pode ser executado de uma forma onde múltiplos servidores pode ser gerenciados (domain) ou somente um (standalone). Vamos usar somente o standalone standalone/deployments: Onde colocamos nossas aplicações no formato JAR ou WAR standalone/configuration: Configuração do servidor. Hoje não iremos em detalhes em como configurar Entendendo o que tem dentro do Wildfly
  • 19. Criando usuário de administração Antes de subir, vamos criar um usuário de gerenciamento para conhecermos a página que permite gerenciar as coisas. Para isso usamos o script bin/add-user:
  • 20. Inicializando e acessando a página de gerenciamento Para inicializar o servidor execute o script bin/standalone.sh
  • 22. Acessando página de gerenciamento
  • 23. Adicionando o servidor ao Eclipse File -> New -> Other -> Server -> escreva wildfly na lista (deixe baixando e vamos brincar com outras coisas)
  • 24. Exemplos de aplicações Java EE Agora sem Eclipse vamos explorar os quickstarts. Unzip os quickstarts em algum diretório. Quickstarts são pequenas aplicações Java EE que demonstram alguma funcionalidade. E foram criados muuuuiiitttooos quickstarts:
  • 25. Explorando uma aplicação: Kitchensink Deixe o wildfly em execução e entre no diretório kitchensink e execute: quickstart-10.x/kitchensink$ mvn clean package wildfly:deploy No JBoss você poderá ver que a aplicação foi “deployada“:
  • 26. Explorando uma aplicação: Kitchensink Agora acesse a aplicação em localhost:8080/wildfly-kitchensink
  • 27. Explorando uma aplicação: Kitchensink Vamos explorar os arquivos da aplicação para nos familiarizarmos um brainstorm - Lembre-se: seja curioso e não tenha medo! - Veja o arquivo pom.xml - Discutir o que tem nesse arquivo - Classes Java: - Member.java - anotações e o que elas representam - MemberResourceRESTService.java - o que faz dessa classe um Web Service REST? - MemberRegistration.java - o que faz a anotação @Inject? - Arquivos XML: - ./src/main/resources/META-INF/persistence.xml - ./src/main/webapp/WEB-INF/kitchensink-quickstart-ds.xml
  • 28. Se você chegou até aqui... … e ainda temos tempo, podemos enfim programar. Vamos criar nossa própria aplicação! (prática)