Home   Java   5 novidades do Java 8

5 novidades do Java 8

5 novidades do Java 8

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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”.
  5. 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

Gostou do post? Agradeça o autor compartilhando nas redes sociais. Clique nos links abaixo:

Deixe uma resposta

Get Best Services from Our Business.