• Nenhum resultado encontrado

Tiger: Funcionalidades do Java 5, a nova versão da plataforma Java

N/A
N/A
Protected

Academic year: 2021

Share "Tiger: Funcionalidades do Java 5, a nova versão da plataforma Java"

Copied!
37
0
0

Texto

(1)

Tiger:

Tiger:

Funcionalidades do Java 5,

Funcionalidades do Java 5,

a nova versão da plataforma

a nova versão da plataforma

Java

Java

Summa Technologies

Summa Technologies

(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

(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 core

core

• Novos padrões para integração e Novos padrões para integração e monitoramento da VM

monitoramento da VM

(4)

Como está sendo definida

JCP – JSR 176: J2SE 5.0 (Tiger) JCP – JSR 176: J2SE 5.0 (Tiger)

Release Contents

Release Contents ObjetivosObjetivos

• Confiabilidade, disponibilidade e Confiabilidade, disponibilidade e serviços (monitoramento e

serviços (monitoramento e

gerenciamento)

gerenciamento)

(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

Tiger

Tiger

 Fazem parte do Tiger:Fazem parte do Tiger:

• JSR 003 – JMXJSR 003 – JMX

• JSR 013 – Decimal Arithmetic JSR 013 – Decimal Arithmetic Enhancement

Enhancement

• JSR 014 – GenericsJSR 014 – Generics

(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

(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

varargs

varargs

• JSR 204 – Unicode Supplementary JSR 204 – Unicode Supplementary Character Support

Character Support

(8)

JSR-013: Decimal

Enhancement

BigDecimal modificado para BigDecimal modificado para

suportar melhor operações de

suportar melhor operações de

ponto flutuante

ponto flutuante

Introduzidas as classes Introduzidas as classes

java.math.MathContext e

java.math.MathContext e

java.math.RoundingMode

java.math.RoundingMode

Métodos para divisão inteira, resto Métodos para divisão inteira, resto

da divisão e exponenciação foram

(9)

JSR 014 – Generics

Uma das JSRs mais antigas do Uma das JSRs mais antigas do

JCP

JCP

Melhoram o mecanismo de tipos da Melhoram o mecanismo de tipos da linguagem

linguagem

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

generics

(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);

(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)

(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ção

produçã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 adicional

(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 JVM

(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 JVM

no 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

(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

(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ção

de produção

• Receber notificações quando a Receber notificações quando a memória disponível diminui

memória disponível diminui

• Extrair informações sobre contenção Extrair informações sobre contenção de threads

(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/sistemas

(18)

JSR 166 – Concurrency

Utilities

Programação com threads é Programação com threads é

complexa

complexa

Linguagem 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ível

(19)

JSR 166 – Concurrency

Utilities

Define o pacote Define o pacote

java.util.concurrency e seus

java.util.concurrency e seus

subpacotes

subpacotes

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ável

(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)

(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ção classe ou execução

Podem ser usados para geração Podem ser usados para geração

de código, configuração etc.

(22)

JSR 175 – Metadata

@Documented @Documented @Retention(RUNTIME) @Retention(RUNTIME) @Target(TYPE) @Target(TYPE)

public @interface SampleAnnotation {

public @interface SampleAnnotation {

}

}

@SampleAnnotation

@SampleAnnotation

public class SampleClass {

public class SampleClass {

...

... }

(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)

(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 .jars

para .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.Pack200

(25)

JSR 201

Responsável pela maioria das Responsável pela maioria das

mudanças da linguagem no Tiger

mudanças da linguagem no Tiger Define:Define:

• EnumEnum

• AutoboxingAutoboxing

• Enhanced for loopEnhanced for loop

• Static ImportStatic Import

(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

limitadas

limitadas

public enum Status {

public enum Status {

ON, OFF, BROKEN;

ON, OFF, BROKEN;

}

(27)

JSR 201

Autoboxing é o processo de Autoboxing é o processo de

conversão automático de primitivos

conversão automático de primitivos

para classes para classes Integer i = 5; Integer i = 5; int j = i + 3; int j = i + 3;

(28)

JSR 201

O enhanced for loop simplifica as O enhanced for loop simplifica as

iterações em Collections e arrays

iteraçõ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

(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 define

que as define

import static Status.*

import static Status.*

if (getStatus() == ON) {if (getStatus() == ON) {

//...//...

(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);

(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é-preparadas

compartilhadas 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()

(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.util

EnumMap e outros a java.util API de instrumentação de API de instrumentação de

(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ção

seguranç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

delas

(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)inetd

pode 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,

features em DnD, Clipboard,

z-order

(35)

Outras novidades do Tiger

Dois novos L&F para o Swing: Dois novos L&F para o Swing:

Ocean and Skin

Ocean 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 tabelas

especial a impressão de tabelas JFrame.add() finalmente é o JFrame.add() finalmente é o

mesmo que

mesmo que

JFrame.getContentPane().add()

(36)

Conclusão

Diversas mudanças foram feitas no Diversas mudanças foram feitas no

Tiger

Tiger

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éfica

forma 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 imports

(37)

Obrigado pela atenção.

Perguntas?

michael@summa-tech.com michael@summa-tech.com www.summa-tech.com www.summa-tech.com

Referências

Documentos relacionados

dos mercados em que investe, são: (a) o FUNDO não estar apto a efetuar, dentro do prazo estabelecido no Regulamento e na regulamentação em vigor, pagamentos

As exportações são apuradas segundo o país de consumo, isto é onde a mercadoria deve ter a aplicação para qual foi produzida ou fabricada ou onde deve ser

1 – seja deferida LIMINARMENTE e sem a audiência da parte contrária, a competente TUTELA DE URGÊNCIA para, imediatamente, comunicar a POLÍCIA FEDERAL a fim de que esta realize

O candidato cujo registro esteja sub judice poderá efetuar todos os atos relativos à campanha eleitoral, inclusive utilizar o horário eleitoral gratuito no rádio e

O TRE/SP assentou que o requerimento de registro de candidatura (RRC) e a declaração de bens podem ser assinados pelo procurador constituído pela candidata por meio de

Não há dúvidas de que no caso específico, o ex-governador Arruda não poderá exercer o mandato eletivo, seja pela aceitação da Justiça Eleitoral das impugnações do

Trata-se de ação ordinária ajuizada pelo SINDICATO NACIONAL DOS AUDITORES FISCAIS DO TRABALHO - SINAIT em face da UNIÃO, objetivando a declaração de que a

Referido pagamento esporádico realizado ao empregado, por ocasião de suas férias, somente é realizado, por óbvio, àqueles que ainda permanecem na ativa. Pelo fato