SlideShare ist ein Scribd-Unternehmen logo
1 von 62
Downloaden Sie, um offline zu lesen
florianópolis
abril 2017
helder da rocha
TRILHA JAVA
Java91011
Quem sou eu? Who am I? Кто я?
Helder da Rocha
argonavis.com.br
Tecnologia * Ciência * Arte
HTML & tecnologias Web desde 1995
Autor de cursos e livros sobre

Java, XML e tecnologias Web
helderdarocha.com.br
História das versões Java
JDK Alfa e Beta: 1994

JDK 1.0/1.02 1996 (8 pacotes!)

JDK 1.1 1996

Java 2 (J2SE 1.2) 1998

J2SE 1.3 2000

J2SE 1.4 2002
J2SE 5.0 (JDK 1.5) 2005

Java SE 6 (JDK 1.6) 2006

Java SE 7 (JDK 1.7) 2011

Java SE 8 (JDK 1.8) 2014

Java SE 9 (JDK 9) 2017
História das versões Java
JDK Alfa e Beta: 1994

JDK 1.0/1.02 1996 (8 pacotes!)

JDK 1.1 1996

Java 2 (J2SE 1.2) 1998

J2SE 1.3 2000

J2SE 1.4 2002
J2SE 5.0 (JDK 1.5) 2005

Java SE 6 (JDK 1.6) 2006

Java SE 7 (JDK 1.7) 2011

Java SE 8 (JDK 1.8) 2014

Java SE 9 (JDK 9) 2017
Java 10 (18.3) 3/2018
Java 11 (18.9) 9/2018
Objetivos
Java 9: módulos

Java 9: outras novidades

Java 10 e Java 11
Módulos
Modularidade
Objetivo: promover coesão, reuso, encapsulamento,
eficiência usando apenas o código necessário

• Módulos devem ter 

• Encapsulamento forte

• Interfaces bem definidas

• Dependências explícitas
rt.jar app
app
Impacto dos módulos
• JDK e JRE:

• Divide JDK (tools.jar) e Runtime (rt.jar) em blocos
menores

• Encapsula APIs internas (que não devem ser usadas)
(ex: sun.misc.*)

• Ferramenta (jlink) gera imagens executáveis

• Em aplicações Java

• Permite criação de aplicações modularizadas
Antes do Java 9
• Modularidade via modificadores de acesso, pacotes, JARs

• java -cp ... um monte de linhas ... -jar App.jar
• rt.jar (grande) e outros JARs do JRE

• Acesso a sun.misc.unsafe.*

• Classpath/Classloader Hell

• Soluções externas: Maven (compile-time) + OSGi (runtime)
Servico
Interna
Detalhe
Servico
Interna
DetalheUm DetalheDois
internal internal
depend-1.0.jar depend-1.1.jar
Classpath hell
Servico
Interna
Detalhe
Servico
Interna
DetalheUm DetalheDois
internal internal
depend-1.0.jar depend-1.1.jar
java -cp depend-1.1.jar;outros-1.x.jar;depend-1.0.jar -jar App.jar
Servico
Interna
Detalhe
Servico
Interna
DetalheUm DetalheDois
internal internal
depend-1.0.jar depend-1.1.jar
java -cp depend-1.1.jar;outros-1.x.jar;depend-1.0.jar -jar App.jar
Servico
Interna
Detalhe
Servico
Interna
DetalheUm DetalheDois
internal internal
depend-1.0.jar depend-1.1.jar
java -cp depend-1.1.jar;outros-1.x.jar;depend-1.0.jar -jar App.jar
... Servico("dois") ...
Servico
Interna
Detalhe
Servico
Interna
DetalheUm DetalheDois
internal internal
depend-1.0.jar depend-1.1.jar
java -cp depend-1.0.jar;outros-1.x.jar;depend-1.1.jar -jar App.jar
Servico
Interna
Detalhe
Servico
Interna
DetalheUm DetalheDois
internal internal
depend-1.0.jar depend-1.1.jar
java -cp depend-1.0.jar;outros-1.x.jar;depend-1.1.jar -jar App.jar
... Servico("dois") ...
Servico
Interna
Detalhe
Servico
Interna
DetalheUm DetalheDois
internal internal
depend-1.0.jar depend-1.1.jar
java -cp depend-1.0.jar;outros-1.x.jar;depend-1.1.jar -jar App.jar
... Servico("dois") ...
java.lang.NoClassDefFoundError
Módulo = 

coleção de pacotes
• Pasta contendo module-info.java e pacotes

• Declara módulos que são suas dependências

• Todo módulo depende do módulo java.base por default

• Na JVM, java.base é módulo raiz e não depende de
nenhum outro módulo

• Pacotes são encapsulados (precisam ser exportados
para que sejam usados fora do módulo)
java --list-modules
java.activation@9
java.annotations.common@9
java.base@9
java.sql@9
java.xml@9
java.rmi@9
java.se@9
java.se.ee@9
java.compiler@9
java.corba@9
java.datatransfer@9
java.desktop@9
java.instrument@9
java.jnlp@9
java.logging@9
java.management@9
java.naming@9
java.prefs@9
java.scripting@9
java.security.jgss@9
java.security.sasl@9
java.smartcardio@9
java.sql.rowset@9
java.transaction@9
jdk.dynalink@9
jdk.editpad@9
jdk.hotspot.agent@9
jdk.httpserver@9
jdk.incubator.httpclient@9
jdk.internal.ed@9
jdk.internal.le@9
jdk.internal.opt@9
jdk.jartool@9
jdk.javadoc@9
jdk.javaws@9
jdk.jcmd@9
jdk.jconsole@9
jdk.jdeps@9
jdk.jdi@9
jdk.jdwp.agent@9
jdk.jfr@9
jdk.jlink@9
jdk.jshell@9
jdk.jsobject@9
jdk.jstatd@9
jdk.jvmstat@9
jdk.localedata@9
java.xml@9
java.xml.bind@9
java.xml.crypto@9
java.xml.ws@9
javafx.base@9
javafx.controls@9
javafx.deploy@9
javafx.fxml@9
javafx.graphics@9
javafx.media@9
javafx.swing@9
javafx.web@9
jdk.accessibility@9
jdk.attach@9
jdk.charsets@9
jdk.compiler@9
jdk.crypto.cryptoki@9
jdk.crypto.ec@9
jdk.deploy@9
jdk.deploy.controlpanel@9
jdk.desktop@9
jdk.management@9
jdk.naming.dns@9
jdk.naming.rmi@9
jdk.net@9
jdk.pack@9
jdk.packager@9
jdk.packager.services@9
jdk.plugin@9
jdk.plugin.dom@9
jdk.plugin.server@9
jdk.policytool@9
jdk.rmic@9
jdk.scripting.nashorn@9
jdk.scripting.nashorn.shell@9
jdk.sctp@9
jdk.security.auth@9
jdk.security.jgss@9
jdk.snmp@9
jdk.unsupported@9
jdk.vm.ci@9
jdk.xml.bind@9
jdk.xml.dom@9
jdk.xml.ws@9
jdk.zipfs@9
java.base@
java.sql@9
java.xml@9
:ava.se@9
Estrutura do JDK
JDK 8
JDK 8/jre
JDK 9
módulos do JRE
módulos do JDK
pacotes do JRE
pacotes do JDK
Estrutura de uma aplicação
Módulo
Pacote
Classe
Classe
Pacote
Classe
Pacote
Classe
Classe
Pacote
Classe
Classe
Pacote Pacote
Classe
Classe
module-info module-info
Java 8
Java 9
Sub-Pacote
Classe
Classe
Sub-Pacote
Classe
Aplicações ficam menores!
Aplicação
rt.jar
Aplicação
java.sql
java.xml
java.base
Como gerar um runtime
jlink --module-path $JAVA_HOME/jmods:mlib 

--add-modules modulo.teste
--launcher exec
launch=modulo.teste/pacote.Main

--output myimage
$ myimage/bin/java -list-modules
java.base@9
java.logging@9
java.sql@9
java.xml@9
modulo.teste
modulo.teste.submod
$ myimage/bin/exec
myimage
bin
exec
java
conf lib
include
release
Executável
Para executar
Ferramenta jdeps
• Quais os módulos requeridos por uma classe ou módulo?
Onde estão minhas classes e pacotes?

• Ferramenta fundamental para migração
>jdeps -jdkinternals Sample.class
Sample.class -> JDK removed internal API
Sample -> sun.misc.BASE64Encoder JDK internal API (JDK removed internal API)
Warning: JDK internal APIs are unsupported and private to JDK implementation that are
subject to be removed or changed incompatibly and could break your application.
Please modify your code to eliminate dependency on any JDK internal APIs.
For the most recent update on JDK internal API replacements, please check:
https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool
JDK Internal API Suggested Replacement
---------------- ---------------------
sun.misc.BASE64Encoder Use java.util.Base64 @since 1.8
Hierarquia
Módulos java.*
Hierarquia
Módulos java.*
module-info.java
• Module Descriptor: arquivo de meta-informação

• Declara de quais módulos depende (java.base é
dependência implícita) e que pacotes disponibiliza

• Todo módulo possui um module-info.java

• Sintaxe: module nome-do-módulo { ... }
requires módulo
• Declara dependência (legibilidade / readability) de um
outro módulo:

• O módulo java.base é dependência automática e não
precisa ser declarada

• É preciso saber em que módulo está um determinado
pacote que se deseja usar!
module nome-do-modulo {
requires outro-modulo;
}
m2
m1
Legibilidade
java.xml
java.prefs
aplicação
requires
requires
• A legibilidade não é
transitiva por default

• Aplicação ao lado
não tem acesso à API
do módulo java.xml
module aplicacao {
requires java.prefs;
}
Legibilidade
java.xml
java.prefs
aplicação
requires
requires
requires
• Para ter acesso, a
Aplicação precisa
também declarar
requires para o
módulo java.xml
module aplicacao {
requires java.prefs;
requires java.xml;
}
requires transitive
• Dependência não transitiva - acessa API dos módulos
lidos (mas não os detalhes da implementação)

• Dependência transitiva - acessa API + dependências dos
módulos lidos
module java.sql {
requires transitive java.logging;
requires transitive java.xml;
...
}
Legibilidade
transitiva
• Setas sólidas
representam ligações
transitivas
java.base
java.xml
java.prefs java.sql
java.desktop
java.se
java.logging
requires
requires transitive
Legibilidade transitiva
java.xml java.sql java.logging
aplicação
java.xml
java.sql
java.logging
aplicação
Declaração Efeito
requires transitive
requires
java.se e java.se.ee
• Módulos agregadores (agrupam outros módulos)

• Declaram todos os módulos descendentes com requires
transitive (permite que a aplicação use tudo)

• Não é boa prática usá-los sempre
module java.se {
requires transitive java.desktop;
requires transitive java.sql;
...
}
m1
exports pacote
• Se pacotes de um módulo foram criados 

para reuso, o módulo precisa exportá-los:

• Se um pacote não for exportado ele só pode ser usado
dentro do módulo!

• Apenas classes e membros públicos em pacotes
exportados são acessíveis (accessibility)
module nome-do-modulo {
exports pacote.nome-do-pacote;
}
pacote
m2
requires
exports
java.base
• Raiz de todos os módulos

• Todo módulo implicitamente requer java.base

• Define e exporta todos os pacotes fundamentais da
plataforma Java
module java.base {
exports java.io;
exports java.lang;
exports java.lang.annotation;
exports java.lang.invoke;
exports java.lang.ref;
exports java.lang.reflect;
exports java.math;
exports java.net;
...
}
Pacotes que podem ser
usados por aplicações
que requerem
java.base (todas as
aplicações)
Module Path
• Local onde se encontram módulos

• Não localiza classes. Localiza módulos inteiros
(dependências especificadas via metadados)

• Dependências transitivas são computadas na
inicialização e construção do grafo de módulos
Módulos especiais
• Uma classe que não foi explicitamente declarada dentro
de um módulo pertence ao Módulo Sem Nome

• Módulo raiz é java.se
• Módulos com nome não podem depender deles

• Um Módulo Automático é criado ao incluir um JAR no
modulepath (ele terá o mesmo nome que o JAR)

• Exportam todos os seus pacotes e automaticamente
requer todos os outros pacotes do modulepath

• Módulos com nome podem depender de módulos
automáticos
Qualified exports (to)
• Restringe a exportação de pacotes a (to) módulos
específicos

• Apenas o módulo casa.dono pode acessar o
pacote casa.garagem (campos públicos)
module casa {
exports casa.garagem to casa.dono;
exports casa.sala;
}
Pacotes abertos
• Libera acesso total em tempo de execução (reflection e
acesso a membros não-públicos) de pacotes específicos

• Também suporta to, para restringir o acesso apenas a
determinado módulo
module nome-do-modulo {
opens pacote;
}
module nome-do-modulo {
opens pacote to mod-amigo;
}
Módulos abertos
• Libera todos os pacotes do módulo - todos tem acesso a
todos os membros de todos os pacotes
open module nome-do-modulo {
...
}
requires static
• Permite que um módulo dependa de outro para
compilação (mas não em tempo de execução)

• Existe risco de NoClassDefFoundError
module stats.dados {
requires stats.dados;
requires static graficos.3d;
exports stats.leituras;
}
Serviços
• Service Provider Interface (SPI)

• Usa API java.util.ServiceLoader
(adaptada para módulos)

• Módulo que oferece o serviço declara 

provides interface-do-servico with implementacao

• Módulo que consome o serviço declara 

uses interface-do-servico
Arquitetura modular
Consumidor
Implementação 1 Implementação 2
uses Interface
provides Interface
ServiceLoader<Interface> servico = 

ServiceLoader.load(Interface.class);
Interface obj = servico.next(); // instancia o serviço + cache
Exemplo usando SPI
• Módulo que usa provedor, declara uses
• Módulo que fornece, declara provides
module java.sql {
...
exports java.sql;
exports javax.sql;
uses java.sql.Driver;
}
module com.mysql.jdbc {
requires java.sql;
exports com.mysql.jdbc;
provides java.sql.Driver
with com.mysql.jdbc.Driver;
}
Outras novidades
do Java 9
Método of() em coleções
• Factory methods para criar coleções imutáveis
List<String> lista2 = List.of("Um", "Dois", "Três");
Set<String> conj = Set.of("A", "B", "C");
Map<Integer, String> mapa1 =
Map.of(1, "Um", 2, "Dois", 3, "Três");
Map.Entry<String, String> e1 = Map.entry("A", "Um");
Map.Entry<String, String> e2 = Map.entry("B", "Dois");
Map<String, String> mapa2 = Map.ofEntries(e1, e2);
Reactive Streams
• API padrão para programação reativa baseada em
reactivestreams.org

• Stream interage com a fonte para otimizar a transferência
e evitar sobrecarregar o destino (back pressure)

• Interface Flow e sub-interfaces Publisher, Subscriber,
Subscription

• Depende de implementações da API (ex: RxJava,
Reactor, Vert.x, Akka, etc.)
Métodos private em
Interfaces
• Interfaces em Java 8 ganharam métodos default

• Interfaces em Java 9 ganharam métodos private
public interface Java9Interface {
default String tagText(String nome, String tag) {
return initag(tag) + nome + endtag(tag);
}
private String initag(String tag) {
return "<"+tag+">";
}
private String endtag(String tag) {
return "</"+tag+">";
}
}
Process API
• Mais controle sobre processos do sistema operacional,
sem precisar recorrer a métodos nativos
Process p = 

new ProcessBuilder

("/Applications/Firefox.app/Contents/MacOS/firefox")
.start();
System.out.println("Firefox pid: " + p.getPid());
long pid = ProcessHandle.current().getPid();
System.out.println("Java pid: " + pid);
Simplifica try com resources
• Variáveis que forem efetivamente finais (ou declaradas
finais) não precisam ser declaradas dentro do try.
public static void read(InputStream is) throws IOException {
BufferedReader reader = null;
final OutputStream os = null;
//try (InputStream a = is) {
try (is; os) {
reader = new BufferedReader(new InputStreamReader(is));
String line = reader.readLine();
while(line != null) {
System.out.println(line);
line = reader.readLine();
}
}
}
G1GC é default
http://www.oracle.com/technetwork/tutorials/tutorials-1876574.html
–XX:+UseG1GC –XX:-UseG1GC
Compact strings
0x94af39d1
J A V
0x4A 0x41 0x56
J A V A
0x4A 0x41 0x56 0x41
A
0x410x00 0x00 0x00 0x00
char
byte
0
coder
0x94af39d1
String
String
byte
JShell
• REPL (Read-Eval-Print-Loop)
Multi-release JARs
• JAR com classes e resources para versões diferentes do Java

• + Subdiretório /META-INF/versions que contém um diretório
com número da versão

• Menor valor aceito é 9 (< Java 8 ignoram pasta versions)
Um.class
Dois.class
Tres.class
META-INF
MANIFEST.MF
versions/
9/
Um.class
10/
Um.class
Dois.class
Multi-release: true
Suporte nativo HTTP/2
HttpClient client = HttpClient.newHttpClient();
HttpRequest request =
HttpRequest.newBuilder(
URI.create("https://www.thedevelopersconference.com.br"))
.GET()
.build();
HttpResponse.BodyHandler responseBodyHandler = 

HttpResponse.BodyHandler.asString();
HttpResponse response = client.send(request, responseBodyHandler);
String body = response.body().toString();
System.out.println(body);
Java 10+11
JDK 10 (18.3)
• Release rápido (suporte até setembro/18)

• Novo versionamento

• JDK: nova palavra chave (var) para inferência
local de tipos

• JVM: vários melhoramentos
Versionamento
• Dois lançamentos por ano

• Em 2018

• 18.3 (março) = Java 10 (rapid release)

• 18.9 (setembro) = Java 11 (LTS)
Inferência de tipos
• Palavra-chave var no lugar de declaração de tipo em
atribuição. Em vez de:

HashMap<String, Integer> map = new HashMap<>();
InputStream in = 

Classpath.getSystemResourceAsStream();
String nome = "Hello!";
• Pode-se usar:

var map = new HashMap<String, Integer>();
var in = Classpath.getSystemResourceAsStream();
var nome = "Hello!";
• Restrito a situações onde pode-se inferir o tipo (não pode
ser usado em declarações ou parâmetros de métodos)
Outras novidades
• Outras novidades do Java 10 estão relacionadas à JVM:

• Coletor de lixo (G1) realiza coleta completa de forma
paralela, reduzindo latência

• Diversas configurações de memória (como a
possibilidade de escolher onde o heap será alocado,
suporte nativo a Docker com configuração automática)

• ...
JDK 11 (18.9)
• Possíveis novidades poderão vir dos seguintes projetos

• JDK: Projeto Valhalla (value types - objetos tratados
como primitivos + tradução heterogênea de tipos
genéricos - tipos parametrizados preservam
informação de tipo no bytecode)

• JVM: Projeto Panama (alternativa a JNI para interface
Java com bibliotecas nativas) + Projeto Metropolis
(Java-on-Java - uma JVM com uma JIT escrita em
Java) + Projeto Loom (simplificar modelo de threads:
fibers/continuations)
Conclusões
• Java 9 foi lançada em setembro de 2017 com diversas
novidades, com destaque para arquitetura modular
• Java 10 (18.3) permite declarar tipos com var, se for
possível inferir o tipo pela atribuição

• Próximas versões serão lançadas a cada 6 meses, e
serão identificadas pelo ano.mes: ano.3 para o release
rápido, em março, e ano.9 para o LTS em setembro
• Mais informações: http://openjdk.java.net/
Baixe esta palestra em
http://www.argonavis.com.br/download/tdc2018_flo_java9.html

+ links para referências e exemplos de código
Florianópolis
Abril/2018
helder da rocha
helder@summa.com.br
Java91011

Weitere ähnliche Inhalte

Was ist angesagt?

Spring framework-tutorial
Spring framework-tutorialSpring framework-tutorial
Spring framework-tutorialvinayiqbusiness
 
Javaserver Faces (jsf)
Javaserver Faces (jsf)Javaserver Faces (jsf)
Javaserver Faces (jsf)Enrique Polo
 
Java spring framework
Java spring frameworkJava spring framework
Java spring frameworkRajiv Gupta
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Helder da Rocha
 
Bootstrap Web Development Framework
Bootstrap Web Development FrameworkBootstrap Web Development Framework
Bootstrap Web Development FrameworkCindy Royal
 
Spring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSpring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSyrine Ben aziza
 
Springboot introduction
Springboot introductionSpringboot introduction
Springboot introductionSagar Verma
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!Jakub Kubrynski
 
What Is Java | Java Tutorial | Java Programming | Learn Java | Edureka
What Is Java | Java Tutorial | Java Programming | Learn Java | EdurekaWhat Is Java | Java Tutorial | Java Programming | Learn Java | Edureka
What Is Java | Java Tutorial | Java Programming | Learn Java | EdurekaEdureka!
 

Was ist angesagt? (20)

Java script aula 07 - j-query
Java script   aula 07 - j-queryJava script   aula 07 - j-query
Java script aula 07 - j-query
 
Spring AOP in Nutshell
Spring AOP in Nutshell Spring AOP in Nutshell
Spring AOP in Nutshell
 
Java exception-handling
Java exception-handlingJava exception-handling
Java exception-handling
 
Spring framework-tutorial
Spring framework-tutorialSpring framework-tutorial
Spring framework-tutorial
 
Spring User Guide
Spring User GuideSpring User Guide
Spring User Guide
 
Javaserver Faces (jsf)
Javaserver Faces (jsf)Javaserver Faces (jsf)
Javaserver Faces (jsf)
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
 
Spring boot
Spring bootSpring boot
Spring boot
 
Java spring framework
Java spring frameworkJava spring framework
Java spring framework
 
Laravel Introduction
Laravel IntroductionLaravel Introduction
Laravel Introduction
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
Bootstrap Web Development Framework
Bootstrap Web Development FrameworkBootstrap Web Development Framework
Bootstrap Web Development Framework
 
Spring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSpring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrine
 
Springboot introduction
Springboot introductionSpringboot introduction
Springboot introduction
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
 
Ef code first
Ef code firstEf code first
Ef code first
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc complete
Jdbc completeJdbc complete
Jdbc complete
 
What Is Java | Java Tutorial | Java Programming | Learn Java | Edureka
What Is Java | Java Tutorial | Java Programming | Learn Java | EdurekaWhat Is Java | Java Tutorial | Java Programming | Learn Java | Edureka
What Is Java | Java Tutorial | Java Programming | Learn Java | Edureka
 
Why Vue.js?
Why Vue.js?Why Vue.js?
Why Vue.js?
 

Ähnlich wie Java 9, 10, 11

A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9Helder da Rocha
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesRodrigo Cândido da Silva
 
Novidades de Java EE 7
Novidades de Java EE 7Novidades de Java EE 7
Novidades de Java EE 7pt_programar
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java FundamentosWilson Lima
 
JSF 2 Components JustJava2011
JSF 2 Components JustJava2011JSF 2 Components JustJava2011
JSF 2 Components JustJava2011Eder Magalhães
 
Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Facescejug
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaMariana de Azevedo Santos
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma javaJunior Souza
 
Zend Framework 2 é legal ! Mas como ele funciona ?!
Zend Framework 2 é legal ! Mas como ele funciona ?!Zend Framework 2 é legal ! Mas como ele funciona ?!
Zend Framework 2 é legal ! Mas como ele funciona ?!Alefe Variani
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0Paulo Neto
 
Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2Dr. Spock
 

Ähnlich wie Java 9, 10, 11 (20)

A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
 
As novidades da nova versão do Java 9
As novidades da nova versão do Java 9As novidades da nova versão do Java 9
As novidades da nova versão do Java 9
 
Novidades de Java EE 7
Novidades de Java EE 7Novidades de Java EE 7
Novidades de Java EE 7
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
JSF 2 Components JustJava2011
JSF 2 Components JustJava2011JSF 2 Components JustJava2011
JSF 2 Components JustJava2011
 
Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Faces
 
Java ee 5
Java ee 5Java ee 5
Java ee 5
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em Java
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma java
 
Aula1
Aula1Aula1
Aula1
 
Zend Framework 2 é legal ! Mas como ele funciona ?!
Zend Framework 2 é legal ! Mas como ele funciona ?!Zend Framework 2 é legal ! Mas como ele funciona ?!
Zend Framework 2 é legal ! Mas como ele funciona ?!
 
Java 9, 10 e ... 11
Java 9, 10 e ... 11Java 9, 10 e ... 11
Java 9, 10 e ... 11
 
Introdução a tecnologia Java
Introdução a tecnologia JavaIntrodução a tecnologia Java
Introdução a tecnologia Java
 
Introdução a tecnologia Java
Introdução a tecnologia JavaIntrodução a tecnologia Java
Introdução a tecnologia Java
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0
 
Java pode ser_hipster
Java pode ser_hipsterJava pode ser_hipster
Java pode ser_hipster
 
Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2
 
MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)
 

Mehr von Helder da Rocha

Como criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.jsComo criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.jsHelder da Rocha
 
Transforming public data into thematic maps (TDC2019 presentation)
Transforming public data into thematic maps (TDC2019 presentation)Transforming public data into thematic maps (TDC2019 presentation)
Transforming public data into thematic maps (TDC2019 presentation)Helder da Rocha
 
TDC 2019: transformando 
dados
públicos
em mapas interativos
TDC 2019: transformando 
dados
públicos
em mapas interativosTDC 2019: transformando 
dados
públicos
em mapas interativos
TDC 2019: transformando 
dados
públicos
em mapas interativosHelder da Rocha
 
Padrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasPadrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasHelder da Rocha
 
Visualização de dados e a Web
Visualização de dados e a WebVisualização de dados e a Web
Visualização de dados e a WebHelder da Rocha
 
Eletrônica Criativa: criando circuitos com materiais alternativos
Eletrônica Criativa: criando circuitos com materiais alternativosEletrônica Criativa: criando circuitos com materiais alternativos
Eletrônica Criativa: criando circuitos com materiais alternativosHelder da Rocha
 
Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)Helder da Rocha
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8Helder da Rocha
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)Helder da Rocha
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Helder da Rocha
 
Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Helder da Rocha
 
Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Helder da Rocha
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)Helder da Rocha
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsHelder da Rocha
 
Threads 07: Sincronizadores
Threads 07: SincronizadoresThreads 07: Sincronizadores
Threads 07: SincronizadoresHelder da Rocha
 
Threads 08: Executores e Futures
Threads 08: Executores e FuturesThreads 08: Executores e Futures
Threads 08: Executores e FuturesHelder da Rocha
 
Threads 06: Coleções concorrentes
Threads 06: Coleções concorrentesThreads 06: Coleções concorrentes
Threads 06: Coleções concorrentesHelder da Rocha
 
Threads 05: Travas de Exclusão Mútua
Threads 05: Travas de Exclusão MútuaThreads 05: Travas de Exclusão Mútua
Threads 05: Travas de Exclusão MútuaHelder da Rocha
 

Mehr von Helder da Rocha (20)

Como criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.jsComo criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.js
 
Transforming public data into thematic maps (TDC2019 presentation)
Transforming public data into thematic maps (TDC2019 presentation)Transforming public data into thematic maps (TDC2019 presentation)
Transforming public data into thematic maps (TDC2019 presentation)
 
TDC 2019: transformando 
dados
públicos
em mapas interativos
TDC 2019: transformando 
dados
públicos
em mapas interativosTDC 2019: transformando 
dados
públicos
em mapas interativos
TDC 2019: transformando 
dados
públicos
em mapas interativos
 
Padrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasPadrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemas
 
Visualização de dados e a Web
Visualização de dados e a WebVisualização de dados e a Web
Visualização de dados e a Web
 
Eletrônica Criativa: criando circuitos com materiais alternativos
Eletrônica Criativa: criando circuitos com materiais alternativosEletrônica Criativa: criando circuitos com materiais alternativos
Eletrônica Criativa: criando circuitos com materiais alternativos
 
Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
 
Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7
 
Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)
 
Curso de Java: Threads
Curso de Java: ThreadsCurso de Java: Threads
Curso de Java: Threads
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e Streams
 
Threads 07: Sincronizadores
Threads 07: SincronizadoresThreads 07: Sincronizadores
Threads 07: Sincronizadores
 
Threads 09: Paralelismo
Threads 09: ParalelismoThreads 09: Paralelismo
Threads 09: Paralelismo
 
Threads 08: Executores e Futures
Threads 08: Executores e FuturesThreads 08: Executores e Futures
Threads 08: Executores e Futures
 
Threads 06: Coleções concorrentes
Threads 06: Coleções concorrentesThreads 06: Coleções concorrentes
Threads 06: Coleções concorrentes
 
Threads 05: Travas de Exclusão Mútua
Threads 05: Travas de Exclusão MútuaThreads 05: Travas de Exclusão Mútua
Threads 05: Travas de Exclusão Mútua
 

Java 9, 10, 11