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.
Para entendermos melhor esses conceitos, começaremos com um pequeno trecho de código, no qual temos uma pseudolinguagem que define uma função chamada minhafuncao. Trata-se de uma função sem parâmetros e que apenas retorna um texto. Veja o código:
// Corpo da função.
function minhafuncao() {
return “retorno da funcao”;
}
// Chamando nossa função definida logo acima.
minhafuncao();
Observe que, seja qual for a linguagem, sempre teremos uma sintaxe específica para declarar funções, seja usando uma palavra-chave, como function, ou outra qualquer. Continuando com a análise do trecho de código proposto, depois que declaramos a função, a chamamos usando o nome que atribuímos a ela seguido de parênteses: minhafuncao(). Uma expressão lambda funciona um pouco diferente, pois ela é declarada conforme o trecho de código a seguir:
var variavel = function() {
return “retorno da funcao”;
};
variavel();
Neste trecho de código, atribuímos uma função a uma variável e depois a executamos a partir desta mesma variável, usando a sintaxe “nome da variável” seguida por parênteses. Note que a função não foi nomeada, logo não temos como chamá-la da forma que estamos habituados. Este trecho exemplifica o que chamamos de função anônima. Neste contexto, podemos até mesmo passar uma função como parâmetro para outra função. Esta característica pode ser entendida por meio do trecho de código a seguir:
...Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Promoção de Natal
Oferta exclusiva de Natal!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 59,90
Total: R$ 718,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 59,90 /mês
Total: R$ 718,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.