futuro da linguagem e plataforma: java 7 e 8

46
Globalcode – Open4education O futuro da linguagem e da plataforma: Java 7 e 8 Eder Magalhães @edermag www.yaw.com.br Saturday, March 31, 2012

Upload: eder-magalhaes

Post on 27-Jun-2015

2.133 views

Category:

Documents


0 download

DESCRIPTION

Apresentação "O futuro da linguagem e plataforma: Java 7 e 8", no evento Profissão Java 2012

TRANSCRIPT

Page 1: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

O futuro da linguagem e da plataforma: Java 7 e 8

Eder Magalhães@edermag

www.yaw.com.br

Saturday, March 31, 2012

Page 2: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Agenda

Organização e evolução do Java;Qual o papel do OpenJDK ?

Histórico de versões do Java;Especificação do Java 7;

Mudanças na linguagem (Projeto Coin)Exemplos do Java 7;Java EE 7, a nova plataforma;

Planejamento e exemplos do Java 8;Links;

Saturday, March 31, 2012

Page 3: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Organização e evolução da Java

Grupo de empresas e usuários: JCP;

Especificação: JSR;JSR 337: as mudanças do Java 7;

JSR 338: as mudanças do Java 8;

JSR 342: as mudanças da plataforma Java EE 7;

Saturday, March 31, 2012

Page 4: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

OpenJDK, o Java livre

O que é ?

Qual é o seu papel ?

Saturday, March 31, 2012

Page 5: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Para relembrar...

2004

04/2012

2006

Saturday, March 31, 2012

Page 6: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Para relembrar...

2004

Java 5 (Tiger) foi lançado em 2004!

04/2012

2006

Saturday, March 31, 2012

Page 7: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Para relembrar...

2006

04/2012

2006

Java 5

2004

Saturday, March 31, 2012

Page 8: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Para relembrar...

2006

Java 6 (Mustang) foi lançado em 2006!

04/2012

2006

Java 5

2004

Saturday, March 31, 2012

Page 9: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Para relembrar...

04/2012

2006

Java 5

2004

2006

Java 6

Saturday, March 31, 2012

Page 10: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Para relembrar...

2011

Depois de um longo período...

04/2012

2006

Java 5

2004

2006

Java 6

Saturday, March 31, 2012

Page 11: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Para relembrar...

2011

Java 7 (Dolphin) foi lançado em 2011

04/2012

2006

Java 5

2004

2006

Java 6

Saturday, March 31, 2012

Page 12: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Para relembrar...

2011

Mas, durante esses 5 anos ...

04/2012

2006

Java 5

2004

2006

Java 6

Saturday, March 31, 2012

Page 13: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Expectativa

2004

2006

Java 5 Java 62011

Java 7

04/2012

2006

Saturday, March 31, 2012

Page 14: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Expectativa

2004

2006

Java 5 Java 62011

Java 7 Out/2012

04/2012

2006

No fim do ano (provavelmente)...

Saturday, March 31, 2012

Page 15: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Expectativa

2004

2006

Java 5 Java 62011

Java 7 Out/2012

04/2012

2006

Java 8 será lançado!

Saturday, March 31, 2012

Page 16: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Expectativa

Java 5 Java 6

Java 7 Out/2012

Java 8

04/2012

200620

042006

2011

Saturday, March 31, 2012

Page 17: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Expectativa

Java 5 Java 6

Java 7 Out/2012

Mar/2013

Java 8

04/2012

200620

042006

2011

No começo de 2013...

Saturday, March 31, 2012

Page 18: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Expectativa

Java 5 Java 6

Java 7 Out/2012

Mar/2013

Java 8

04/2012

200620

042006

2011

é a vez da plataforma!

Saturday, March 31, 2012

Page 19: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Expectativa

Java 5 Java 6

Java 7 Out/2012

Mar/2013

Java 8

04/2012

200620

042006

2011

Java EE 7 será lançado!

Saturday, March 31, 2012

Page 20: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Trabalhos a todo vapor

Java 5 Java 6

Java 7 Out/2012

Mar/2013

Java 8

Java EE 7

04/2012

200620

042006

2011

Saturday, March 31, 2012

Page 21: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Dolphin: o Java 7!

Projeto Coin: mudanças na linguagem;

Nova API de I/O;

Melhorias em APIs antigas: JDBC e Swing;

Javadoc reestilizado;

Melhorias na “infraestrutura” do Java;

Saturday, March 31, 2012

Page 22: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Dolphin: o Java 7!

Projeto Coin: mudanças na linguagem;

Nova API de I/O;

Melhorias em APIs antigas: JDBC e Swing;

Javadoc reestilizado;

Melhorias na “infraestrutura” do Java;

Saturday, March 31, 2012

Page 23: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Projeto Coin

Novo separador para literais numéricas;

Literais binárias;

O switch suporta String;

Operador diamond e a inferência de tipos;

Gerênciamento automático de recursos;

Tratamento de exceções/erros mais flexível;

Ajuste no uso de varargs com generics;

Saturday, March 31, 2012

Page 24: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Antes sem o gerenciamento automáticopublic static void main(String args[]) throws SQLException { String query = "select nome, cpf from aluno"; String url = "jdbc:mysql://localhost:3306/test"; Connection conn = null; Statement stmt = null; ResultSet rs = null; try { conn = DriverManager.getConnection(url, "root",""); stmt = conn.createStatement(); rs = stmt.executeQuery(query); while (rs.next()) { String nome = rs.getString("nome"); String cpf = rs.getString("cpf"); System.out.printf("Nome:%s\t Cpf:%s %n", nome, cpf); } } finally { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } }}

Saturday, March 31, 2012

Page 25: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Antes sem o gerenciamento automáticopublic static void main(String args[]) throws SQLException { String query = "select nome, cpf from aluno"; String url = "jdbc:mysql://localhost:3306/test"; Connection conn = null; Statement stmt = null; ResultSet rs = null; try { conn = DriverManager.getConnection(url, "root",""); stmt = conn.createStatement(); rs = stmt.executeQuery(query); while (rs.next()) { String nome = rs.getString("nome"); String cpf = rs.getString("cpf"); System.out.printf("Nome:%s\t Cpf:%s %n", nome, cpf); } } finally { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } }}

Saturday, March 31, 2012

Page 26: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Agora com gerenciamento automáticopublic static void main(String args[]) throws SQLException { String query = "select nome, cpf from aluno"; String url = "jdbc:mysql://localhost:3306/test"; try (Connection conn = DriverManager.getConnection(url, "root",""); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(query)) { while (rs.next()) { String nome = rs.getString("nome"); String cpf = rs.getString("cpf"); System.out.printf("Nome:%s\t Cpf:%s %n", nome, cpf); } } }

Saturday, March 31, 2012

Page 27: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

NIO.2: API de I/O eficazpublic static void main(String args[]) throws SQLException { Path home = Paths.get("/home/yaw"); Path foto = home.resolve("foto.jpg"); Path backup = home.resolve("foto_backup.jpg");

//cria cópia do arquivo: foto_backup.jpg Files.copy(foto, backup);

Path destino = Paths.get("/home/yaw/backup"); //move o arquivo para o diretório backup Files.move(backup, destino.resolve(backup.getFileName()));

//lista e imprime na console o conteúdo do diretório DirectoryStream<Path> stream = Files.newDirectoryStream(home); for (Path p : stream) { System.out.println("\t -" + p ); }

}

Saturday, March 31, 2012

Page 28: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

A nova plataforma Java EE 7

O Java EE mais próximo da nuvem;

Maior suporte a HTML5;

Evolução das tecnologias:

Servlet, JSF, EL, EJB, JPA, JAX-RS, JMS e CDI;

Novos componentes (especificações):

Operações em lote, cache, concorrência e JSON;

Saturday, March 31, 2012

Page 29: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

A nova plataforma Java EE 7

O Java EE mais próximo da nuvem;

Maior suporte a HTML5;

Evolução das tecnologias:

Servlet, JSF, EL, EJB, JPA, JAX-RS, JMS e CDI;

Novos componentes (especificações):

Operações em lote, cache, concorrência e JSON;

Saturday, March 31, 2012

Page 30: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

De volta a linguagem, agora o Java 8

Concluir o Projeto Coin;

Nova API para manipulação de datas no Java;

Suporte a definição de módulos (Projeto Jigsaw);

Linguagem mais eficiente (Projeto Lambda);

Saturday, March 31, 2012

Page 31: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

De volta a linguagem, agora o Java 8

Concluir o Projeto Coin;

Nova API para manipulação de datas no Java;

Suporte a definição de módulos (Projeto Jigsaw);

Linguagem mais eficiente (Projeto Lambda);

Saturday, March 31, 2012

Page 32: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Ordernar um array no clique do botão...final String[] nomes = {"Pedro", "ana", "paula", "Amanda"}; JButton button = new JButton("Ordenar");button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { Arrays.sort(nomes, new Comparator<String>() { public int compare(String t1, String t2) { return t1.compareToIgnoreCase(t2); } }); }});...

Saturday, March 31, 2012

Page 33: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Ordernar um array no clique do botão...final String[] nomes = {"Pedro", "ana", "paula", "Amanda"}; JButton button = new JButton("Ordenar");button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { Arrays.sort(nomes, new Comparator<String>() { public int compare(String t1, String t2) { return t1.compareToIgnoreCase(t2); } }); }});...

Hoje, com Java 7!

Saturday, March 31, 2012

Page 34: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Em Java 8 poderá ser feito assim...final String[] nomes = {"Pedro", "ana", "paula", "Amanda"}; JButton button = new JButton("Ordenar");

Comparator<String> comp = (s1, s2) -> s1.compareToIgnoreCase(s2);ActionListener l = (ActionEvent ae) -> Arrays.sort(nomes, comp);

button.addActionListener(l);...

Saturday, March 31, 2012

Page 35: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Em Java 8 poderá ser feito assim...final String[] nomes = {"Pedro", "ana", "paula", "Amanda"}; JButton button = new JButton("Ordenar");

Comparator<String> comp = (s1, s2) -> s1.compareToIgnoreCase(s2);ActionListener l = (ActionEvent ae) -> Arrays.sort(nomes, comp);

button.addActionListener(l);...

Expressões Lambda do Java 8!

Saturday, March 31, 2012

Page 36: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Calma, ainda não acabou!

Rumores sobre o Java 9:

Saturday, March 31, 2012

Page 37: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Calma, ainda não acabou!

Rumores sobre o Java 9:

Saturday, March 31, 2012

Page 38: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Um pedaço do universo Java

Saturday, March 31, 2012

Page 39: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Um pedaço do universo Java

JavaJava EE

Swing

Lucene

GWT

Servlet

JSP

JSF

Spring

Struts

ANT

Maven

JavaFX

Jasper

Tapestry

JPA

Hibernate

Wicket

JSTL

Seam

Vaadin

Java ME

RestletJMS

EJB

Play

JUnit

PrimeFaces

OSGI

JAASJython

JRuby

Rhino

JHome

RichFaces

JAXB

Axis

Eclipse

Tomcat

Netbeans

JavaDB

JAX-WS

Java TV

Saturday, March 31, 2012

Page 40: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Ao invés de

Saturday, March 31, 2012

Page 41: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Ao invés de

Uhn... Difícil, são muitas tecnologias!

Saturday, March 31, 2012

Page 42: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Eu prefiro

Saturday, March 31, 2012

Page 43: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

Eu prefiro

Uau... São muitas oportunidades!

Saturday, March 31, 2012

Page 46: Futuro da linguagem e plataforma: Java 7 e 8

Globalcode  –  Open4education

[email protected]@edermag

Obrigado !

Saturday, March 31, 2012