As novidades do Java 1.5

Você sabe quais novidades foram introduzidas no Java 1.5? A melhor de todas foi a implementação de Generics, a nova tecnologia que vai facilitar e muito a vida dos programadores Java. Neste artigo faço uma introdução completa às novas implementações encontradas nessa versão dessa linguagem.

[ Hits: 53.865 ]

Por: Perfil removido em 11/10/2005


Loops, Autoboxing/Unboxing, Collections, Static Import, Scanner, Support for Enviromment Variables, Threads



Loops


Uma boa melhoria de Java é que agora os loops de repetição foram adaptados para o uso com arrays. Exemplo na versão antiga de Java:

public class Test_Old_Java
{
  public static void main(String args[])
  {
    String[] string = {"www.","viva","o","linux",".com",".br","\n"};
    for(int i=0; i < string.length; i++)
    {
     System.out.print(string[i]);
    }
  }
}

No JDK 1.5 agora pode ser assim:

public class Test_New_Java
{
  public static void main(String args[])
  {
    String[] string = {"www.","viva","o","linux",".com",".br","\n"};
    for(String i:string)
    {
     System.out.print(i);
    }
  }
}

Apesar de ter mostrado estes exemplos com variáveis tipo objeto, esta nova sintaxe de laço funciona também para tipos primitivos.

Autoboxing/Unboxing


Antes do JDK 1.5, a conversão entre os tipos primitivos e tipos objetos não eram automáticas:

public class Test_Old_Java
{
  public static void main(String args[])
  {
    Integer temp = new Integer(15);

    int k = temp.intValue();
  }
}

Na nova versão de Java fica bem mais simples e agora é automático:

public class Test_New_Java
{
  public static void main(String args[])
  {
    Integer temp = 15;

    int k = temp;
  }
}

Collections


Novas coleções foram adicionadas ao pacote java.util de Java. Tais como Queue, BlockingQueue, ConcorrentMap e muitas outras existentes se tornaram genéricas como Vector, Enum, Hashtable, Stack, TreeSet, etc. Também foram adicionadas muitas classes para se utilizar com o novo pacote concurrency de Java. A classe Array ganha novos métodos como hashCode e toString. A classe Boolean agora implementa a interface Comparable, dentre muitas outras modificações.

Static Import


Agora é possível importar métodos e constantes estáticas. Antes quando se utilizava dos nomes do pacotes para fazer chamada aos métodos e constantes, tornava-se o código mais complexo e de difícil interpretação.

public class Test_Old_Java
{
  public static void main(String args[])
  {
    System.out.println(Math.sqrt(Math.PI));
  }
}

Já na nova versão de java ficaria assim:

import static java.lang.Math.*;
import static java.lang.System.*;

public class Test_New_Java
{
  public static void main(String args[])
  {
    out.println(sqrt(PI));
  }
}

Scanner


Nas versões anteriores de Java 1.5 era extremamente complicado, ou quase impossível criar programas que recebiam valores de variáveis pelo terminal. Agora no novo Java a solução até que enfim apareceu.

Se você fosse criar um programa de Java para receber parâmetros de variáveis pelo console, tinha obrigatoriamente que dominar Streams. Além de criar um pacote de classes muito grande para atender todos os tipos de variáveis. Ou então desistia da idéia de receber dados pelo console e utilizava da interface gráfica de Java.

import java.swing.JOptionPane;

public class Test_Old_Java
{
  public static void main(String args[])
  {
    String temp = JOptionPane.showInputDialog("Digite o número:");
    int number = Integer.parseInt(temp);
    int sum = number * number;
    JOptionPane.showMessageDialog("O quadrado de "+number+" é: "+sum);
  }
}

Agora basta utilizar a nova classe Scanner, que faz parte o pacote java.util, que faz parte do Java 1.5 e está solucionado o problema.

import java.util.Scanner;

public class Test_New_Java
{
  public static void main(String args[])
  {
    Scanner input = new Scanner(System.in);
    System.out.print("Digite o número: ");
    int number = input.nextInt();
    System.out.print("O quadrado de "+number+" é: "+number*number);
  }
}

Support for Enviromment Variables


No Java existe um método que retorna o conteúdo das variáveis de ambiente do sistema operacional. Antes deprecated, o método getenv() aceita como parâmetro uma String e pode retornar uma String ou um Map.

public class Test
{
   public static void main(String args[])
   {
      String temp = System.getenv("PATH");
      System.out.print(temp);
   }
}

Threads


A classe java.lang.Thread foi modificada para acomodar novas funcionalidades, como a enumeração Thread.State, que define o estado de execução da Thread como NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING e TERMINATED, além do novo método getState(), que retorna o estado da Thread.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Loops, Autoboxing/Unboxing, Collections, Static Import, Scanner, Support for Enviromment Variables, Threads
   3. LookAndFeels, Math, Swing, Printf, ProcessBuilder, Callables, Bit Manipulation Operations
   4. StringBuilder, Varargs, Enums, Generic ArrayList, Formatter, Concurrency, AWT, Monitoring and Management
   5. Generics
   6. Conclusão
Outros artigos deste autor

ReiserFS x Ext3: Quem ganha?

Tutorial de instalação do H3270 (sources) com SSL no RHEL5 (s390x)

Repensando o PID 1 - Lennart Poettering

Gerenciamento de pacotes RPM (parte 1)

Linux Hoje

Leitura recomendada

Declaração de IRPF 2006 pelo Linux

Transforme seu celular em terminal sem fio SSH/Telnet

Entendendo orientação a objetos na prática (parte 1)

Introdução ao Desenvolvimento Android

Programando em Java para Console

  
Comentários
[1] Comentário enviado por [email protected] em 11/10/2005 - 15:39h

Parabéns pelo fantástico artigo... Achei as tuas explicações bastante acessíveis. Estou ansioso por experimentar algumas destas novidades na linguagem.

[2] Comentário enviado por lennon.jesus em 11/10/2005 - 16:37h

A linguagem JAVA está surpreendendo cada vez mais. O C e o C++ estão sendo substituidos em muitas universidades pelo JAVA.

Eu também aprecio as linguagens DotNet da Microsoft mas a grande vantagem do JAVA está em sua portabilidade entre plataformas e suas ferramentas de desenvolvimentos gratuitas.

Briga acirrada mesmo teríamos se a Microsoft disponibilizasse a portabilidade em sua DotNet. Seria interessante... Até mesmo se as ferramentas (deles) continuassem sendo pagas.

Acho que nos próximos anos iremos experimentar evoluções em diversas áreas, tanto de software como de hardware.


Parabéns pelo ótimo (inteligente, claro e direto) artigo.


Abraços.

[3] Comentário enviado por rdaraujo em 13/10/2005 - 16:21h

Pessoal, tenho a versao 1.5.0, porem em alguns exemplos das novas funcionalidades, como a nova forma de varrer um array, aparece a seguinte mensagem:
Syntax error, 'for each' statements are only available if source level is 5.0.

Eis o codigo:

String[] ar = {"a","b","c","d"};
for (String i:ar) {
System.out.println(i);
}

$ javac -version
javac 1.5.0_01

[4] Comentário enviado por FelipeAbella em 01/06/2006 - 18:52h

rdaraujo: Você tem que configurar para usar o source level 5.0 no compilador, muitas IDEs podem configurar isso, ou voce pode procurar saber o parametro que faz isso, que eu nao lembro agora.

[5] Comentário enviado por kalib em 19/02/2008 - 18:35h

Comigo tá dando problema...
instalei o 1.5...e rodando o comando java -version
vejo que está na 1.5 mesmo..
Porém quando abro o eclipse por exemplo, dá erro... ele continua compilando com o 1.4, e a classe scanner acaba não funcionando... :/
Alguém tem alguma solução?

[6] Comentário enviado por M4conheiRoX em 23/10/2008 - 12:02h

vou comerça
ftz


Contribuir com comentário