BT
x A sua opinião é importante! Por favor preencha a pesquisa do InfoQ sobre os seus hábitos de leitura!

Resumo do JavaOne 2013: Java 8 é revolucionário. O Java está de volta

Postado por Matt Raible , traduzido por Eder Ignatowicz em 02 Dez 2013 |

De 22 a 26 de setembro ocorreu em São Francisco a conferência JavaOne 2013. O evento teve início no domingo, com um Keynote Estratégico apresentado pelos funcionários da Oracle Peter Utzschneider, Nandini Ramani e Cameron Purdy.

Esta foi a décima oitava edição do Java One e mais uma vez a comunidade Java demonstrou sinais de crescimento. Na sua palestra, Utzschneider afirmou que a comunidade Java continua sendo a maior comunidade do mundo de uma plataforma de desenvolvimento e afirmou que o número de JUGs crescem 10% ao ano.

O futuro do Java

Ramani comentou sobre o atual estado do Java e enumerou diferentes SDKs da plataforma: Java SE 7, CDC 1.1 (baseado no SE 1.4.2), CLDC (baseado no SE 1.3) e Java ME, apenas para destacar algumas. No passado, estas implementações atendiam mercados verticais específicos, mas a cada implementação, estas SDKs divergiram, tornando-se específicas. Com o Java 8, existirá um perfil que substituirá o CDC.

Entre o Java ME e Java SE, as APIs serão bem similares e a linguagem suportará em ambas todas as funcionalidades. Java 8 proporcionará a unificação da plataforma: portabilidade de código, APIs e ferramental comum - desde SE embarcado até desenvolvimento no servidor com Java EE. No futuro, existirá somente um tipo de desenvolvedor Java.

Outros pilares estratégicos da plataforma incluem: releases sincronizados (o acesso "early" ao Java 8 já está disponível) e a parceria com fornecedores (ARM, Freescale, Qualcomm) para fazer do Java um "cidadão de primeira classe" em chipsets. Em Agosto, a Oracle lançou o programa "Java Plataform Integrator" para adaptar e ampliar de maneira simples o Java Embedded.

Lançado no último verão americano, o Java EE 7 foi um grande marco e tema principal das últimas duas conferências Java One. Na palestra, Purdy destacou três áreas no EE 7: produtividade do desenvolvedor, atendimento das expectativas das empresas e HTML5.

Dois anos atrás, quando o Java EE 7 foi anunciado, o principal tema era Cloud Computing. Agora, EE7 possui tantas funcionalidades para facilitar o deploy em nuvem, incluindo avanços na segurança, recursos padrões, geração de schemas, API client de serviços RESTful e a adaptação do JSF para aplicações multi-tenant. Por último, Cameron anunciou que o Projeto Avatar é agora de código fonte aberto. Este projeto é análogo ao Node.js, mas é executado na JVM.

Java 8 Is Revolutionary, Java Is Back

O grande assunto da conferência foi o Java 8, exemplificado por Mark Reinhold no seu Keynote Técnico. Java 8 possui muitas novas funcionalidades, incluindo uma nova API de Data e Hora (JSR 310), o motor para JavaScript Nashorn, Type Annotations (JSR 308), perfis Compactos e o projeto Lambda (JSR 335).

Lambda é a maior atualização ao modelo de programação desde o início da plataforma e é ainda maior que Generics. É a primeira vez que é realizada uma evolução coordenada da máquina virtual, a linguagem e suas bibliotecas. E, segundo Mark Reinhold, o resultado final ainda nós dá a sensação que continuamos programando em Java.

Brian Goetz, arquiteto da plataforma Java na Oracle, demonstrou como lambdas podem remover grande parte do código de infraestrutura (boilerplate). Antes das lambdas, os desenvolvedores utilizavam em muitos casos uma abordagem pouco expressiva, geralmente através de inner classes. Goetz apresentou o seguinte exemplo.

Collection<Person> people = …;

    Iterator<Person> ip = people.iterator();
    while (ip.hasNext()) {
        Person p = ip.next();
        if (p.getAge() > 18) {
            ip.remove();
        }
    }

Para resumir esta idéia, desenvolvedores podem reescrever este teste como no exemplo a seguir:

   Collections.removeAll(people,
                          new Predicate<Person>() {
                              public boolean test(Person p) {
                                  return p.getAge() > 18;
                              }
                          });

Através de lambdas, isto é muito mais simples:

   Collections.removeAll(people, p -> p.getAge() > 18);

Lambdas não representam apenas uma sintaxe mais elegante, ela utiliza invokedynamic para gerar um bytecode mais compacto e performático. Para provar que a linguagem e suas APIs evoluíram, Goetz falou sobre a nova API de stream e como ela pode ser utilizada para realizar operações em massa (bulk operations) em coleções. Por exemplo:

int highestWeight = people.stream()
    	                      .filter(p -> p.getGender() == MALE)
    	                      .mapToInt(p -> p.getWeight())
    	                      .max();

Este recurso provê sintaxe, desempenho e abstração, e abre oportunidades de paralelismo. No Java 7 foi adicionado um novo framework para decomposição de Fork/Join, mas a sua API manteve-se complexa. Com Java 8, é necessário somente a modificação de uma linha da API: a mudança de stream() para parallelStream():

   int highestWeight = people.parallelStream()
    	                      .filter(p -> p.getGender() == MALE)
    	                      .mapToInt(p -> p.getWeight())
    	                      .max();

Para aprender mais sobre o projeto Lambda, veja http://openjdk.java.net/projects/lambda ou download Java 8.

NetBeans 7.4

John Ceccarelli, diretor de engenharia do NetBeans, apresentou uma demonstração de um jogo de Xadrez HTML5 (escrito em Knockout.js). Ele demonstrou como aprimorar as configurações de tunning do NetBeans de maneira similar ao Firebug e ao Chrome Developer Tools e visualizar o resultado destas configurações sem a necessidade de recarregar a página. Ele trabalha de maneira muito similar ao plugin IntelliJ IDEA's LiveEdit.

No último ano, o NetBeans introduziu o projeto Easel, que foi projetado para adicionar suporte HTML 5 ao NetBeans. Ceccarelli comentou que a reação da comunidade foi muito positiva, requisitando esta funcionalidade nos projetos EE. O lançamento do NetBeans 7.4 RC1 foi realizado poucos momentos antes da JavaOne e incluem suporte ao HTML5, Java EE, Java Web e projetos Maven Web.

Além do "live editing" de HTML e CSS, o NetBeans 7.4 incluiu suporte aos frameworks JavaScript Angular, jQuery e Knockout.js. Isto significa que o editor é capaz de lidar com todos ids do DOM e nome de model no JavaScript. O NetBeans 7.4 é todo dedicado a web mobile e modelos híbridos mobile (através do suporte a Cordova 3.0). É interessante como a funcionalidade de "live editing" também pode ser utilizada em dispositivos móveis. O último release candidate desta versão pode ser baixado em netbeans.org.

O servidor de Xadrez mencionado na demonstração foi escrito utilizando Java EE 7 e instalado no GlassFish 4. A aplicação possui cinco módulos distintos: Chess Endpoint, Player Registration, Chess Engine, Chess Game Manager e Persistence Manager.

O Chess Server utiliza muita das tecnologias Java EE, incluindo: Web Sockets, Batch, EJB, JPA, JAX-Rs 2.0. Toda a comunicação entre cliente e servidor é realizada através de JSON. Santiago Pericas-Geertsen, um membro do time do GlassFish, demonstrou como é simples a configuração do endpoint de um Socket com Java EE 7:

   @ServerEndpoint(value = "/chessserver",
                    encoders = MessageEncoder.class,
                    decoders = MessageDecoder.class);
    public class ChessServerEndpoint {

        @Inject private GameCatalog catalog;

        @OnMessage
        public Message onMessage(String message, Session session) {
            return message.processMe(this);
        }
        ...
    }

A API cliente para comunicação com o endpoint é similar e possui implementação simples.

A última inovação técnica apresentada no keynote técnico da Oracle foi o DukePad. O DukePad, é um tablet desenvolvido no estilo "faça você mesmo" e é baseado no Raspberry PI e em JavaSE 8 Embedded. No projeto, a performance do CPU deixou a desejar: a CPU do Raspberry PI possui velocidade equivalente ao Pentium II, 14 vezes mais lento que o Samsung Galaxy S4 e entre 94-100 vezes mais lento que um núcleo do processador Intel I7. Contudo, a GPU é razoável, 400 vezes mais rápida que a do Pentium II em 1996.

O OpenJFX, possui quase todos seus componentes com código fonte aberto, incluindo os protótipos de iOS e Android. Os apresentadores mencionaram que fóruns são saudáveis e recebem diversos relatórios de bugs dos usuários e diversas contribuições da comunidade. O JavaFX está incluído no JavaSE 8.

Para o futuro e o Java 9, a Oracle possui diversas iniciativas. As principais são a inclusão do Java em GPUs, Reification (ajustes em Generics), JNI 2.0, estruturas de dados eficientes em memória e uma plataforma modular denominada Jigsaw.

A comunidade Java

O Java Community Keynote, foi apresentado por Donald Smith, Diretor Sênior de Gerência de Produtos da Oracle. Ele trouxe diversas pessoas ao palco para falar sobre inspiradores casos de sucesso da tecnologia Java.

Tori Wieldt, falou sobre o Raspberry Pi Challenge e a participação de 25 desenvolvedores em sete projetos. O projeto Heart of Glass (monitorar batimentos cardíacos em tempo real com o Google Glass) e MTAAS (Monster Truck como Serviço) foram dois processos bem sucedidos que emergiram deste evento. Também foi anunciado que a Oracle assinou um acordo de OEM com a fundação Raspberry Pi para incluir o Java SE na imagem dos Raspberry Pi.

Outros anúncios notáveis no keynote da comunidade incluíram: o Square se tornou um membro do OpenJDK e o Devoxx4Kid está a procura de pais e líderes de JUG para serem anfitriões de seus workshops. Também merece destaque o demo do Aditya Gupta. O adolescente apresentou um projeto no Minecraft, criado com Arun Gupta, e o Minecraft Forge, em que porcos voaram e explosões criaram novas explosões.

A Oracle Academy também foi mencionada por Alison Derbenwick Miller. Ela oferece currículos para estudantes K-12, bem como para universidades. Ela educou 2.5 milhões de estudantes no último ano e oferece workshops aos estudantes, programas de desenvolvimento de professores e descontos em certificações.

Também relacionado a educação, ainda foram apresentados no keynote da comunidade muitas demonstrações robôs. James Gosling também foi convidado para falar sobre seu atual trabalho.

A prova que Java está de volta

Ambos os Keynotes foram substanciais nas razões da volta do Java. Java 8, traz a esperança de tornar a programação em Java divertida novamente (através da redução de código de infraestrutura) e diversas APIs presentes no Java EE 7 tornarão simples a construção de aplicações modernas. Além disto, provas adicionais são apresentadas nos seguintes artigos:

Se você não teve a oportunidade de ir ao JavaOne este ano, você deveria adicionar esta conferência ao seu calendário do ano que vem. Se não pelo conteúdo técnico, participe pelo networking. O evento de apreciação da Oracle ofereceu bebida e comida grátis, além do show do Maroon 5 e Black Keys. As festas voltaram e o salão da conferência estava lotado.

Mais do que tudo, o entusiasmo da comunidade de desenvolvimento parece estar mais forte e vivo do que nunca.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Só no aguardo by Luiz Adolphs

Sou desenvolvedor .net, e amaria desenvolver para java se o mesmo apresentasse os mesmos recursos de desenvolvimento do que seu equivalente proprietário. O Lambda e o Linq são demais, e seria demais ter-los no Java!

Re: Só no aguardo by Thiago Resende

Falou tudo

Revolucionário?! by Daniel Alves

Acho que o termo "interessantes" ou melhorias aguardadas há um bom tempo seria algo melhor. Revolucionário é algo muito pesado pra uma linguagem que colocou recursos que outras linguagens já possuem há muitos anos. Sem contar que nem tudo que foi prometido parece que vai sair, como os módulos.

Trabalho com Java, Scala e .NET. Cada uma tem suas vantagens e desvantagens. Gosto d+ de Java tb, mas revolucionário... isso é somente marketing pra mim! ;)

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

3 Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT