Mostrarei como desenvolver programas java usando as ferramentas do projeto gcc (http://gcc.gnu.org/).
Começamos baixando os pacotes de desenvolvimento e de execução, são o gcj e o gij.
Para o ubuntu use o apt-get para isso:
# apt-get install gcj gij
O gcj é o compilador, e o gij é o interpretador bytecode java.
Veja o exemplo:
Hora.java
class Hora {
private int hor, min, seg;
public int getHoras () {return hor;}
public int getMinutos (){return min;}
public int getSegundos (){return seg;}
public void setHoras (int h) {
if (h >= 0 && h < 24)
hor = h;
}
public void setMinutos (int m) {
if (m >= 0 && m < 60)
min = m;
}
public void setSegundos (int s) {
if (s >= 0 && s < 60)
seg = s;
}
public void setHorario (int h, int m, int s) {
setHoras (h); setMinutos (m); setSegundos (s);
}
public String toString () {
return getHoras() + ":" + getMinutos() + ":" + getSegundos();
}
}
UsaHora.java
import java.util.Calendar;
public class UsaHora {
public static void main (String args[]) {
//declara e instancia um objeto tipo Hora
Hora hora = new Hora();
//atribui valores ao objeto com valores válidos
hora.setHorario (15, 30, 10);
//exibe hora
System.out.println ("Hora: " + hora.toString());
//Pega data atual
Calendar dataAtual = Calendar.getInstance();
//declara, instancia e atribui valores a outro objeto do tipo Hora
Hora outraHora = new Hora();
int h = dataAtual.get (Calendar.HOUR_OF_DAY);
int m = dataAtual.get (Calendar.MINUTE);
int s = dataAtual.get (Calendar.SECOND);
outraHora.setHorario (h, m, s);
//exibe hora atual
System.out.println ("Hora atual: " + outraHora.toString());
}
}
Copie e cole os programas java acima.
Usando o método tradicional, com o java, você faria assim:
# javac Hora.java
# javac UsaHora.java
# java UsaHora
Hora: 15:30:10
Hora atual: 20:41:45
#
Usando o gij e o gcj, faremos assim:
# gcj Hora.java -C
# gcj UsaHora.java -C
# gij UsaHora
Hora: 15:30:10
Hora atual: 20:41:45
Para que server o "-C" ?
Isso é para dizer para o compilador para gerar o código em bytecode java. Isso significa que, com o gcj, você pode gerar o código para a máquina nativa.
Ou seja, com o gcj você pode gerar um executável diretamente para a máquina que executará o programa, para fazer isso use o seguinte comando:
# gcj --main=UsaHora Hora.java UsaHora.java -o UsaHora
# ./UsaHora
Hora: 15:30:10
Hora atual: 20:47:5
Aqui dizemos ao compilador para usar a estrutura da classe UsaHora como main, e para incorporar os arquivos Hora.java e UsaHora.java para compilar de uma vez, gerando um código objeto UsaHora
Aqui, no caso, geramos um código ELF, que é um executável linux. Mas se o gcj for instalado no Windows, basta fazer o mesmo comando, porém colocando um ".exe". assim:
c:\ gcj --main=UsaHora Hora.java UsaHora.java -o UsaHora.exe
c:\UsaHora
Hora: 15:30:10
Hora atual: 20:47:5
Em geral os códigos para máquina virtual são muito rápidos, dando pouca diferênça de performance. Você pode fazer esse teste gerando loops grandes tanto em C como em Java para constatar isso.
Conhecimentos gerais, curiosidades e praticidades da informática para o dia a dia.
segunda-feira, 8 de setembro de 2008
Usando gij e gcj no lugar do javac
Marcadores:
bytecode
,
class
,
compilar
,
compiler
,
desempenho
,
gcc
,
gcj
,
gij
,
java
,
performance
Assinar:
Postar comentários
(
Atom
)
Nenhum comentário :
Postar um comentário