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.867 ]

Por: Perfil removido em 11/10/2005


LookAndFeels, Math, Swing, Printf, ProcessBuilder, Callables, Bit Manipulation Operations



LookAndFeels


A principal mudança de visual do Java foi a modificação da skin Metal padrão. O tradicional tema foi modificado para um visual totalmente diferente. O tema Ocean torna-se agora o padrão de Java.

Math


Foram incorporadas as bibliotecas Math e StrictMath novas funções, como:
  • Métodos que calculam funções trigonométricas hiperbólicas (sinh,cosh,tanh);
  • Método que calcula o logaritmo na base 10 (log10);
  • Método que extrai a raíz cúbica de um número (cbrt);
  • Método que calcula a raíz quadrada da soma dos quadrados de dois números, ou seja, calcula a hipotenusa de um triângulo (hypot);
  • Método que calcula o exponencial de um número e subtrai um do total (expm1);
  • Método que calcula o logaritmo natural de um número+1 (log1p);
  • Método que extrai o sinal de um número (signum);
  • Método que calcula o tamanho do ulterior de um número (ulp);

Swing


Nas versões anteriores ao JDK 1.5, as classes JFrame, JDialog e JApplet só delegavam as chamadas de funções add e setLayout para o contentpane.

import java.swing.*;

public class Test_Old_Java extends JFrame
{
  private JButton button;

  public Test()
  {
    this.getContentPane.setLayout(null);

    button = new Button("Click Here");
    button.setBounds(50,50,100,100);
  
    this.getContentPane.add(button);

    this.setSize(250,200);
    this.setVisible(true);
  }
}

Na nova versão de Java 1.5 fica desse jeito:

import java.swing.*;

public class Test_New_Java extends JFrame
{
  private JButton button;

  public Test()
  {
    this.setLayout(null);

    button = new Button("Click Here");
    button.setBounds(50,50,100,100);
  
    this.add(button);

    this.setSize(250,200);
    this.setAlwaysOnTop(true);
    this.setVisible(true);
  }
}

Um método adicionado para frames e windows no 1.5 é o setAlwaysOnTop, que permite que uma janela fique sempre na frente de todas as janelas do desktop do seu sistema operacional.

Printf


O método printf() foi incorporado ao pacote de classes system.out:

import java.text.*;

public class Test_Old_Java
{
  public static void main(String args[])
  {
    NumberFormat formatter = NumberFormat.getNumberInstance();
    formatter.setMinimumFractionDigits(2);
    formatter.setMaximumFractionDigits(2);
    String formatted = formatter.format(x);
    for (int i = formatted.length(); i < 8; i++)
    System.out.print(" ");
    System.out.print(formatted);
  }
}

Na nova versão de Java, olhe a simplificação:

public class Test_New_Java
{
  public static void main(String args[])
  {
    System.out.printf("%8.2f",x);
  }
}

ProcessBuilder


A nova classe ProcessBuilder, que faz parte do pacote java.lang, vem um com um modo mais conveniente para invocar subprocessos do que usar Runtime.exec() a grosso modo. Ou seja, ela pode criar processos do próprio sistema operacional, como, por exemplo, executar o KCalc no Linux:

public class Test_Old_Java
{
  public static void main(Strig args[])
  {
    try
    {
      Runtime.getRuntime().exec(new String[] {"kcalc","/c","start","KCalc"});
    }
    catch(Exception exception)
    {
      System.out.println("Não foi possível executar o KCalc!");
    }
  }
}

No novo Java fica assim:

public class Test_New_Java
{
  public static void main(String args[])
  {
    try
    {
      Process kcalc = new ProcessBuilder("kcalc").start();
    }
    catch(Exception expection)
    {
      System.out.println("Não foi possível executar o KCalc!");
    }
  }
}

Callables


Quando se cria programas com Threads, não existe a possibilidade de se criar métodos que retornem algum valor (o método execute() é sempre void), ou então se quer criar uma Thread com algum disparador de exceções. A solução é a nova classe Callable, que é uma interface similar a Runnable e tem um único método chamado call(). A classe Callable faz parte do novo pacote java.util.concurrent que foi incorporado ao novo Java.

import java.util.concurrent.*;

public class Callables<T>
{
  public T call() throws Exception
  {
    ...
  }
}

Bit Manipulation Operations


As classes de empacotamento de primitivos (Integer, Long, Short, Byte, e Char) agora suportam operações de manipulação de bits como highestOneBit, lowestOneBit, numberOfLeadingZeros, numberOfTrailingZeros, bitCount, rotateLeft, rotateRight, reverse, signum e reverseBytes.

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

WhatsApp no Debian 8.7.1 via Genymotion

Funtoo Linux - Arquivo /etc/boot.conf

Transparência de janelas no KDE

Instalando o kernel 2.6.37 de maneira fácil no Ubuntu 10.10

Arquivos de configuração de rede - Parte I - /etc/hosts

Leitura recomendada

Terasology: O Minecraft gratuito e com gráfico realista

JlGui - Java Media Player

Declaração de IRPF 2006 pelo Linux

Instalar o Java Development Kit (JDK) 11 no Debian 9

Transforme seu celular em terminal sem fio SSH/Telnet

  
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