5 novidades do Java 8
Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380
Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380
5 novidades do Java 8
Você verá no artigo de hoje as 5 novidades no Java 8 que mudarão a forma de programação em java. Há melhorias de performance, novidades na manipulação de datas e a grande novidade que é o uso de expressões Lambdas entre muitas outras.
A linguagem Java tem evoluído muito nos últimos anos. Como era de se esperar o novo lançamento da versão 8 traz muitas novidades significativas para nós programadores. Então vamos aqui listar algumas:
1. Lambda Expressions
Lambda Expressions é um novo recurso da linguagem java introduzido nesta versão. Eles permitem que você trate a funcionalidade como um argumento de método ou código como dados. As expressões lambda podem expressar instâncias de interfaces em um único método (o que se refere a interfaces como funcionais) de forma mais compacta.
Esta é uma evolução da linguagem Java que a torna mais flexível e deixa a sua implementação de código mais enxuta. Veja um exemplo abaixo de manipulação de listas:
1 2 3 4 5 6 7 8 9 10 11 | public static void main(String[] args) { List<String> novidades = Arrays.asList("Lambdas", "Default Method", "Stream API", "Date and Time API"); // Antes do Java 8: for (String novidade : novidades) { System.out.println(novidade); } // Como fica o código com uso de Lambda no Java 8: novidades.forEach(n -> System.out.println(n)); } |
2. API de Data e Hora
Essa nova API de Data e Hora permitirá que os desenvolvedores tratem data e hora de maneira mais natural, clara e fácil de entender. Até a versão do Java 7 tínhamos várias classes para
trabalhar com data. E claro, elas foram mantidas na nova versão.
- java.util.Date – Utilizada para funções comuns de data em nossos sistemas
- java.sql.Date – manipulação de data em JDBC (conexões com Banco de dados)
- java.util.GregorianCalendar – Classe utilitária com várias funções para cálculos com datas
- java.text.DateFormat – Utilizada para formatação das datas por padrões pré-definidos
A novidade é o pacote java.time. Essa nova API java.time vem para unificar e facilitar o trabalho que era desempenhado pelas classes mencionadas acima. Veja alguns exemplos aqui.
As funcionalidades foram dividas em pacotes:
- java.time.*: Este é o pacote base da nova Java Date Time API. Todas as classes de base fazem parte deste pacote, como LOCALDATE, LocalTime, LocalDateTime, Instant, período,
duração, etc. Todas essas classes são imutáveis e thread-safe. Na maioria das vezes, essas classes serão suficientes para lidar com requisitos comuns. - java.time.chrono.* : Este pacote define APIs genéricas para trabalhar com calendário não ISO. Podemos estender classe AbstractChronology para criar o nosso próprio
sistema de calendário. - java.time.format.* : Este pacote contém classes usadas para formatação e análise de objetos de data e hora. Na maioria das vezes, não estaríamos diretamente
usá-los porque o princípio classes no pacote java.time fornecer métodos de formatação e análise. - java.time.temporal: Este pacote contém objetos temporais e podemos usá-lo para descobrir data ou a hora relacionada ao objeto de data/hora específica.
Por exemplo, podemos usá-los para descobrir o primeiro ou o último dia do mês. Você pode identificar facilmente esses métodos porque eles sempre têm formato “withNOME”. - java.time.zone: Este pacote contém classes para apoiar diferentes fusos horários e as suas regras.
Veja uma implementação abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | package br.com.feltex.data; import java.time.DateTimeException; import java.time.LocalDate; import java.time.Month; import java.time.ZoneId; public class MinhaData { public static void main(String[] args) { // Data Atual LocalDate hoje = LocalDate.now(); System.out.println("Data Atual=" + hoje); // Criando uma data passa os valores desejados LocalDate natal2014 = LocalDate.of(2014, Month.DECEMBER, 25); System.out.println("Natal de 2014=" + natal2014); // Criando uma data inválida 31 abril - Não existe, pois abril só tem 30 // dias try { LocalDate abril31_2014 = LocalDate.of(2014, Month.APRIL, 31); System.out.println(abril31_2014); } catch (DateTimeException e) { System.err.println(e.getMessage()); } // Data atual no Japão, Veja todas a zonas disponíve em ZoneId javadoc LocalDate toquio = LocalDate.now(ZoneId.of("Asia/Tokyo")); System.out.println("A data corrento em Tóquio (JST) é =" + toquio); //Retocedento os dias para obter uma data a partir da data base 01/01/1970 LocalDate dataBase = LocalDate.ofEpochDay(365); System.out.println("365 dias a partir da data baase (01/01/1970)= " + dataBase); //Obter o dia pelo número sequencial no ano. LocalDate centessimoDia2014 = LocalDate.ofYearDay(2014, 100); System.out.println("100º dia de 2014=" + centessimoDia2014); } } |
3. Collections
As classes no novo pacote java.util.stream fornecem uma API Stream para apoiar as operações de estilo funcional em fluxos de elementos. A API Stream é integrada a API Collections, que permite operações em massa em coleções, como transformações sequenciais ou paralelos de redução de Map.
Melhoria de Desempenho para HashMaps com colisões chave.
4. JDBC
A conexão com Banco de dados via JDBC-ODBC foi removida removed. Esta é uma forma de acessar banco de dados
no ambiente windows realizando a configuração diretamente no sistema opercional. Nestes casos não é necessário ter os drivers do banco de dados
na aplicação ou servidor JAVA. Veja um exemplo de conexão JDBC-ODBC: aqui
5. O Java 8 não rodará no Windows XP
Nota oficial da Oracle:
“Desde 8 de abril de 2014, a Microsoft interrompeu o suporte do XP Windows e, portanto, ele não é mais uma plataforma suportada.
Os usuários do XP não poderão instalar o Java 8. Os usuários do Windows devem fazer upgrade para o Windows Vista ou posterior para instalar o Java 8.” Veja site oficial
Conclusão
Há muitas novidades que mudam a forma de programar em Java. Alguns autores são categóricos em dizer que a inclusão de Lambda no java 8 foi uma péssima ideia. THIERRY – RebelLabs Author (Em inglês). Outros dizem que ajudará muito na produtividade por fazer mais com menos leia Peter Verhas (em Inglês) .
Acredito que o novo sempre causa uma certa repulsa, pois tende a nos tirar da zona de conforto. Lembro que isso aconteceu no Java 5 com a introdução de Generics, ForEach e Enum que ao longo do tempo foram largamente aceitas e são muito utilizados hoje.
É certo que a sintaxe fica menos intuitiva e isso se deve ao fato de tornar o Java uma linguagem funcional (resumo de linguagem funcional).
O tempo dirá se isto é um acerto ou erro… enquanto isso vamos aplicar em nosso dia-a-dia. No mais… vida que segue!
Links relacionados
Download do java 8
Tutorial do Java 8
Novidade Java 8
Deixe um comentário
Você precisa fazer o login para publicar um comentário.