Novidades do Java 8: Do Lambda ao Metaspace
Neste artigo veremos três das principais novidades que virão na nova versão do Java 8. Faremos uma discussão aprofundada sobre as Expressões Lambda e os impactos da incorporação desta funcionalidade na linguagem.
Recursos especiais neste artigo:
Conteúdo sobre Novidades.
Neste artigo, veremos três das principais novidades que virão na nova versão do Java 8. Faremos uma discussão aprofundada sobre as Expressões Lambda e os impactos da incorporação desta funcionalidade na linguagem. Discutiremos também sobre a nova API de datas e como ela surge para facilitar substancialmente o trabalho com objetos deste tipo. E finalizaremos com uma rápida análise sobre a remoção do PermGen e a criação do Metaspace para ocupar o seu lugar, analisando ainda as consequências desta substituição.
Em que situação o tema é
útil
Antecipar-se às novidades da nova versão do
Java prepara o desenvolvedor para assimilar e colocar em prática em seus
projetos, de maneira mais fácil e tranquila, as futuras mudanças desta
plataforma. Isto se torna ainda mais relevante quando temos uma nova versão da
linguagem que traz recursos que alteram significativamente a forma como
codificamos nela. Estes recursos atendem pelo nome de Expressões Lambda e é a
mudança mais significativa.
Para aqueles que já se aventuraram em linguagens como Scala, que executa na JVM, estas mudanças não serão tão surpreendentes. Contudo, para os demais, são mudanças que precisarão de um tempo para serem totalmente assimiladas e incorporadas em seu dia a dia. A principal mudança atende, basicamente, por um único nome: Projeto Lambda. E este artigo abordará bastante sobre as expressões lambda, discutindo como elas vão afetar seu jeito de programar.
Mas as mudanças vão além, abrangendo também uma nova API para trabalhar com datas. Aliás, este é um tópico interessante, uma vez que a antiga API do Java para esta tarefa não era bem vista e havia um pedido constante por mudanças por parte da comunidade. Felizmente, teremos uma API totalmente reescrita, melhor e mais fácil de usar.
Outro assunto que desperta curiosidade é a remoção do PermGen (Permanent Generation) e a criação do Metaspace para ocupar seu lugar. Vamos entender como ambos funcionam e quais os impactos desta mudança. Podemos adiantar que você não ficará livre do famigerado erro PermGen Space, que assombra os desenvolvedores que não são muito cuidadosos e acabam criando códigos que drenam essa área de memória.
Apesar de termos estas grandes mudanças, a modularização da plataforma, prevista para esta nova versão, foi mais uma vez postergada e agora está agendada para aparecer somente na versão 9. Para mais informações sobre como será a modularização do Java, veja a seção Links. Embora este artigo tenha como foco as três mudanças já citadas, outras também foram incorporadas, visando tornar a linguagem mais simples de usar e mais robusta. Para ver a lista completa de mudanças, acesse o endereço indicado na seção Links.
Todas as novidades que discutiremos neste artigo estavam inicialmente programadas para serem lançadas em 2013, entretanto, foi adiada para meados de 2014 devido à avalanche de críticas, relacionadas à segurança, que a plataforma Java sofreu recentemente. Estas críticas fizeram a Oracle adiar seu lançamento, visando mais tempo para revisar e disponibilizar uma versão mais robusta nesse aspecto. Entretanto, não precisamos aguardar até esta data para entender algumas das mudanças mais significativas que vêm por aí.
Instalando o Java 8 Early Access
Apesar de a versão final estar programada somente para o ano de 2014, já podemos ter um gostinho do que virá instalando uma versão de testes, chamada Early Access Release. Esta versão vem em dois sabores: uma com suporte para as expressões lambda e a outra sem esse suporte. Instalaremos aqui a versão que possui o suporte para essas expressões, uma vez que um dos nossos objetivos é demonstrar o uso desta nova característica.
Para realizar a instalação desta versão, acesse a página de downloads do Java 8 (veja o endereço na seção Links) e baixe a versão específica para o seu sistema operacional. Desta forma, você terá um arquivo em formato Zip ou Tar.Gz disponível em sua máquina. Descompacte esse arquivo em um diretório de sua preferência. Ao fazer isto, teremos a estrutura de pastas padrão de um JDK do Java. Dentro desta nova pasta, temos uma subpasta chamada bin, que contém os binários do Java que nos permitem compilar e executar programas escritos nesta linguagem. Tratam-se dos binários javac e java, que devem ser utilizados no lugar daqueles que, provavelmente, já existem em seu path padrão, caso você já tenha uma versão anterior do Java instalada em sua máquina.
Sugerimos não colocar esse JDK no seu path, pois se trata de um JDK ainda em desenvolvimento, não sendo, portanto, indicado para uso em produção. Com esta versão em mãos, podemos partir para a próxima seção e discutir sobre a mudança mais alardeada desta plataforma: as expressões lambda!
Expressões Lambda
Da perspectiva da linguagem, provavelmente a mudança que mais chama a atenção no Java 8 são as Expressões Lambda. Isto ocorre porque esta nova característica altera significativamente a forma como usamos a linguagem, incorporando conceitos oriundos da programação funcional. As expressões lambda fazem parte do Projeto Lambda, na forma da JSR 335, que inclui também a extensão virtual de métodos, analisadas na próxima seção, e também melhorias no suporte a multinúcleo, através de um novo recurso do Java 8 chamado Parallel Collections, que abordaremos em um artigo futuro.
Para entendermos melhor como as expressões lambda impactam a linguagem Java, precisamos inicialmente aprender o que elas são independentemente de linguagem de programação. Para isto, vamos nos aventurar um pouco na matemática, com o que conhecemos como Cálculo Lambda (ver seção Links para mais detalhes), que foi a fonte de inspiração das linguagens de programação funcional. Embora não seja nossa intenção iniciar uma extensa aula de matemática neste artigo, há uma peculiaridade no Cálculo Lambda que nos fará entender melhor a sintaxe dessas expressões: as funções não precisam ser nomeadas explicitamente, pois nomes são uma mera conveniência.
Desta forma, para simplificar, uma expressão lambda pode ser entendida como uma função anônima, ou seja, uma função declarada sem definir explicitamente um nome para ela. Uma vez que a função não tem um nome, fica óbvio que não podemos executá-la da forma convencional que a maioria das linguagens de programação faz, que é escrever o nome da função seguido de parênteses (a sintaxe varia de linguagem para linguagem, é claro). Então, como ela será executada? Veremos nos exemplos a seguir." [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo