SlideShare uma empresa Scribd logo
1 de 46
Baixar para ler offline
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
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
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
OpenJDK, o Java livre

       O que é ?


       Qual é o seu papel ?




                              Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
Para relembrar...
   04




                                  2
                               01
20




                             /2
                           04
                           Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
Para relembrar...



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




                                                  2
                                               01
20




                                             /2
                                            04
                                           Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
Para relembrar...




 Java 5
   04




                            06




                                        2
                                     01
20




                           20




                                   /2
                                 04
                                 Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
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
Para relembrar...




 Java 5                    Java 6
   04




                               06




                                           2
                                        01
20




                             20




                                      /2
                                    04
                                    Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
Para relembrar...



                       Depois de um longo período...




                                               11
                                              20
 Java 5                    Java 6
   04




                               06




                                                         2
                                                    01
20




                             20




                                                    /2
                                                   04
                                               Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
Para relembrar...



               Java 7 (Dolphin) foi lançado em 2011




                                          11
                                         20
 Java 5                    Java 6
   04




                               06




                                                    2
                                               01
20




                             20




                                               /2
                                              04
                                           Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
Para relembrar...



                           Mas, durante esses 5 anos ...




                                                    11
                                                   20
 Java 5                    Java 6
   04




                               06




                                                              2
                                                         01
20




                             20




                                                         /2
                                                        04
                                                    Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
Expectativa




                                    Java 7




                                        11
                                      20
 Java 5                    Java 6
   04




                               06




                                                  2
                                             01
20




                             20




                                             /2
                                           04
                                         Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
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
Expectativa


                                    Java 8 será lançado!




                                                                              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
Expectativa


                                                Java 8




                                                           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
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
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
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
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
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
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
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
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
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
Agora com 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";

        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:%st Cpf:%s %n", nome, cpf);
          }
        }
    }




                                                        Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
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
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
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
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
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
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
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
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
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
Calma, ainda não acabou!
       Rumores sobre o Java 9:




                                 Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
Calma, ainda não acabou!
       Rumores sobre o Java 9:




                                 Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
Um pedaço do universo Java




                                Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
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
Ao invés de




                           Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
Ao invés de




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




                                        Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
Eu prefiro




                           Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
Eu prefiro




          Uau... São muitas oportunidades!




                                      Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
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
Links
       http://slideshare.net/edermag
       http://openjdk.java.net/
       http://openjdk.java.net/projects/jdk7/
       http://openjdk.java.net/projects/jdk8/
       http://www.infoq.com/br/articles/java7coin
       http://www.infoq.com/br/news/2011/10/java8-java9-
       javafx2
       http://www.infoq.com/br/news/2012/01/javaEE7-
       novidades



                                           Globalcode	
  –	
  Open4education
Saturday, March 31, 2012
Obrigado !

                           eder@yaw.com.br
                              @edermag




                                             Globalcode	
  –	
  Open4education
Saturday, March 31, 2012

Mais conteúdo relacionado

Mais de Eder Magalhães

Desenvolva uma app Java web em poucos passos, com o Forge
Desenvolva uma app Java web em poucos passos, com o ForgeDesenvolva uma app Java web em poucos passos, com o Forge
Desenvolva uma app Java web em poucos passos, com o ForgeEder Magalhães
 
MongoDB outras alternativas de persistência
MongoDB outras alternativas de persistênciaMongoDB outras alternativas de persistência
MongoDB outras alternativas de persistênciaEder Magalhães
 
Java e uma visão sobre PaaS
Java e uma visão sobre PaaSJava e uma visão sobre PaaS
Java e uma visão sobre PaaSEder Magalhães
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingEder Magalhães
 
Introdução a Plataforma Java EE
Introdução a Plataforma Java EEIntrodução a Plataforma Java EE
Introdução a Plataforma Java EEEder Magalhães
 
As modificações na Linguagem: Java 7 e Java 8
As modificações na Linguagem: Java 7 e Java 8As modificações na Linguagem: Java 7 e Java 8
As modificações na Linguagem: Java 7 e Java 8Eder Magalhães
 
Desenvolvimento Produtivo com Spring Roo
Desenvolvimento Produtivo com Spring RooDesenvolvimento Produtivo com Spring Roo
Desenvolvimento Produtivo com Spring RooEder Magalhães
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineEder Magalhães
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoEder Magalhães
 
JSF 2 Components JustJava2011
JSF 2 Components JustJava2011JSF 2 Components JustJava2011
JSF 2 Components JustJava2011Eder Magalhães
 
Introducao ao Spring Web MVC
Introducao ao Spring Web MVCIntroducao ao Spring Web MVC
Introducao ao Spring Web MVCEder Magalhães
 
JavaFX: Abordagem Prática
JavaFX: Abordagem PráticaJavaFX: Abordagem Prática
JavaFX: Abordagem PráticaEder Magalhães
 
Desenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e SpringDesenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e SpringEder Magalhães
 
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesJSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesEder Magalhães
 
Profissao java gwt e javafx
Profissao java gwt e javafxProfissao java gwt e javafx
Profissao java gwt e javafxEder Magalhães
 
JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010Eder Magalhães
 

Mais de Eder Magalhães (20)

Desenvolva uma app Java web em poucos passos, com o Forge
Desenvolva uma app Java web em poucos passos, com o ForgeDesenvolva uma app Java web em poucos passos, com o Forge
Desenvolva uma app Java web em poucos passos, com o Forge
 
MongoDB outras alternativas de persistência
MongoDB outras alternativas de persistênciaMongoDB outras alternativas de persistência
MongoDB outras alternativas de persistência
 
Java e uma visão sobre PaaS
Java e uma visão sobre PaaSJava e uma visão sobre PaaS
Java e uma visão sobre PaaS
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computing
 
Introdução a Plataforma Java EE
Introdução a Plataforma Java EEIntrodução a Plataforma Java EE
Introdução a Plataforma Java EE
 
As modificações na Linguagem: Java 7 e Java 8
As modificações na Linguagem: Java 7 e Java 8As modificações na Linguagem: Java 7 e Java 8
As modificações na Linguagem: Java 7 e Java 8
 
Desenvolvimento Produtivo com Spring Roo
Desenvolvimento Produtivo com Spring RooDesenvolvimento Produtivo com Spring Roo
Desenvolvimento Produtivo com Spring Roo
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App Engine
 
Java7 tdc2011
Java7 tdc2011Java7 tdc2011
Java7 tdc2011
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais rico
 
JSF 2 Components JustJava2011
JSF 2 Components JustJava2011JSF 2 Components JustJava2011
JSF 2 Components JustJava2011
 
Introducao Spring ROO
Introducao Spring ROOIntroducao Spring ROO
Introducao Spring ROO
 
Introducao Google GO
Introducao Google GOIntroducao Google GO
Introducao Google GO
 
Introducao ao Spring Web MVC
Introducao ao Spring Web MVCIntroducao ao Spring Web MVC
Introducao ao Spring Web MVC
 
JavaFX: Abordagem Prática
JavaFX: Abordagem PráticaJavaFX: Abordagem Prática
JavaFX: Abordagem Prática
 
Desenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e SpringDesenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e Spring
 
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesJSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
 
Profissao java gwt e javafx
Profissao java gwt e javafxProfissao java gwt e javafx
Profissao java gwt e javafx
 
JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010
 
Android SestInfo 2010
Android SestInfo 2010Android SestInfo 2010
Android SestInfo 2010
 

Futuro da linguagem e plataforma: Java 7 e 8

  • 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
  • 9. Para relembrar... Java 5 Java 6 04 06 2 01 20 20 /2 04 Globalcode  –  Open4education Saturday, March 31, 2012
  • 10. Para relembrar... Depois de um longo período... 11 20 Java 5 Java 6 04 06 2 01 20 20 /2 04 Globalcode  –  Open4education Saturday, March 31, 2012
  • 11. Para relembrar... Java 7 (Dolphin) foi lançado em 2011 11 20 Java 5 Java 6 04 06 2 01 20 20 /2 04 Globalcode  –  Open4education Saturday, March 31, 2012
  • 12. Para relembrar... Mas, durante esses 5 anos ... 11 20 Java 5 Java 6 04 06 2 01 20 20 /2 04 Globalcode  –  Open4education Saturday, March 31, 2012
  • 13. Expectativa Java 7 11 20 Java 5 Java 6 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
  • 15. Expectativa Java 8 será lançado! 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
  • 16. Expectativa Java 8 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
  • 26. Agora com 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"; 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:%st Cpf:%s %n", nome, cpf); } } } 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
  • 45. Links http://slideshare.net/edermag http://openjdk.java.net/ http://openjdk.java.net/projects/jdk7/ http://openjdk.java.net/projects/jdk8/ http://www.infoq.com/br/articles/java7coin http://www.infoq.com/br/news/2011/10/java8-java9- javafx2 http://www.infoq.com/br/news/2012/01/javaEE7- novidades Globalcode  –  Open4education Saturday, March 31, 2012
  • 46. Obrigado ! eder@yaw.com.br @edermag Globalcode  –  Open4education Saturday, March 31, 2012