© 2004, Summa Technologies, Inc. 1
Tiger: Tiger: Funcionalidades do Java 5,Funcionalidades do Java 5,
a nova versão da plataformaa nova versão da plataformaJavaJava
Summa TechnologiesSumma Technologieswww.summa-tech.com
© 2004, Summa Technologies, Inc. 2
Sobre o palestrante
JSR Community Manager @ java.netJSR Community Manager @ java.net Expert na JSR 207 (PD4J)Expert na JSR 207 (PD4J) Thinlet commiterThinlet commiter Contributor do AspectWerkzContributor do AspectWerkz Membro da organização do SouJavaMembro da organização do SouJava SCPJ 1.2 & 1.4, SCWCD, SCMADSCPJ 1.2 & 1.4, SCWCD, SCMAD 5 anos de experiência com Java5 anos de experiência com Java Palestrante no JavaOne 2003, Abaporu, Palestrante no JavaOne 2003, Abaporu,
JustJava, Javali e COMDEXJustJava, Javali e COMDEX
© 2004, Summa Technologies, Inc. 3
Tiger - Revolução?
Por que tanta expectativa?Por que tanta expectativa?• Novas features na linguagemNovas features na linguagem• Mudanças de design em classes do Mudanças de design em classes do
corecore• Novos padrões para integração e Novos padrões para integração e
monitoramento da VMmonitoramento da VM• Facilidade de desenvolvimentoFacilidade de desenvolvimento
© 2004, Summa Technologies, Inc. 4
Como está sendo definida
JCP – JSR 176: J2SE 5.0 (Tiger) JCP – JSR 176: J2SE 5.0 (Tiger) Release ContentsRelease Contents
ObjetivosObjetivos• Confiabilidade, disponibilidade e Confiabilidade, disponibilidade e
serviços (monitoramento e serviços (monitoramento e gerenciamento)gerenciamento)
• Performance e escalabilidadePerformance e escalabilidade• Facilidade de desenvolvimentoFacilidade de desenvolvimento• Clientes desktopClientes desktop
© 2004, Summa Technologies, Inc. 5
JSR guarda-chuva
JSR 176 não define nenhuma API, mas JSR 176 não define nenhuma API, mas sim quais JSRs deverão ser incluídas no sim quais JSRs deverão ser incluídas no TigerTiger
Fazem parte do Tiger:Fazem parte do Tiger:• JSR 003 – JMXJSR 003 – JMX• JSR 013 – Decimal Arithmetic JSR 013 – Decimal Arithmetic
EnhancementEnhancement• JSR 014 – GenericsJSR 014 – Generics• JSR 028 – SASLJSR 028 – SASL
© 2004, Summa Technologies, Inc. 6
JSR guarda-chuva (cont)
Fazem parte do Tiger (cont):Fazem parte do Tiger (cont):• JSR 114 – JDBC RowsetJSR 114 – JDBC Rowset• JSR 133 – Memory modelJSR 133 – Memory model• JSR 160 – JMX-RemotingJSR 160 – JMX-Remoting• JSR 163 – ProfilingJSR 163 – Profiling• JSR 166 – Concurrency UtilitiesJSR 166 – Concurrency Utilities• JSR 174 – Monitoring and JSR 174 – Monitoring and
ManagementManagement
© 2004, Summa Technologies, Inc. 7
JSR guarda-chuva (cont)
Fazem parte do Tiger (cont):Fazem parte do Tiger (cont):• JSR 175 – MetadataJSR 175 – Metadata• JSR 200 – Network Transfer FormatJSR 200 – Network Transfer Format• JSR 201 – Enums, autoboxing, JSR 201 – Enums, autoboxing,
extended for loops, static import and extended for loops, static import and varargsvarargs
• JSR 204 – Unicode Supplementary JSR 204 – Unicode Supplementary Character SupportCharacter Support
• JSR 206 – JAXP 1.3JSR 206 – JAXP 1.3
© 2004, Summa Technologies, Inc. 8
JSR-013: Decimal Enhancement
BigDecimal modificado para BigDecimal modificado para suportar melhor operações de suportar melhor operações de ponto flutuanteponto flutuante
Introduzidas as classes Introduzidas as classes java.math.MathContext e java.math.MathContext e java.math.RoundingModejava.math.RoundingMode
Métodos para divisão inteira, resto Métodos para divisão inteira, resto da divisão e exponenciação foram da divisão e exponenciação foram adicionadosadicionados
© 2004, Summa Technologies, Inc. 9
JSR 014 – Generics
Uma das JSRs mais antigas do Uma das JSRs mais antigas do JCPJCP
Melhoram o mecanismo de tipos da Melhoram o mecanismo de tipos da linguagemlinguagem
Várias APIs – java.util, java.lang e Várias APIs – java.util, java.lang e java.lang.reflect – foram adaptadas java.lang.reflect – foram adaptadas para tirarem proveito do uso de para tirarem proveito do uso de genericsgenerics
© 2004, Summa Technologies, Inc. 10
JSR 014 – Generics
public class CollectionsSample {public class CollectionsSample { public static void main(String[] args) {public static void main(String[] args) { List<String> lista = new ArrayList<String>();List<String> lista = new ArrayList<String>(); lista.add("James Gosling");lista.add("James Gosling"); lista.add("Joshua Bloch");lista.add("Joshua Bloch"); //Erro de compilação//Erro de compilação //lista.add(new Integer(0));//lista.add(new Integer(0));
String nome = lista.get(0);String nome = lista.get(0); }}}}
© 2004, Summa Technologies, Inc. 11
JSR 014 - Generics
Embora tenha benefícios, existem algumas Embora tenha benefícios, existem algumas desvantagens:desvantagens:
• A sintaxe pode ser confusaA sintaxe pode ser confusa
<? super T> getSuperClass()
• Pode ser contra-intuitivoPode ser contra-intuitivo
List<Animal> = new ArrayList<Cachorro>(); //inválida!!!!
• Não foi incluída a informação de tipo Não foi incluída a informação de tipo genérico em runtime (erasure)genérico em runtime (erasure)
© 2004, Summa Technologies, Inc. 12
JSR 160 e 174
É importante ter métricas e controle É importante ter métricas e controle sobre a JVM em ambientes de sobre a JVM em ambientes de produçãoprodução
Este tipo de administração precisa Este tipo de administração precisa ser feita remotamente e sem a ser feita remotamente e sem a necessidade de se programar necessidade de se programar código adicionalcódigo adicional
© 2004, Summa Technologies, Inc. 13
JSR 160 e 174
O Java possui há muito tempo uma O Java possui há muito tempo uma API de monitoramento e API de monitoramento e gerenciamento, JMX (JSR 003)gerenciamento, JMX (JSR 003)
JSR 160 estendeu essa API de JSR 160 estendeu essa API de modo que se possa acessar modo que se possa acessar remotamente via RMI, de forma remotamente via RMI, de forma padronizada, um MBeanServer em padronizada, um MBeanServer em outra JVMoutra JVM
© 2004, Summa Technologies, Inc. 14
JSR 160 e 174
JSR 174 traz uso prático de JMX JSR 174 traz uso prático de JMX no próprio kernel da JVMno próprio kernel da JVM
Alguns recursos monitoráveis da Alguns recursos monitoráveis da JVM a partir do Tiger são:JVM a partir do Tiger são:
• Carregamento de classesCarregamento de classes• Compilação JITCompilação JIT• Garbage Collection (por região de Garbage Collection (por região de
memória)memória)
© 2004, Summa Technologies, Inc. 15
JSR 160 e 174
Alguns recursos monitoráveis da Alguns recursos monitoráveis da JVM a partir do Tiger são:JVM a partir do Tiger são:
• Pools e níveis de memóriaPools e níveis de memória• Informações básicas da máquinaInformações básicas da máquina• Informações de execução da JVMInformações de execução da JVM• ThreadsThreads
© 2004, Summa Technologies, Inc. 16
JSR 160 e 174
Permite as seguintes aplicações Permite as seguintes aplicações práticas:práticas:
• Monitoramento real de um ambiente Monitoramento real de um ambiente de produçãode produção
• Receber notificações quando a Receber notificações quando a memória disponível diminuimemória disponível diminui
• Extrair informações sobre contenção Extrair informações sobre contenção de threadsde threads
© 2004, Summa Technologies, Inc. 17
JSR 160 e 174
Trazem para a plataforma:Trazem para a plataforma:• Maior confiabilidadeMaior confiabilidade• PrevisibilidadePrevisibilidade• EstabilidadeEstabilidade• Possibilidade de ajustes Possibilidade de ajustes
remotos por administradores de remotos por administradores de rede/sistemasrede/sistemas
© 2004, Summa Technologies, Inc. 18
JSR 166 – Concurrency UtilitiesProgramação com threads é Programação com threads é
complexacomplexaLinguagem suporta somente Linguagem suporta somente
estruturas primitivas como estruturas primitivas como synchronized, wait(), notify() e synchronized, wait(), notify() e notifyAll()notifyAll()
Necessidade de abstração de mais Necessidade de abstração de mais alto nívelalto nível
© 2004, Summa Technologies, Inc. 19
JSR 166 – Concurrency UtilitiesDefine o pacote Define o pacote
java.util.concurrency e seus java.util.concurrency e seus subpacotessubpacotes
Suporta construções de nível mais Suporta construções de nível mais alto como executores, semáforos, alto como executores, semáforos, locks, futures (resultados locks, futures (resultados assíncronos)assíncronos)
Provém de API open-source de Provém de API open-source de Doug Lea, bastante estávelDoug Lea, bastante estável
© 2004, Summa Technologies, Inc. 20
JSR 175 - Metadata
O conceito de anotações é bem O conceito de anotações é bem estabelecido:estabelecido:
• XDoclet XDoclet • .NET.NET
A API de anotações no Tiger é uma A API de anotações no Tiger é uma das mais importantes para atingir a das mais importantes para atingir a meta de simplicidade de meta de simplicidade de desenvolvimento (java.lang.annotation)desenvolvimento (java.lang.annotation)
© 2004, Summa Technologies, Inc. 21
JSR 175 - Metadata
Anotações são metainformações Anotações são metainformações ligados a classes, métodos, ligados a classes, métodos, campos etc. que podem ser campos etc. que podem ser extraídos em tempo de extraídos em tempo de compilação, carregamento de compilação, carregamento de classe ou execuçãoclasse ou execução
Podem ser usados para geração Podem ser usados para geração de código, configuração etc.de código, configuração etc.
© 2004, Summa Technologies, Inc. 22
JSR 175 – Metadata
@Documented@Documented@Retention(RUNTIME)@Retention(RUNTIME)@Target(TYPE)@Target(TYPE)public @interface SampleAnnotation {public @interface SampleAnnotation {}}
@SampleAnnotation@SampleAnnotationpublic class SampleClass {public class SampleClass {......}}
© 2004, Summa Technologies, Inc. 23
JSR 175 – Metadata
Várias JSRs já estão usando Várias JSRs já estão usando metadados como parte do seu metadados como parte do seu modelo de implementação (JSR modelo de implementação (JSR 220, EJB 3.0)220, EJB 3.0)
Metadados trazem poder mas Metadados trazem poder mas podem ser “abusados” (metadata podem ser “abusados” (metadata hell)hell)
© 2004, Summa Technologies, Inc. 24
JSR 200 – Network Transfer Format (Pack200)
Define um novo formato de Define um novo formato de compactação, muito mais eficiente, compactação, muito mais eficiente, para .jarspara .jars
Garante alta taxa de compactação Garante alta taxa de compactação (até 20% do tamanho original)(até 20% do tamanho original)
Provê API programática via Provê API programática via java.util.Pack200java.util.Pack200
API não utiliza novas featuresAPI não utiliza novas features
© 2004, Summa Technologies, Inc. 25
JSR 201
Responsável pela maioria das Responsável pela maioria das mudanças da linguagem no Tigermudanças da linguagem no Tiger
Define:Define:• EnumEnum• AutoboxingAutoboxing• Enhanced for loopEnhanced for loop• Static ImportStatic Import• varargsvarargs
© 2004, Summa Technologies, Inc. 26
JSR 201
Enums são tipos bem definidos, Enums são tipos bem definidos, com instâncias conhecidas e com instâncias conhecidas e limitadaslimitadas
public enum Status {public enum Status {ON, OFF, BROKEN;ON, OFF, BROKEN;
}}
© 2004, Summa Technologies, Inc. 27
JSR 201
Autoboxing é o processo de Autoboxing é o processo de conversão automático de primitivos conversão automático de primitivos para classespara classes
Integer i = 5;Integer i = 5;int j = i + 3;int j = i + 3;
© 2004, Summa Technologies, Inc. 28
JSR 201
O enhanced for loop simplifica as O enhanced for loop simplifica as iterações em Collections e arraysiterações em Collections e arrays
Collection usuarios = ...;Collection usuarios = ...;for (Iterator i = usuarios.iterator(); for (Iterator i = usuarios.iterator();
i.hasNext(); ) {i.hasNext(); ) { Usuario usuario = (Usuario)i.next();Usuario usuario = (Usuario)i.next();}}
//no 1.5//no 1.5for (Usuario usuario : usuarios) {for (Usuario usuario : usuarios) {}}
© 2004, Summa Technologies, Inc. 29
JSR 201
Static import permite o uso de Static import permite o uso de constantes no código sem constantes no código sem necessidade de prefixar com o tipo necessidade de prefixar com o tipo que as defineque as define
import static Status.*import static Status.*
if (getStatus() == ON) {if (getStatus() == ON) { //...//... }}
© 2004, Summa Technologies, Inc. 30
JSR 201
Varargs permite que você passe Varargs permite que você passe diversos argumentos para um diversos argumentos para um método com uma sintaxe método com uma sintaxe simplificada:simplificada:
public void print(Object... args) { //code }public void print(Object... args) { //code }print(5);print(5);print(“Mensagem”, “outra mensagem”, new print(“Mensagem”, “outra mensagem”, new
Integer(3));Integer(3));print(“exemplo”, 4.5, null);print(“exemplo”, 4.5, null);
© 2004, Summa Technologies, Inc. 31
Outras novidades do Tiger
Class Data Sharing: as classes Class Data Sharing: as classes principais da JVM, de 5-6 Mb, são principais da JVM, de 5-6 Mb, são compartilhadas e pré-preparadascompartilhadas e pré-preparadas
Novas features para GC: algoritmo Novas features para GC: algoritmo paralelo, comportamento paralelo, comportamento adaptativo etc.adaptativo etc.
Maior precisão em medição de Maior precisão em medição de tempo com System.nanoTime()tempo com System.nanoTime()
© 2004, Summa Technologies, Inc. 32
Outras novidades do Tiger
Novas classes e features em Novas classes e features em java.lang e java.util: StringBuilder, java.lang e java.util: StringBuilder, Formatter, Scanner, Formatter, Scanner, ProcessBuilder, System.out.printf() ProcessBuilder, System.out.printf() e o retorno de System.getenv()e o retorno de System.getenv()
Adição de Queue, EnumSet, Adição de Queue, EnumSet, EnumMap e outros a java.utilEnumMap e outros a java.util
API de instrumentação de API de instrumentação de bytecode, java.lang.instrumentbytecode, java.lang.instrument
© 2004, Summa Technologies, Inc. 33
Outras novidades do Tiger
Funcionalidade de ping em Funcionalidade de ping em InetAddress.isReachable(tempo)InetAddress.isReachable(tempo)
Suporte a mais padrões de Suporte a mais padrões de segurança e internacionalizaçãosegurança e internacionalização
A API de reflection sofreu grandes A API de reflection sofreu grandes modificações para suportar as modificações para suportar as novas features e tirar proveito novas features e tirar proveito delasdelas
© 2004, Summa Technologies, Inc. 34
Outras novidades do Tiger
RMI é capaz de gerar stubs e RMI é capaz de gerar stubs e skeletons dinâmicos, possui factory skeletons dinâmicos, possui factory para uso via SSL e rmiregistry para uso via SSL e rmiregistry pode ser iniciado via (x)inetdpode ser iniciado via (x)inetd
AWT possui muitas bug fixes, AWT possui muitas bug fixes, MouseInfo, always on top, novas MouseInfo, always on top, novas features em DnD, Clipboard, z-features em DnD, Clipboard, z-orderorder
© 2004, Summa Technologies, Inc. 35
Outras novidades do Tiger
Dois novos L&F para o Swing: Dois novos L&F para o Swing: Ocean and SkinOcean and Skin
Ainda no Swing, diversas bugfixes Ainda no Swing, diversas bugfixes e features novas, como suporte e features novas, como suporte especial a impressão de tabelasespecial a impressão de tabelas
JFrame.add() finalmente é o JFrame.add() finalmente é o mesmo que mesmo que JFrame.getContentPane().add()JFrame.getContentPane().add()
© 2004, Summa Technologies, Inc. 36
Conclusão
Diversas mudanças foram feitas no Diversas mudanças foram feitas no TigerTiger
A maioria delas pode ser usada no A maioria delas pode ser usada no dia a dia do desenvolvedor de dia a dia do desenvolvedor de forma benéficaforma benéfica
Algumas features podem ser mal Algumas features podem ser mal usadas e tornar o código difícil de usadas e tornar o código difícil de ler, como generics e static importsler, como generics e static imports
© 2004, Summa Technologies, Inc. 37
Obrigado pela atenção.Perguntas?
[email protected]@summa-tech.comwww.summa-tech.comwww.summa-tech.com
Top Related