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 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
Mustang e Dolphin: o futuro do Java
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
Mustang e Dolphin: o futuro do Java
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
Mustang e Dolphin: o futuro do Java
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
Mustang e Dolphin: o futuro do Java
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
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("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());
}
}
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 javax.jws.WebMethod;
@WebService
public class HelloWorldService {
// Opcional
@WebMethod
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 <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);
}
}
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 {
@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);
}
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:
–
Segurança (@RunAs, @RolesAllowed etc)
–
Recursos (@Resource, @InjectionComplete 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:
–
@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”
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:
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
[email protected]
Mustang e Dolphin: o futuro do Java
Obrigado
Download

Mustang e Dolphin - Blog do Mister M