• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Novidades do Java7
 

Novidades do Java7

on

  • 9,923 views

Palestra apresentada por Leandro Nunes, no FLISOL 2010, edição de Porto Alegre-RS....

Palestra apresentada por Leandro Nunes, no FLISOL 2010, edição de Porto Alegre-RS.

Nesta palestra foram apresentadas as novidades do Java 7, OpenJDK 7 e alguns sub-projetos como Project Coin, Project Jigsaw e the Da Vinci Machine Project.

Para mais informações visite http://leandron.wordpress.com.

Statistics

Views

Total Views
9,923
Views on SlideShare
9,627
Embed Views
296

Actions

Likes
5
Downloads
0
Comments
0

7 Embeds 296

http://leandron.wordpress.com 176
http://leandronunes.org 80
http://www.slideshare.net 35
http://rtiweb.net 2
http://www.lmodules.com 1
http://twitter.com 1
url_unknown 1
More...

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Novidades do Java7 Novidades do Java7 Presentation Transcript

    • As novidades do Java 7 Leandro Nunes - RSJUG [email_address] FLISOL 2010 – Porto Alegre/RS
    • #whoami
      • Leandro Nunes
        • Programador Java (SCJP)
        • Coordenador do RSJUG - www.rsjug.org
        • Membro do Grupo de Usuários OpenSolaris/POA
        • Palestrante no FISL 10, JUGDay, Software Freedom Day...
        • Blog
        • http://leandron.wordpress.com - essa apresentação está lá
    • Sobre o que vamos falar...
      • Java e software livre
        • O projeto OpenJDK
      • Java 7
        • Mudanças na linguagem
        • Suporte à linguagens dinâmicas
        • Modularização [JSR-294]
        • Cronograma da JDK7
      • Referências e Links
    • Java e Software Livre OpenJDK http://openjdk.dev.java.net
    • O projeto OpenJDK
      • Anunciado em 2006, o projeto tinha o objetivo de liberar o código da implementação de Java da Sun sob uma licença livre
      • Hoje isso é realidade...
    • Java 7 Mudanças na linguagem Project Coin http://openjdk.java.net/projects/coin
    • String em switch String s = "abc"; switch(s) { case "abc": processAbc(s); break; case "def": case "DEF": processDef(s); break; case "ghi": processGhi(s); default: processDefault(s); break; }
      • Antes só era permitido com tipos inteiros e enums
    • Verificação de null s
      • Antes, para verificar se um objeto tem referência nula...
      String aMember = null; if ( g != null && g.members != null && g.members[0].name != null ) {     aMember = g.members[0].name; } else {     aMember = "nobody"; }
    • Verificação de null s
      • Agora existe um operador exclusivo para essa verificação, inline
      • E o mesmo código do slide anterior ficaria assim
      final String aMember = g?.members?[0]?.name ?: "nobody";
    • Tipos inteiros
      • Suporte à representação de binários
      • Separadores “ _ ” (para aumentar a legibilidade)
      • Novos sufixos para tipos inteiros
        • Byte: y
        • Short: s
        • Obs: no build atual, ainda não implementado.
    • Tipos inteiros
      • Binários
      • Separadores
      //equivalente ao numero 12, em decimal int numeroBinario = 0b1100; int numeroDoTelefone = 555_555_1212; int numeroDoCartao = 5555_5555_5555_5555;
    • Tipos inteiros
      • Sufixos para byte e short
      • Antes
      • Agora
      byte[] stuff = { (byte)0x80,  (byte)0xFF}; byte[] ufum7 = { 0x80y, 0xFFy }; puro overhead! Simples, prático, elegante!
    • Acesso indexado à listas e mapas
      • Podemos fazer acesso direto a um membro de lista um mapa, através de seu indice ou chave
      • Lista
      • Mapa
      List<String> myList = Arrays.asList(new String[] {&quot;a&quot;, &quot;b&quot;, &quot;c&quot;}); String firstElement = myList[0] ; //retorna &quot;a&quot; Map<Integer, String> m1 = new HashMap<Integer, String>(4); m1[Integer.valueOf(1)] = &quot;One&quot;;
    • Declaração literal de Collection
      • Para declarar uma collection inicializada...
      • Antes
      • Java 7
      final List<Integer> piDigits = Collections.unmodifiableList( Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 9 )); final List<Integer> piDigits = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 9];
    • Declaração literal de Collection
      • Para os mapas, não existia uma declaração que em uma mesma linha inicializasse os itens
      • Antes
      final Map<Integer, String> platonicSolids; static { solids = new LinkedHashMap<Map<Integer, String>; solids.put(4,  &quot;tetrahedron&quot;); solids.put(6,  &quot;cube&quot;); solids.put(8,  &quot;octahedron&quot;); solids.put(12, &quot;dodecahedron&quot;); solids.put(20, &quot;icosahedron&quot;); platonicSolids = Collections.immutableMap(solids); }
    • Declaração literal de Collection
      • Em Java 7, o mesmo mapa pode ser inicializado da seguinte forma
      final Map<Integer, String> platonicSolids = { 4 : &quot;tetrahedron&quot;, 6 : &quot;cube&quot;, 8 : &quot;octahedron&quot;, 12 : &quot;dodecahedron&quot;, 20 : &quot;icosahedron&quot; };
    • Simplificação em generics
      • Não precisamos mais ser redundantes!
      • ANTES
      • Java 7
      Map <String, List<String>> anagrams = new HashMap <String, List<String>> (); Map <String, List<String>> anagrams = new HashMap <> (); Igual! Lógico!
    • Tratamento de exceções
      • Quando queríamos tratar várias exceções com um código em comum...
      } catch (Exception1 ex) {     LOGGER.log(Level.SEVERE, ex);     throw ex; } catch (Exception2 ex) {     LOGGER.log(Level.SEVERE, ex);     throw ex; }
    • Tratamento de exceções
      • Em Java 7 é possível tratar várias exceções num mesmo bloco...
      } catch (Exception1 | Exception2 ex) {     LOGGER.log(Level.SEVERE, ex);     throw ex; } Várias exceções aqui!
    • Gerenciamento de recursos
      • Uma variação do bloco try , permitirá que o Java faça o fechamento de um recurso tão logo estejamos fora de seu escopo
      • Versão Java <= 6
      static String readFirstLineFromFile(String path) throws IOException { BufferedReader br = new BufferedReader(new FileReader(path)); try { return br .readLine(); } finally { br .close(); } } Temos que lembrar de fechar o recurso!
    • Gerenciamento de recursos
      • Uma variação do bloco try , permitirá que o Java faça o fechamento de um recurso tão logo estejamos fora de seu escopo
      • Versão Java 7
      static String readFirstLineFromFile2(String path) throws IOException { try ( BufferedReader br = new BufferedReader(new FileReader(path) ) { return br.readLine(); } } Aqui o recurso br será automaticamente fechado
    • Outras melhorias
      • Indexação de arrays com 64-bits
        • Mais de 3.000.000 de elementos
    • Java 7 Indo além...
    • Suporte à linguagens dinâmicas
      • Da Vinci Machine Project (JSR 292)
      • “ A Java Virtual Machine não conhece NADA sobre a linguagem de programação. Ela apenas sabe executar um bytecode que é gerado pelo compilador.”
    • Suporte à linguagens dinâmicas
      • Hoje são dezenas de linguagens que rodam na JVM
      Groovy Jython JRuby JavaFX Script BeanShell Modula-2 Tea iScript Phobos FScript JESS Jickle PLAN Eiffel Tcl Yoix Drools JudoScript Nice WebL E Logo C# Scala Smalltalk
    • Suporte à linguagens dinâmicas
      • O objetivo deste projeto é criar instruções na JVM para ativar bytecodes externos
      • O nome dessa instrução é invokeDynamic
    • Modularização
      • Project Jigsaw (JSR-294)
      • O objetivo deste projeto é criar um sistema para modularização para projetos Java
      • De acordo com as especificações, esse sistema de módulos deve ser capaz de suportar
        • Módulos da JVM
        • Módulos de pacotes nativos
        • Módulos dentro de sua estrutura de pacotes
    • Modularização module org.rsjug.eventos { system jigsaw; requires module jdom; requires module tagsoup; requires module rome; requires module rome-fetcher; requires module java-xml @7.* ; requires module java-base @[1.6, 2] ; class org.rsjug.eventos.Main; } Nome do módulo D E P E N D Ê N C I A S Sistema de módulos Classe principal
    • Modularização
      • Todos esses dados ficam num arquivo chamado
        • module-info.java
        • No diretório raiz do seu código fonte
    • Cronograma JDK7
      • Atualmente : b89 (15/04/2010)
      • M8 2010/04/16 – 2010/06/03 (b96)
      • M9 2010/06/04 – 2010/07/22 (b103)
      • M10 2010/07/23 – 2010/09/09 (b110)
    • Referências e links
      • Palestra do Simon Ritter sobre Java 7, apresentada no Sun Tech Days 2009-2010
        • http://uk.sun.com/sunnews/events/2009/dec/java/pdf/6a%20-%20JDK7%20-%20Simon%20Ritter.pdf
      • http://openjdk.java.net/
      • http://jdk7.dev.java.net/
      • http://www.rsjug.org
      • http://java.sun.com/features/jdk/7/
      • http://www.jcp.org
    • As novidades do Java 7 Leandro Nunes - RSJUG [email_address] FLISOL 2010 – Porto Alegre/RS ?