1 / 28

Mustang e Dolphin: O futuro do Java

Mustang e Dolphin: O futuro do Java. Michael “Mister M” Nascimento Santos. 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

hertz
Download Presentation

Mustang e Dolphin: O futuro do Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

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

  8. 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

  9. 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

  10. 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()); } }

  11. JSR 181: WebServices Metadata • javax.jws • Define um conjunto de anotações e sua semântica para simplificar o desenvolvimento de webservices import javax.jws.WebService; import javax.jws.WebMethod; @WebService public class HelloWorldService { // Opcional @WebMethod public String helloWorld() { return "Hello World!"; } }

  12. 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

  13. JSR 199: Java Compiler API import 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 err manager.run(null, file); } }

  14. 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

  15. 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

  16. JSR 221: JDBC 4.0 public 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); }

  17. 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

  18. 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

  19. 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')"); } }

  20. 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

  21. 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

  22. 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”

  23. 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”

  24. 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

  25. 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 

  26. 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

  27. 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

  28. Obrigadomister__m@dev.java.net

More Related