28
Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Embed Size (px)

Citation preview

Page 1: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

Mustang e Dolphin: O futuro do JavaMichael “Mister M” Nascimento Santos

Page 2: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

Michael Nascimento Santos● Co-fundador do SouJava● Experts nas JSRs 207 (PD4J), 250 (Common Annotations) e 270

(Mustang)● JSR Community Manager @ java.net● Senior Technical Consultant @ Summa Technologies do Brasil● Fundador do genesis e do ThinNB● 6 anos de experiência com Java● Palestrante no JavaOne 2003, Comdex, JustJava, Abaporu, FISL/Javali e

BrasilOne

Page 3: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

Lançamentos de Versões da Plataforma

● 1.4.0 – Merlin – 02/2002● 1.4.1 – Hopper – 10/2002● 1.4.2 – Mantis – 05/2003● 5.0 – Tiger – 09/2004● 6.0 – Mustang – H1/2006● 7.0 – Dolphin – H2/2007

Page 4: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

Novo modelo de versionamento

● Versões com novas funcionalidades a cada 18-24 meses (eram 24-36)

● Fim das versões de manutenção (1.x.x)– Não vai haver Java 5.1 (tem gente esperando... :-P)

● Versões de atualização a cada dois meses (uma não saiu, estamos no Update 4)

● Evolução mais rápida da plataforma, com correções adotadas mais rapidamente e no prazo

Page 5: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

Java 6 – Mustang – JSR 270 - Temas

● Compatibilidade e Estabilidade● Monitoramento, Gerenciamento e Facilidade de

Diagnóstico● Facilidade de Desenvolvimento● Enterprise Desktop● XML & WebServices● Transparência

Page 6: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

JSR 270 - Transparência

● Projeto Peabody: codinome na Sun para iniciativa de tornar o desenvolvimento da plataforma mais colaborativo e transparente para a comunidade

● jdk.dev.java.net / mustang.dev.java.net● Possibilita que contribuições externas sejam

incorporadas● Novas licenças: JRL e JIUL

Page 7: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

Mustang - Definição do conteúdo

● JSR 270: Umbrella JSR– Principal objetivo é definir que outras JSRs irão compor

esta versão– Alista outras pequenas novas funcionalidades que serão

incorporadas a plataforma– Maior parte dos bugs corrigidos não faz parte dela, por

serem bugs de implementação apenas● Peabody & feedback da comunidade importantes

Page 8: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

JSR 105: XML Digital Signature

● javax.xml.dsig● Implementa W3C Digital Signature Specification● Principal relevância para aplicações com troca segura

de XML (militares, por exemplo) e parte importante da segurança em webservices

● Possui SPI e é bastante extensível

Page 9: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

JSR 173: Streaming API for XML (StAX)

● javax.xml.stream● Implementa novo modelo de manipulação de XML (pull

/ Iterator pattern)– Permite que o código solicite o próximo evento ( next() /

hasNext())– Permite que se possa parar o processamento a qualquer

momento, “pular” seções do documento e selecionar subseções

– Base das novas APIs de webservices

Page 10: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

JSR 173: Streaming API for XML (StAX)URL u = new URL("http://www.soujava.org.br/");InputStream in = u.openStream(); XMLInputFactory factory = XMLInputFactory.newInstance(); XMLStreamReader parser =

factory.createXMLStreamReader(in);while (true) {

int event = parser.next(); if (event == XMLStreamConstants.END_DOCUMENT) {

parser.close(); break;

} if (event == XMLStreamConstants.START_ELEMENT) {

System.out.println(parser.getLocalName()); }

}

Page 11: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

JSR 181: WebServices Metadata

● javax.jws● Define um conjunto de anotações e sua semântica

para simplificar o desenvolvimento de webservicesimport javax.jws.WebService; import javax.jws.WebMethod;

@WebService public class HelloWorldService { // Opcional@WebMethod public String helloWorld() {

return "Hello World!"; }

}

Page 12: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

JSR 199: Java Compiler API

● javax.tools● Define uma API não só para o compilador (javac), mas

para outras ferramentas integradas ao JDK (javax.tools.Tool)

● Possui classes específicas para o compilador, permitindo uso de sistemas de arquivos virtuais e registro de interface listener para receber as mensagens de erro do compilador

Page 13: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

JSR 199: Java Compiler APIimport javax.tools.*;

public class CompilerTest { public static void main(String... args)

throws java.io.IOException { if (args.length != 1) {

System.out.println(“Usage: CompilerTest <file.java>”);System.exit(1);

}

JavaCompilerTool compiler = ToolProvider.defaultJavaCompiler();

JavaFileManager manager = compiler.getBuiltInFileManager();JavaFileObject file = manager.getFileForInput(args[0]); // primeiro parametro seria o Writer, por default usa o

errmanager.run(null, file);

} }

Page 14: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

JSR 202: Java Class File Specification Update● Permite um processo de verificação muito mais

eficiente e rápido (split verifier, usado em J2ME) por modificar o bytecode, acrescentado um novo atributo chamado StackMapTable

● Aumenta os tamanhos máximos das diversas estruturas contidas no .class

● Adiciona suporte a literais (X.class) no bytecode

Page 15: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

JSR 221: JDBC 4.0● Foco principal é acrescentar classes auxiliares, um

modelo de anotações e explorar o uso de generics para simplificar o uso da API

● Nova hierarquia de exceções mais específica, ex: SQLIntegrityConstraintViolationException

● Através da combinação de interfaces como BaseQuery, QueryObjectGenerator e DataSet, junto com anotações, permite um uso que lembra O/RM

Page 16: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

JSR 221: JDBC 4.0public class Mammal {

public String name; public String description;

} public interface MyQueries extends BaseQuery {

@Query("select name, description, age from mammal") DataSet<Mammal> getAllMammals();

} // em algum metodo...MyQueries mq = con.createQueryObject(MyQueries.class); DataSet rows = mq.getAllMammals(); for (Mammal m: rows) {

System.out.println("Name = " + m.name); System.out.println("Description = " + m.description);

}

Page 17: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

JSR 222: JAXB 2.0● javax.xml.bind● Implementa suporte a XML Schemas e retorno do suporte

a DTDs● Suporta modelo de definição baseado em anotações● Diversas interfaces e pontos de customização permitem

manipular a maneira como o binding é feito● Usada como base para implementação da nova API de

webservices

Page 18: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

JSR 223: Scripting for the Java Platform● javax.script● Permite o uso de linguagens de script dentro da sua

aplicação Java e permite expor certas instâncias para ambiente de scripting

● Possui SPI que permite adicionar suporte a novas linguagens de script

● Ame ou odeie, o JDK virá com suporte a JavaScript (só pra confundir um pouco mais :-P) através de uma adaptação do Rhino

Page 19: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

JSR 223: Scripting for the Java Platform

import javax.script.*;

public class ScriptUsage { public static void main(String[] args)

throws ScriptException { ScriptEngineManager manager = new ScriptEngineManager();

ScriptEngine jsengine = manager.getEngineByExtension("js");

jsengine.eval("print('hello world')");}

}

Page 20: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

JSR 224: JAX-WS 2.0● Sucessor do JAX-RPC● Suporta os últimos padrões do W3C:

– SOAP 1.2– XML Schema 1.0– MTOM/XOP

● Suporta os últimos padrões do WS-I:– Basic Profile 1.1– Attachment Profile 1.0

Page 21: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

JSR 250: Common Annotations● Padroniza algumas anotações comuns a outras JSRs,

como EJB 3 (JSR 220) e JSR 224● No momento, dois principais grupos de anotações:

– Segurança (@RunAs, @RolesAllowed etc)– Recursos (@Resource, @InjectionComplete etc)

● Escopo ainda depende das JSRs que compõem o Java EE 5

Page 22: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

JSR 260: Javadoc Tag Update● Mais tags e funcionalidades no Javadoc:

– @extspec: linkar para especificação externa (ex: UNICODE)– @denigrated: similar ao @deprecated, mas significando

simplesmente uso não recomendado (APIs públicas apenas para uso interno em outros pacotes, APIs não estáveis, etc.)

– views: somente elementos para o usuário final iniciante, para o avançado, todos os elementos public / protected / deprecated / denigrated e a visão clássica

– @nonspec: gera seção relativa à implementação, não a especificação “genérica”

Page 23: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

JSR 269: Pluggable Annotation Processing API● javax.lang.model● javax.annotation.processing● Padronização da API definida pelo utilitário APT● Padronização parcial da estrutura de um arquivo fonte

– Somente até o nível de declarações– Uma API de “reflection de sources”

Page 24: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

Outras alterações● Diversas outras JSRs menores ainda devem ser incluídas

(especialmente de revisão)● Muitas funcionalidades novas no desktop:

– Antialiasing melhorado e suporte a baseline– Novos tipos de janelas modais– NaturalLayout (usado pelo Matisse/NetBeans)– Double buffering de verdade (sem Grey Screen of Uncertainty)– JNDC/JDIC e SwingWorker

Page 25: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

Outras alterações● Funcionalidades novas:

– OutOfMemoryError com alguma informação útil– Tamanho do espaço livre, capacidade de unidades de disco e

acesso e manipulação dos flags de arquivo (writable, readable, executable) em java.io.File

– Melhorias nas APIs de JMX, JVMTI, JPDA– E muuuuitas outras

Page 26: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

Java 7 – Dolphin – JSR ? TBD● JSR 203 – More New I/O APIs● JSR 277 – Java Module System● Especulações:

– JSR 274 – BeanShell– Suporte direto a XML– Suporte a friends com base em módulos (parte da JSR 277)– Referências diretas a campos e métodos – não como ponteiros

e sim a java.lang.reflect.Field e java.lang.reflect.Method

Page 27: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

Participe!● Mustang está próximo do “feature freeze”● Ainda há tempo para corrigir bugs e influenciar APIs● Faça download dos builds semanais do Mustang:

https://mustang.dev.java.net/● Leia as especificações que são do seu interesse● Filie-se ao JCP e submeta sua candidatura a JSR do

Dolphin quando ela aparecer

Page 28: Mustang e Dolphin: o futuro do Java Mustang e Dolphin: O futuro do Java Michael “Mister M” Nascimento Santos

Mu

sta

ng

e D

olp

hin

: o fu

turo

do Ja

va

Obrigado

[email protected]