1. O futuro da linguagem e da
plataforma: Java 7 e 8
Eder Magalhães
@edermag
www.yaw.com.br
Globalcode
–
Open4education
Saturday, March 31, 2012
2. 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;
Globalcode
–
Open4education
Saturday, March 31, 2012
3. 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;
Globalcode
–
Open4education
Saturday, March 31, 2012
4. OpenJDK, o Java livre
O que é ?
Qual é o seu papel ?
Globalcode
–
Open4education
Saturday, March 31, 2012
5. Para relembrar...
04
2
01
20
/2
04
Globalcode
–
Open4education
Saturday, March 31, 2012
6. Para relembrar...
Java 5 (Tiger) foi lançado em 2004!
04
2
01
20
/2
04
Globalcode
–
Open4education
Saturday, March 31, 2012
7. Para relembrar...
Java 5
04
06
2
01
20
20
/2
04
Globalcode
–
Open4education
Saturday, March 31, 2012
8. Para relembrar...
Java 6 (Mustang) foi lançado em 2006!
Java 5
04
06
2
01
20
20
/2
04
Globalcode
–
Open4education
Saturday, March 31, 2012
14. Expectativa
No fim do ano (provavelmente)...
2
01
/2
ut
Java 7
O
11
20
Java 5 Java 6
04
06
2
01
20
20
/2
04
Globalcode
–
Open4education
Saturday, March 31, 2012
17. Expectativa
13
No começo de 2013...
0
/2
ar
Java 8
M
2
01
/2
ut
Java 7
O
11
20
Java 5 Java 6
04
06
2
01
20
20
/2
04
Globalcode
–
Open4education
Saturday, March 31, 2012
18. Expectativa
13
é a vez da plataforma!
0
/2
ar
Java 8
M
2
01
/2
ut
Java 7
O
11
20
Java 5 Java 6
04
06
2
01
20
20
/2
04
Globalcode
–
Open4education
Saturday, March 31, 2012
19. Expectativa
13
Java EE 7 será lançado!
0
/2
ar
Java 8
M
2
01
/2
ut
Java 7
O
11
20
Java 5 Java 6
04
06
2
01
20
20
/2
04
Globalcode
–
Open4education
Saturday, March 31, 2012
20. Trabalhos a todo vapor
Java EE 7
13
0
/2
ar
Java 8
M
2
01
/2
ut
Java 7
O
11
20
Java 5 Java 6
04
06
2
01
20
20
/2
04
Globalcode
–
Open4education
Saturday, March 31, 2012
21. 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;
Globalcode
–
Open4education
Saturday, March 31, 2012
22. 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;
Globalcode
–
Open4education
Saturday, March 31, 2012
23. 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;
Globalcode
–
Open4education
Saturday, March 31, 2012
24. Antes sem o gerenciamento automático
public 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:%st Cpf:%s %n", nome, cpf);
}
} finally {
if (rs != null) { rs.close(); }
if (stmt != null) { stmt.close(); }
if (conn != null) { conn.close(); }
}
}
Globalcode
–
Open4education
Saturday, March 31, 2012
25. Antes sem o gerenciamento automático
public 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:%st Cpf:%s %n", nome, cpf);
}
} finally {
if (rs != null) { rs.close(); }
if (stmt != null) { stmt.close(); }
if (conn != null) { conn.close(); }
}
}
Globalcode
–
Open4education
Saturday, March 31, 2012
27. NIO.2: API de I/O eficaz
public 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 );
}
}
Globalcode
–
Open4education
Saturday, March 31, 2012
28. 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;
Globalcode
–
Open4education
Saturday, March 31, 2012
29. 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;
Globalcode
–
Open4education
Saturday, March 31, 2012
30. 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);
Globalcode
–
Open4education
Saturday, March 31, 2012
31. 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);
Globalcode
–
Open4education
Saturday, March 31, 2012
32. 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);
}
});
}
});
...
Globalcode
–
Open4education
Saturday, March 31, 2012
33. 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!
Globalcode
–
Open4education
Saturday, March 31, 2012
34. 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);
...
Globalcode
–
Open4education
Saturday, March 31, 2012
35. 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!
Globalcode
–
Open4education
Saturday, March 31, 2012
36. Calma, ainda não acabou!
Rumores sobre o Java 9:
Globalcode
–
Open4education
Saturday, March 31, 2012
37. Calma, ainda não acabou!
Rumores sobre o Java 9:
Globalcode
–
Open4education
Saturday, March 31, 2012
38. Um pedaço do universo Java
Globalcode
–
Open4education
Saturday, March 31, 2012
39. Um pedaço do universo Java
Spring JavaFX JPA JUnit
Eclipse Java TV
JMS ANT Restlet JRuby Axis Tomcat
Java EE Struts
Java Tapestry Play JAX-WS Lucene
Swing
Servlet OSGI Jasper Netbeans Seam
Hibernate
JSTL GWT Maven JSF JavaDB
Vaadin
JSP Rhino PrimeFaces
Wicket
EJB RichFaces Java ME
Jython JAXB
JHome JAAS
Globalcode
–
Open4education
Saturday, March 31, 2012
40. Ao invés de
Globalcode
–
Open4education
Saturday, March 31, 2012
41. Ao invés de
Uhn... Difícil, são muitas tecnologias!
Globalcode
–
Open4education
Saturday, March 31, 2012
42. Eu prefiro
Globalcode
–
Open4education
Saturday, March 31, 2012
43. Eu prefiro
Uau... São muitas oportunidades!
Globalcode
–
Open4education
Saturday, March 31, 2012
44. Blog
http://blog.globalcode.com.br/search/label/java
Vídeos
http://www.yaw.com.br/screencast/tag/JDK7/
Minicurso
http://www.globalcode.com.br/gratuitos/minicursos/
minicurso-JDK7-modificacoes-na-linguagem
Projeto com exemplos
https://github.com/edermag/jdk7.minicurso/
#open4education
Globalcode
–
Open4education
Saturday, March 31, 2012