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

Slides:



Advertisements
Apresentações semelhantes
I/O Carlos Bazilio Depto de Ciência e Tecnologia
Advertisements

Soluções Iterativas com Laços
Sistemas distribuídos
Reflexão Marco Antonio Arquiteto de Software Novembro/2007.
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Java Básico Orientação a Objeto Marco Antonio Software Architect Fev/2008.
Marco A. S. Reis EJB Acesso Remoto Marco A. S. Reis
Capítulo 1 Introdução.
Comunicação entre processos distribuídos
Java Conexão com Banco de Dados
PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena
Java: Pacotes e Modificadores de Visibilidade
Java: Pacotes e Modificadores de Visibilidade
Linguagens de Programação Orientadas a Objetos
Programação Básica em Java
Streams Java.
Walfredo Cirne walfredo.dsc.ufpb.br
Rebeca Schroeder Linguagem Java Rebeca Schroeder
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
JAVA ENUMS © 2009 by Jorge L. de Souza Leão março de 2009 PEE - COPPE/UFRJ.
Documentando con Javadoc
Como o AspectJ tece o código
Ferramentas e Tecnologias III
Introdução a Programação JAVA
Estrutura de Dados em Java
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
CRIANDO OBJETOS EM JAVA
Hibernate com JPA Prática
JAVA: Conceitos Iniciais
Concorrência em Java Threads em Java.
Capítulo 2 Java Servlets.
JAVA Orientação a Objetos
JAVA Linguagem Ambiente de Desenvolvimento
Introdução a Java: Classes, métodos e variáveis Eduardo Figueiredo 24 de Março de 2010 POOAula 05.
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Interfaces.
Tópicos de Sistemas de Informação A
Streams –input e output
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Programação I Aula 2 (Métodos)
Chamada Remota de Procedimentos
Linguagem de Programação JAVA
Desenvolvimento de Aplicações CORBA
Cristiano Soares Rafael di Lego Roberto Nemirovsky Thiago Nascimento
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto. Java RMI.
Pilhas Profa. Nádia Félix.
Aula 1 - Fundamentos Java SE Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Gilmar Medeiros – Agosto/2009.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Listas Simplesmente Encadeadas
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
Paulo Oliveira – phslfo Victor Acioli - vaca 11/05/2010.
Implementação Orientada a Objetos – Aula 03
Tratamento de Exceções
MINI CURSO J2ME Vinícius Maran SEMINÁRIO REGIONAL DE INFORMÁTICA 2008.
Bem Vindos JustJava’2007 Mauricio Leal
Java Kickstart, day 2 Semelhanças com linguagem C.
Aula Prática 4 Monitoria IP/CC (~if669).
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
M ÉTODOS DA C LASSE S TRING. FUNÇÕES COM STRING Uma string é um tipo texto que corresponde à união de um conjunto de caracteres. Em Java, as strings são.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
Coleções em Java - Parte 2
Java Conexão com Baco de dados Saulo Bazzi Oberderfer Fonte:
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Socket em Java.
Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos
Java Disciplina: Programação II Professora: Mai-Ly Vanessa.
RMI Java Remote Method Invocation em Java. Introdução Java Remote Method Invocation (Java RMI) permite desenvolver sistemas distribuídos baseados em Java.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

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 Michael Nascimento Santos ● Co-fundador do SouJava ● Experts nas JSRs 207 (PD4J), 250 (Common Annotations) e 270 (Mustang) ● JSR Community java.net ● Senior Technical 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

Mustang e Dolphin: o futuro do Java Lançamentos de Versões da Plataforma ● – Merlin – 02/2002 ● – Hopper – 10/2002 ● – Mantis – 05/2003 ● 5.0 – Tiger – 09/2004 ● 6.0 – Mustang – H1/2006 ● 7.0 – Dolphin – H2/2007

Mustang e Dolphin: o futuro do Java Novo modelo de versionamento ● Versões com novas funcionalidades a cada 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

Mustang e Dolphin: o futuro do Java Java 6 – Mustang – JSR Temas ● Compatibilidade e Estabilidade ● Monitoramento, Gerenciamento e Facilidade de Diagnóstico ● Facilidade de Desenvolvimento ● Enterprise Desktop ● XML & WebServices ● Transparência

Mustang e Dolphin: o futuro do Java JSR 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

Mustang e Dolphin: o futuro do Java 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

Mustang e Dolphin: o futuro do Java 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

Mustang e Dolphin: o futuro do Java 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

Mustang e Dolphin: o futuro do Java JSR 173: Streaming API for XML (StAX) URL u = new URL(" 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()); }

Mustang e Dolphin: o futuro do Java 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 public class HelloWorldService { // public String helloWorld() { return "Hello World!"; }

Mustang e Dolphin: o futuro do Java 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

Mustang e Dolphin: o futuro do Java 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 ”); 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); }

Mustang e Dolphin: o futuro do Java 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

Mustang e Dolphin: o futuro do Java 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

Mustang e Dolphin: o futuro do Java JSR 221: JDBC 4.0 public class Mammal { public String name; public String description; } public interface MyQueries extends BaseQuery name, description, age from mammal") DataSet 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); }

Mustang e Dolphin: o futuro do Java 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

Mustang e Dolphin: o futuro do Java 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

Mustang e Dolphin: o futuro do Java 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')"); }

Mustang e Dolphin: o futuro do Java 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

Mustang e Dolphin: o futuro do Java 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: – etc) – etc) ● Escopo ainda depende das JSRs que compõem o Java EE 5

Mustang e Dolphin: o futuro do Java JSR 260: Javadoc Tag Update ● Mais tags e funcionalidades no Javadoc: : linkar para especificação externa (ex: UNICODE) similar 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 gera seção relativa à implementação, não a especificação “genérica”

Mustang e Dolphin: o futuro do Java 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”

Mustang e Dolphin: o futuro do Java 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

Mustang e Dolphin: o futuro do Java 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

Mustang e Dolphin: o futuro do Java 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

Mustang e Dolphin: o futuro do Java 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: ● 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

Mustang e Dolphin: o futuro do Java Obrigado