Para onde vai a plataforma Java? Linguages dinâmicas, JavaTV, JavaFX e além!
Palestra apresentada por Anderson Leite e Fabio Kung
Basicamente tivemos como carro chefe da apresentação as novidades do Java 7 e Java 8. Eis abaixo elas:
Java 7
Está muito incerto quais as features que irão realmente sair, e muita coisa que ia sair não vai mais. A nova versão passa por um processo muito demorado e burocrático. Sua previsão de lançamento (JDK) é em Janeiro de 2010. Os palestrantes fizeram uma breve pesquisa com os participantes do evento e constataram que só um quinto usam Java 6. Se a maioria não está usando Java 6, porque pensar em usar o Java 7 (fora que o Java 5 é muito usado também)? Essas tendências para o futuro só o futuro dirá se surtirão efeito.
Polarização de Plataformas
Kung acredita que ocorrerá uma polarização entre plataformas, não entre linguagens. Várias linguagens serão executadas sobre a plataforma .NET ou plataforma Java. A Microsoft saiu na frente com o Java e a Sun correu atrás, meio atrasada com o MLVM (Da Vinci Machine). No final, o objetivo é tornar a plataforma a melhor “hospedeira” para outras linguagens, não só a nativa.
Novidades do Java 7
Kung e Anderson mostraram exemplos em código estático acerca das principais características da versão (Para detalhes mais técnicos da especificação, vide Alex Miller e Peter Ahé):
- Meta Object Protocol;
- Fast Interfaces;
- Tuple Signatures;
- Method Handles;
- Invoke Dynamic;
- Interface Dynamic;
- Anonymous Classes;
- Interface Injection;
- Tail Class.
Como a JVM é bastante dinâmica e só a pouco tempo viu-se o “poder de aceitação” para outras linguagens que ela tem, será questão de tempo para a plataforma se adaptar a essa realidade. Por isso o projeto do MLVC é pretensão real para a versão 7. Um exemplo é o uso do Invoke Dynamic: a JVM executa o código, faz uma requisição ao target para saber em qual linguagem compilar (JRuby, Jython, etc.) e executa. Tal qual o Java, após a primeira execução a velocidade de qualquer código é praticamente a mesma de um código Java executado. Outra novidade será o JigSaw (descrito pelas JSR294 e JSR277), que tem como idéia versionar arquivos .jar (ainda é dúvida se entra para a versão 7). E por último o G1, o Garbage First (novo Garbage Collector), que agora não será mais definido por regiões estáticas, mas por regiões dinâmicas e poderá ter o tempo de passagem de coleta de lixo definido pelo usuário.
Java 8
Closures (não confundir com Clojure, a linguagem de programação), idéia para a versão 8, ainda está sendo discutida em termos de padrão, mas a idéia principal (inspirada em Ruby) é rodar “pedaços de código” dentro de um “código completo”. No momento temos 3 propostas para padrão a ser seguido:
Outras novidades para esta versão são:
- Switchs poderão aceitar strings;
- JavaBean Property: suporte a Getters e Setters automáticos na criação de atributos;
- BigDecimal Operator Support: novo literal pra BigDecimal (ex: 10n) e suporte a sobrecarga de operadores.
JavaTV, JavaFX e além?
Devido a tomarem grande parte da palestra com exemplos e futuro da plataforma Java, os termos que perfaziam o final do título da apresentação foram pouco abordados. Sobre JavaTV foi apenas mostrado o diagrama do Ginga e dito que há grande potencial para os desenvolvedores e grandes players para a TV Digital no Brasil. E no caso do JavaFX é que a onda das aplicações RIA e clients gordos (usando Adobe Flex, Silverlight e outros) está em alta. Como diria o poeta e colega nosso Fabrício Campos: choveram no molhado na parte final da apresentação, e não conseguiram dar por completo o foco da palestra.
Eles indicaram para leitura um artigo da Mozilla: “Introduction to JavaScript” (outro link do mesmo assunto).


