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.