Linguagem de programação Java 6, 7 e 8

3.629 visualizações

Publicada em

Palestra sobre a evolução da linguagem de programação Java desde a versão 1.0 até os planos para Java 7 e Java 8, anunciados pela Oracle em outubro de 2010. A palestra foi apresentada no dia 15 de outubro de 2010 no evento Plataforma Java x Plataforma .NET - Edição SP 2010.

0 comentários
6 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
3.629
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.201
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
6
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Linguagem de programação Java 6, 7 e 8

  1. 1. Plataforma Java x Plataforma .NET Edição SP 2010 Tema 2 Linguagem de programação (15 de outubro de 2010) Linguagem de programação Java 6 Novidades das próximas versões: Java 7 e Java 8 Rogério Moraes de Carvalho Twitter: @rogeriomc rogeriom@gmx.net
  2. 2. Edição SP 2010 Plataforma Java x Plataforma .NET Agenda  A evolução da linguagem Java  Java 1.0: A linguagem  Java 1.0: Tipos primitivos e por referência  Java 1.0: Arrays  Java 1.0: Gerenciamento de memória  Java 1.0: Classes e seus membros  Java 1.0: Acessibilidade de membros  Java 1.0: Exemplo de membros  Java 1.0: Interfaces  Java 1.0: Herança e polimorfismo © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 2
  3. 3. Edição SP 2010 Plataforma Java x Plataforma .NET Agenda  Java 1.1: Classes aninhadas  Java 1.2: Palavra-chave strictfp  Java 1.4: Palavra-chave assert  Java 5.0: Generics  Java 5.0: Laço for avançado  Java 5.0: Autoboxing/unboxing  Java 5.0: Motivação para enumerações  Java 5.0: Enumerações  Java 5.0: Varargs  Java 5.0: Anotações (metadados) © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 3
  4. 4. Edição SP 2010 Plataforma Java x Plataforma .NET Agenda  OpenJDK  Repensando o JDK 7  Escolha do plano B  Detalhes do plano B  IBM se junta ao OpenJDK  Diálogo pelo Twitter com Dalibor Topic © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 4
  5. 5. Edição SP 2010 Plataforma Java x Plataforma .NET Agenda  Java 7: JSR 292 - Linguagens dinâmicas  Java 7: JSR TBD - Project Coin (part 1)  Java 8: JSR 294 - Mudularidade  Java 8: JSR TBD - Projeto Lambda  Java 8: JSR 308 - Anotações  Java 8: JSR TBD - Project Coin (part 2)  Demonstração  Conclusão  Referências © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 5
  6. 6. Edição SP 2010 Plataforma Java x Plataforma .NET A evolução da linguagem Java Generics, anotações (metadados), Java 5.0 autoboxing/unboxing, enumerações, (Set 2004) varargs, laço for avançado e static import A evolução da linguagem Java passou a ser Java 1.4 governada pelo Java Community Process (JCP) (Fev 2002) no JSR 901 e acréscimo da palavra-chave assert Acréscimo da palavra-chave strictfp para garantir a Java 1.2 portabilidade em cálculos com ponto flutuante (Dez 1998) Java 1.1 Suporte a classes internas (classes aninhadas) (Fev 1997) Linguagem de programação orientada a objetos projetada Java 1.0 para ter o mínimo de dependência de implementação (Jan 1996) © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 6
  7. 7. Edição SP 2010 Plataforma Java x Plataforma .NET A evolução da linguagem Java Modularidade (pacotes e superpacotes), projeto Lambda (tipos funções e expressões Lambda), extensão da sintaxe de anotações, Java 8 expressões literais para listas, conjuntos e (Final de 2012) mapas, acesso com sintaxe de índices para listas e mapas Suporte a linguagens tipadas dinamicamente, strings Java 7 em switch, try-with-resources, inferência melhorada (Meio de 2011) na criação de instâncias genéricas (“diamond”), invocação simplificada com varargs, literais binários e sublinhado para literais inteiros, multi-catch © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 7
  8. 8. Edição SP 2010 Plataforma Java x Plataforma .NET Java 1.0: A linguagem  Linguagem Java  Linguagem de programação orientada a objetos de propósito geral, especificamente projetada para ter um mínimo de dependência de implementações  Relacionada com C e C++, mas organizada de modo diferente  Uma quantidade de características de C e C++ foram omitidas e ideias de outras linguagens incluídas  “Olá, mundo!” em Java public class OlaMundo { public static void main(String[] args) { System.out.println("Olá, mundo!"); } } © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 8
  9. 9. Edição SP 2010 Plataforma Java x Plataforma .NET Java 1.0: Tipos primitivos e por referência  Os tipos da linguagem Java são divididos em duas categorias  Tipos primitivos  Tipo booleano boolean  Tipos inteiros byte, short, int, long, char  Tipos de ponto flutuante float, double  Tipos por referência  Tipos classes class Pessoa { ... }  Tipos interfaces interface Lista { ... }  Tipos arrays int[] primos = { 2, 3, 5, 7, 11 } © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 9
  10. 10. Edição SP 2010 Plataforma Java x Plataforma .NET Java 1.0: Arrays  O que é um array?  É uma estrutura de dados que contém um número fixo de variáveis chamadas de elementos do array  Os elementos do array são acessados por índices iniciados em zero  Tipos de arrays  Unidimensionais int[] arr = new int[5];  Multidimensionais  Irregulares int[][] j2; int[][][] j3; © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 10
  11. 11. Edição SP 2010 Plataforma Java x Plataforma .NET Java 1.0: Gerenciamento de memória  Gerenciamento manual de memória  Requer que o desenvolvedor gerencie a alocação e liberação de blocos de memória  Tarefa repetitiva e sujeita a erros  Gerenciamento automático de memória  Usado pelo Java para livrar os desenvolvedores da tarefa cansativa de gerenciar a memória  O serviço da JVM (Java Virtual Machine) responsável pela liberação da memória usada por objetos é denominado coletor de lixo (garbage collector)  Um objeto se torna elegível a ser coletado pelo coletor de lixo quando não há a possibilidade de nenhum código acessá-lo © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 11
  12. 12. Edição SP 2010 Plataforma Java x Plataforma .NET Java 1.0: Classes e seus membros  Classes  Membros de classes  Definem novos tipos por  Classes podem ter os referência seguintes tipos de  Uma classe pode herdar membros de outra classe  Campos  Herança simples (de uma  Métodos única classe)  Construtores  Uma classe pode  Inicializadores de instância e estáticos implementar múltiplas  Classes e interfaces interfaces aninhadas © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 12
  13. 13. Edição SP 2010 Plataforma Java x Plataforma .NET Java 1.0: Acessibilidade de membros  Acessibilidade de membros de classes  Cada membro tem uma acessibilidade associada  Controla as regiões de texto de programa que estão habilitadas a acessar o membro Modificador de Acessibilidade acesso public Acesso ilimitado Acesso limitado à classe contêiner, a protected classes derivadas ou classes num mesmo pacote “sem modificador” Acesso limitado à classe contêiner ou (acesso padrão) a classes no mesmo pacote private Acesso limitado à classe contêiner © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 13
  14. 14. Edição SP 2010 Plataforma Java x Plataforma .NET Java 1.0: Exemplo de membros  Classe com cada um dos tipos de membros class Classe { private int campo; private static int campoEstatico = 34; public void metodoSemParametroNemRetorno() { } public String metodoComParametroComRetorno(double d) { ... } public Classe() { } public Classe(int valor) { } { /* Inicializador de instância 1 */ } { /* Inicializador de instância 2 */ } static { /* Inicializador estático 1 */ } static { /* Inicializador estático 2 */ } class ClasseAninhada { } interface InterfaceAninhada { } } © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 14
  15. 15. Edição SP 2010 Plataforma Java x Plataforma .NET Java 1.0: Interfaces  Conceito de interface  Uma interface define um contrato  Classes podem implementar múltiplas interfaces  Características de uma interface  Interfaces podem ter os seguintes membros  Campos estáticos constantes (finais) e métodos  Exemplo da declaração de uma interface interface Interface { int CONSTANTE1 = 10; int CONSTANTE2 = 20; void metodo(int valor); String metodo2(); } © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 15
  16. 16. Edição SP 2010 Plataforma Java x Plataforma .NET Java 1.0: Herança e polimorfismo  Classes abstratas  Classes definidas para serem classes bases de outras classes abstract class ClasseAbstrata { ... }  Métodos finais (palavra-chave final)  Um método pode ser declarado como final para prevenir que ele seja sobrescrito ou ocultado em subclasses  Em Java, métodos são polimórficos por padrão class Classe { void metodoPolimorfico() { ... } final void metodoNãoPolimorfico() { ... } } © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 16
  17. 17. Edição SP 2010 Plataforma Java x Plataforma .NET Java 1.1: Classes aninhadas  Conceito de classes aninhadas  Uma classe definida inteiramente dentro do corpo de uma outra classe class ClasseExterna { ... class ClasseAninhada { ... } }  Categorias das classes aninhadas  Estáticas  Não estáticas, também chamadas de classes internas  Têm acesso aos membros da classe contêiner, mesmo os privados class ClasseExterna { ... static class ClasseAninhadaEstatica { ... } class ClasseInterna { ... } } © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 17
  18. 18. Edição SP 2010 Plataforma Java x Plataforma .NET Java 1.2: Palavra-chave strictfp  Expressões estritas de ponto flutuante (FP-strict)  Define restrições em cálculos com ponto flutuante para garantir portabilidade (dados dos tipos float ou double)  Todas as expressões devem usar aritmética IEEE 754 nos operandos representados usando os formatos de precisão simples (float) ou precisão dupla (double)  Uso da palavra-chave strictfp  Pode ser usado para modificar o comportamento de expressões de ponto flutuante em classes, interfaces ou métodos © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 18
  19. 19. Edição SP 2010 Plataforma Java x Plataforma .NET Java 1.4: Palavra-chave assert  Assertivas (ou afirmações) em Java  Uma assertiva é uma instrução que permite testar uma suposição sobre o programa  Cada assertiva contém uma expressão booleana que deve ser verdadeira quando a assertiva for executada  Se ela não for verdadeira, o erro AssertionError será lançado  Vantagens das assertivas  Uma maneira rápida para detectar e corrigir bugs  Documenta o funcionamento interno do programa  Sintaxe assert expressaoBooleana; assert expressaoBooleana : expressaoInfoErro; © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 19
  20. 20. Edição SP 2010 Plataforma Java x Plataforma .NET Java 5.0: Generics  Conceito de Generics  Generics correspondem a um recurso de abstração dos tipos de dados através do uso de tipos parametrizados  Uso mais comum  O uso mais comum de Generics é nos tipos de contêiner, como nos presentes no framework de coleções  Exemplo  A declaração de um tipo genérico usa um tipo parametrizado delimitado por < e > após o nome do tipo public interface Iterator<E> { boolean hasNext(); E next(); void remove(); } © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 20
  21. 21. Edição SP 2010 Plataforma Java x Plataforma .NET Java 5.0: Laço for avançado  Conceito  O laço for avançado foi projetado para iteração em coleções e arrays  Diferença para o laço for tradicional  O laço for tradicional exige a codificação do controle de iteração  Exemplo public static double media(double[] valores) { double soma = 0.0; for (double valor : valores) { soma += valor; } return soma / valores.length; } © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 21
  22. 22. Edição SP 2010 Plataforma Java x Plataforma .NET Java 5.0: Autoboxing/unboxing  Conceito de autoboxing  Processo de conversão automática de um tipo primitivo para uma instância da classe Wrapper correspondente  Conceito de unboxing  Processo de conversão automática de uma instância da classe Wrapper para o tipo primitivo correspondente  Aplicação importante  Os processos de autoboxing e unboxing facilitam muito o uso de coleções com elementos de tipos primitivos  Exemplo Integer fator1 = 15; // Autoboxing int fator2 = 10; int produto = fator1 * fator2; // Unboxing © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 22
  23. 23. Edição SP 2010 Plataforma Java x Plataforma .NET Java 5.0: Motivação para enumerações  Práticas comuns antes do suporte a enumerações  Constant interface pattern (pacote javax.swing) public interface SwingConstants { public static final int BOTTOM = 3; public static final int CENTER = 0; ... }  int enum pattern (pacote javax.microedition.lcdui) public class Command { public static final int SCREEN = 1; public static final int BACK = 2; public static final int CANCEL = 3; ... }  Typesafe enum pattern  Melhor prática, mas muito trabalhoso para implementar © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 23
  24. 24. Edição SP 2010 Plataforma Java x Plataforma .NET Java 5.0: Enumerações  Conceito  São tipos em que os campos consistem de um conjunto fixo de constantes  Exemplo public enum FormaPagamento { DINHEIRO(1, "Dinheiro"), CHEQUE(2, "Cheque"), CARTAO_CREDITO(3, "Cartão de Crédito"); private final int codigo; private final String descricao; FormaPagamento(int codigo, String descricao) { this.codigo = codigo; this.descricao = descricao; } public int getCodigo() { return codigo; } public String getDescricao() { return descricao; } public String toString() { return getDescricao(); } } © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 24
  25. 25. Edição SP 2010 Plataforma Java x Plataforma .NET Java 5.0: Varargs  Conceito  Recurso para suportar um número de argumentos variável (varargs) em métodos  Sintaxe  Uma elipse(...) identifica um número variável de argumentos do tipo declarado  Observação  O argumento variável necessariamente deve ser o último na lista de parâmetros do método  Exemplo public static double media(double ... valores) { double soma = 0.0; for (double valor : valores) { soma += valor; } return soma / valores.length; } © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 25
  26. 26. Edição SP 2010 Plataforma Java x Plataforma .NET Java 5.0: Anotações (metadados)  Conceito  Anotações são modificadores que podem ser adicionados ao código e aplicados a pacotes, declarações de tipos (classes, interfaces, enumerações, etc), construtores, métodos, campos e parâmetros  Sintaxe  Uma anotação é precedida por um símbolo de arroba (@) seguida pelo nome da anotação  Exemplo public class Ponto { ... @Override public String toString() {...} } © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 26
  27. 27. Edição SP 2010 Plataforma Java x Plataforma .NET OpenJDK  O que é o OpenJDK?  Local de colaboração numa implementação open source:  da especificação Java Platform, Standard Edition (Java SE),  da linguagem Java,  do Java Development Kit (JDK) e  do Java Runtime Environment (JRE)  Implementação de referência da Java SE  Endereço do OpenJDK no portal Java.net  http://openjdk.java.net/  Mark Reinhold - Twitter: @mreinhold  Arquiteto na Oracle responsável pela plataforma Java SE, pelo Open JDK, entre outras coisas © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 27
  28. 28. Edição SP 2010 Plataforma Java x Plataforma .NET Repensando o JDK 7  Blog do Mark Reinhold - Re-thinking JDK 7  http://blogs.sun.com/mr/entry/rethinking_jdk7  Publicado em 08/09/2010 09:21  Objetivos  Justificar o atraso no cronograma do JDK 7 devido ao processo de integração após a aquisição da Sun pela Oracle  Propor dois planos de ação para implementação de novos recursos no JDK para a comunidade Plano A JDK 7 (como já estava definido) Meio de 2012 JDK 7 (menos Lambda, Jigsaw, e parte do Coin) Meio de 2011 Plano B JDK 8 (Lambda, Jigsaw, o resto do Coin e Final de 2012 outras coisas)  Houve 175 comentários da comunidade no post © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 28
  29. 29. Edição SP 2010 Plataforma Java x Plataforma .NET Escolha do plano B  Blog do Mark Reinhold - It’s time for … Plan B  http://blogs.sun.com/mr/entry/plan_b  Publicado em 20/09/2010 16:42  Decisão pelo plano B  O retorno nos comentários foram mais fortemente favoráveis ao plano B  Então, a Oracle decidiu por adotar o plano B para o JDK 7 e o JDK 8 JDK 7 (menos Lambda, Jigsaw, e parte do Coin) Meio de 2011 Plano B JDK 8 (Lambda, Jigsaw, o resto do Coin e Final de 2012 outras coisas) © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 29
  30. 30. Edição SP 2010 Plataforma Java x Plataforma .NET Detalhes do plano B  Blog do Mark Reinhold - Plan B: The details  http://blogs.sun.com/mr/entry/plan_b_details  Publicado em 10/10/2010 22:08  O plano B foi aceito por um Comitê Executivo do JCP  Seguem os itens relacionados com a linguagem Java  Java SE 7  JSR 292: Support for dynamically-typed languages (InvokeDynamic)  JSR TBD: Small language enhancements (Project Coin)  Java SE 8  JSR 294: Language and VM support for modular programming  JSR TBD: Lambda Expressions, Default Methods, & Bulk Data Operations (Project Lambda)  JSR 308: Annotations on Java Types  JSR TBD: More Small Language Enhancements (Project Coin part 2) © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 30
  31. 31. Edição SP 2010 Plataforma Java x Plataforma .NET IBM se junta ao OpenJDK  Anúncio oficial da Oracle  Oracle and IBM Collaborate to Accelerate Java Innovation Through OpenJDK  http://www.oracle.com/us/corporate/press/176988  Qual é a importância desta parceria?  Engenheiros da IBM e da Oracle trabalharão com outros colaboradores na implementação de referência da Java SE  Blog do Mark Reinhold - IBM to join OpenJDK  http://blogs.sun.com/mr/entry/ibm_to_join_openjdk  Publicado em 11/10/2010 12:01  Blog do Dalibor Topic - OpenJDK.Community += IBM  http://robilad.livejournal.com/63940.html  Publicado em 11/10/2010 18:11 © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 31
  32. 32. Edição SP 2010 Plataforma Java x Plataforma .NET Diálogo pelo Twitter com Dalibor Topic  Relativo ao post OpenJDK.Community += IBM  @robilad  OpenJDK.Community += IBM: http://robilad.livejournal.com/63940.html  @rogeriomc  Are you announcing in C#? RT @robilad: OpenJDK.Community += IBM: http://bit.ly/cp2KdE  @rogeriomc  In Java must be: openJDK.setCommunity(openJDK.getCommunity() + IBM) RT @robilad: OpenJDK.Community += IBM: http://bit.ly/cp2KdE  @rogeriomc  Or are you exposing a public field in Java? ;-) Bad OOP practice! RT @robilad: OpenJDK.Community += IBM: http://bit.ly/cp2KdE  @robilad  @rogeriomc Nah, just thinking ahead and wishing for properties in 9 after watching @mreinhold's JavaOne keynote. ;) © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 32
  33. 33. Edição SP 2010 Plataforma Java x Plataforma .NET Java 7: JSR 292 - Linguagens dinâmicas  JSR 292: Support for dynamically-typed languages (InvokeDynamic)  Extensões da máquina virtual e da linguagem para suportar a implementação de linguagens com tipagem dinâmica com níveis de desempenho próximos da linguagem Java  Maiores informações no JCP  http://jcp.org/en/jsr/detail?id=292  Exemplo de código class MyCaller { Object myMethod(Object x, Object y, int z) { // x.invokedynamic["alpha",(Object,int)Object] (y, z) return ((Dynamic)x).alpha(y, z); } } © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 33
  34. 34. Edição SP 2010 Plataforma Java x Plataforma .NET Java 7: JSR TBD - Project Coin (part 1)  JSR TBD: Small language enhancements (Project Coin)  Um conjunto de pequenas modificações para facilitar as tarefas diarias  Strings em instruções switch  try-with-resources (anteriormente chamado de Automatic Resource Management, ARM)  Inferência de tipos melhorada na criação de instâncias genéricas (“diamond”)  Invocação simplificada de um método com varargs  Literais binarias e sublinhados em literais inteiros  Manipulação de exceções melhorada (multi-catch)  Maiores informações no OpenJDK no Java.net  http://openjdk.java.net/projects/coin/ © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 34
  35. 35. Edição SP 2010 Plataforma Java x Plataforma .NET Java 8: JSR 294 - Mudularidade  JSR 294: Improved Modularity Support in the Java Programming Language  Melhorias nas especificações da linguagem Java e da máquina virtual para suportar programação modular  Tanto em tempo de compilação quanto em tempo de execução  Pacotes e superpacotes  Cada superpacote é uma coleção de um ou mais pacotes ou superpacotes  Tipos públicos podem ser acessados de outros tipos em pacotes que estejam agrupados num mesmo superpacote  Tipos em outros superpacotes somente podem acessar tipos exportados  Maiores informações no JCP  http://jcp.org/en/jsr/detail?id=294 © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 35
  36. 36. Edição SP 2010 Plataforma Java x Plataforma .NET Java 8: JSR TBD - Projeto Lambda  JST TBD: Project Lambda  O projeto tem como objetivo formular uma proposta para acrescentar:  Funções de primeira classe  Tipos funções  Expressões lambda (informalmente chamadas de “closures”)  Considerada uma grande mudança na linguagem  Atualmente, o projeto ainda está num estágio bem inicial  Maiores informações no OpenJDK no Java.net  http://openjdk.java.net/projects/lambda/ © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 36
  37. 37. Edição SP 2010 Plataforma Java x Plataforma .NET Java 8: JSR 308 - Anotações  JSR 308: Annotations on Java types  Uma extensão à sintaxe de anotação Java para permitir anotações em qualquer ocorrência de um tipo  O que são anotações de tipo?  As anotações em Java 6 são úteis, mas limitadas  A sintaxe de anotações de tipo permitem que anotações sejam escritas em mais lugares, como em argumentos de tipos genéricos List<@NonNull Object>  Mais informações  No Java Community Process (JCP)  http://jcp.org/en/jsr/detail?id=308  Type Annotations (JSR 308) and the Checker Framework  http://types.cs.washington.edu/jsr308/ (mais atualizadas) © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 37
  38. 38. Edição SP 2010 Plataforma Java x Plataforma .NET Java 8: JSR TBD - Project Coin (part 2)  JSR TBD: Language support for collections  Expressões literais para listas, conjuntos e mapas  Acesso com sintaxe de índices para listas e mapas: [ ]  Outra possibilidade em análise  Strings de múltiplas linhas  Atualmente, esta parte ainda está num estágio bem inicial  Mais informações no OpenJDK no Java.net  http://openjdk.java.net/projects/coin/ © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 38
  39. 39. Edição SP 2010 Plataforma Java x Plataforma .NET Demonstração  Preparação de um ambiente para testar as novidades dos builds mais recentes do JDK 7  Java Platform, Standard Edition 7 Binary Snapshot Releases  http://dlc.sun.com.edgesuite.net/jdk7/binaries/  Build b114 da demonstração (build liberado em 14/10/2010)  NetBeans 6.9.1  http://netbeans.org/downloads/  Características do JDK 7 suportadas no editor do NetBeans 6.9  http://wiki.netbeans.org/Java_EditorJDK7  Demonstração de algumas das novidades do Project Coin (part 1) © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 39
  40. 40. Edição SP 2010 Plataforma Java x Plataforma .NET Conclusão A linguagem Java  Evolução conservadora até a versão 6  Java 1.0 em janeiro de 1996 (JRE 1.0)  Java 1.1 em fevereiro de 1997 (JRE 1.1)  Suporte a classes aninhadas  Java 1.2 em dezembro de 1998 (JRE 1.2)  Suporte a restrições em operações com ponto flutuante (strictfp)  Java 1.4 em fevereiro de 2002 (JRE 1.4)  Suporte a assertivas (assert)  Java 5.0  Suporte a generics, anotações, autoboxing/unboxing, enumerações, varargs, laço for avançado e static import  Evolução rápida anunciada para as versões 7 e 8  Java 7 no meio de 2011  Suporte a linguagens dinâmicas e projeto Coin (parte 1)  Java 8 no final de 2012  Modularidade, projeto Lambda, ext. de anotações e projeto Coin (parte 2) © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 40
  41. 41. Edição SP 2010 Plataforma Java x Plataforma .NET Referências  The Java Language Specification  http://java.sun.com/docs/books/jls/  Atualmente, está na sua terceira edição (gratuita)  The Java Tutorials  Java SE  http://download.oracle.com/javase/tutorial/  Trail: Learning the Java Language  http://download.oracle.com/javase/tutorial/java/  Livro Effective Java (2nd Edition)  O autorJoshua Bloch fornece uma visão em profundidade da linguagem Java  Amazon.com  http://www.amazon.com/dp/0321356683/ © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 41
  42. 42. Edição SP 2010 Plataforma Java x Plataforma .NET Referências  Re-thinking JDK 7 (Mark Reinhold’s Blog)  http://blogs.sun.com/mr/entry/rethinking_jdk7  It’s time for … Plan B (Mark Reinhold’s Blog)  http://blogs.sun.com/mr/entry/plan_b  Plan B: The details (Mark Reinhold’s Blog)  http://blogs.sun.com/mr/entry/plan_b_details  IBM to join OpenJDK (Mark Reinhold’s Blog)  http://blogs.sun.com/mr/entry/ibm_to_join_openjdk  OpenJDK.Community += IBM (Dalibor Topic)  http://robilad.livejournal.com/63940.html © 2010 JavaVersusDotNet.com.br, Rogério Moraes de Carvalho (MVP da Microsoft) 42

×