head	1.7;
access;
symbols;
locks; strict;
comment	@# @;


1.7
date	2000.12.18.23.20.51;	author warrenl;	state Exp;
branches;
next	1.6;

1.6
date	2000.07.05.06.07.16;	author kingdon;	state Exp;
branches;
next	1.5;

1.5
date	2000.06.28.04.54.21;	author apbianco;	state Exp;
branches;
next	1.4;

1.4
date	2000.04.23.05.00.31;	author green;	state Exp;
branches;
next	1.3;

1.3
date	2000.03.13.17.23.06;	author tromey;	state Exp;
branches;
next	1.2;

1.2
date	2000.02.17.07.57.12;	author green;	state Exp;
branches;
next	1.1;

1.1
date	2000.02.17.00.42.04;	author tromey;	state Exp;
branches;
next	;


desc
@@


1.7
log
@	* build-snapshot.html: Mention more specifics on activating libgcj
	regarding noconfigdirs in the toplevel configure.in.
	* index.html: Added a Build link.
	* about.html: Ditto.
	* contrib.html: Ditto.
	* docs.html: Ditto.
	* done.html: Ditto.
	* download.html: Ditto.
	* faq-portugese.html: Ditto.
	* faq.html: Ditto.
	* mail.html: Ditto.
	* projects.html: Ditto.
	* support.html: Ditto.
	* thanks.html: Ditto.
	* tm.html: Ditto.
@
text
@<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="GENERATOR" content="Mozilla/4.7 [en] (Win98; I) [Netscape]">
   <title>The GCJ FAQ</title>
</head>
<!--#include virtual="/include/header-subpages.html"-->
<body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink="#551A8B" alink="#FF0000">

<table BORDER=0 >
<tr>
<td VALIGN=TOP>
<table BORDER=0 >
<tr>
<td><img SRC="gcj.jpg" ALT="gcj logo" height=98 width=136></td>
</tr>

<tr>
<td>
<table BORDER=0 >
<tr>
<td WIDTH="10"></td>

<td><a href="index.html">Home</a>
<br><a href="faq.html">FAQ</a>
<br><a href="mail.html">Mailing Lists</a>
<br><a href="docs.html">Documentation</a>
<br><a href="download.html">Download</a>
<br><a href="build-snapshot.html">Build</a>
<br><a href="contrib.html">Contributing</a>
<br><a href="done.html">Done with Gcj</A>
<br><a href="/cgi-bin/gnatsweb.pl?user=guest&password=guest&database=java&cmd=login">Bugs</a>
<br><a href="thanks.html">Thanks</a>
<br><!-- <a href="support.html">Support</a><br> -->
<br>&nbsp;
<p><a href="http://gcc.gnu.org">GCC</a>
<br><a href="/mauve">The Mauve Project</a>
<br><a href="/">Sources.redhat.com</a>
<br><a href="http://www.gnu.org">The GNU Project</a>
<br><a href="http://www.redhat.com">Red Hat</a></td>
</tr>
</table>
</td>
</tr>
</table>
</td>

<td WIDTH="2" BGCOLOR="#000000">i&nbsp;</td>

<td WIDTH="6"></td>

<td>
<br>&nbsp;
<h1>
O FAQ GCJ</h1>
A &uacute;ltima vers&atilde;o deste documento sempre est&aacute; dispon&iacute;vel
em <a href="http://sources.redhat.com/java/faq-portugese.html">http://sources.redhat.com/java/faq-portugese.html</a></p>
<p>This FAQ is also available in <a href="faq.html">English</a>.</p>
<ol>
<li>
<a href="#1_0">Quest&otilde;es Gerais</a></li>

<ol>
<li>
<a href="#1_1">Que licen&ccedil;a &eacute; usada para o libgcj?</a></li>

<li>
<a href="#1_2">Como fa&ccedil;o para relatar um bug no libgcj?</a></li>

<li>
<a href="#1_3">Como posso contribuir com o libgcj?</a></li>

<li>
<a href="#1_4">Por que o libgcj n&atilde;o &eacute; parte do GCC?</a></li>

<li>
<a href="#1_5">gcj e libgcj ir&atilde;o funcionar na minha m&aacute;quina?</a></li>

<li>
<a href="#1_6">Como fa&ccedil;o para depurar meu programa Java?</a></li>
</ol>

<li>
<a href="#2_0">Suporte a Caracter&iacute;sticas Java</a>&nbsp;</li>

<ol>
<li>
<a href="#2_1">Quais APIs do Java s&atilde;o suportadas? Qu&atilde;o completo
&eacute; o suporte?&nbsp;</a></li>

<li>
<a href="#2_2">GCJ suporta o uso direto de m&eacute;todos nativos C &agrave;
la JNI? CNI parece um tanto quanto dif&iacute;cil de usar.</a></li>

<li>
<a href="#2_3">Por que GCJ usa CNI?</a></li>

<li>
<a href="#2_4">Qual &eacute; o estado do suporte ao AWT?</a></li>

<li>
<a href="#2_5">E sobre o suporte ao Swing?</a></li>

<li>
<a href="#2_6">Que suporte existe para RMI?</a></li>

<li>
<a href="#2_7">Posso usar qualquer c&oacute;digo de outros projetos OpenSource
para suplementar as caracter&iacute;sticas atuais do libgcj?</a></li>

<li>
<a href="#2_8">Quais caracter&iacute;sticas da linguagem Java s&atilde;o/n&atilde;o
s&atilde;o suportadas?</a></li>
</ol>

<li>
<a href="#3_0">Quest&otilde;es de Constru&ccedil;&atilde;o&nbsp;</a>&nbsp;</li>

<ol>
<li>
<a href="#3_1">Preciso de algo mais recente que o &uacute;ltimo lan&ccedil;amento;
Como devo constru&iacute;-lo?</a></li>

<li>
<a href="#3_2">Bug do <i>linkador</i> no Solaris</a>&nbsp;</li>
</ol>

<li>
<a href="#4_0">GCJ:&nbsp; Quest&otilde;es de Compila&ccedil;&atilde;o/V&iacute;nculo</a><i>&nbsp;</i></li>

<ol>
<li>
<a href="#4_1">Por que recebo erros de&nbsp; <tt>undefined reference to
`main'</tt>?</a>&nbsp;</li>

<li>
<a href="#4_2">GCJ pode manipular apenas c&oacute;digo fonte?</a></li>

<li>
<a href="#4_3">"gcj -C" n&atilde;o parece funcionar como javac/jikes. O
que acontece?&nbsp;</a></li>

<li>
<a href="#4_4">Onde o GCJ procura por arquivos? Como gcj decide se compila
arquivos .class ou .java?</a></li>

<li>
<a href="#4_6">Estou tendo erros de v&iacute;nculo!</a>&nbsp;</li>
</ol>

<li>
<a href="faq.html#5_0">Quest&otilde;es
de <i>Runtime</i> (tempo de execu&ccedil;&atilde;o)</a></li>

<ol>
<li>
<a href="#5_1">Est&aacute; ocorrendo "<i>core dumping"</i> com meu programa!
O que acontece?</a>&nbsp;</li>

<li>
<a href="#5_2">Quando eu rodo o depurador obtenho um&nbsp; SEGV no GC!
O que acontece?</a></li>

<li>
<a href="#5_3">H&aacute; pouco compilei e fiz o <i>benchmark</i> de minha
aplica&ccedil;&atilde;o Java e ela parece estar rodando mais lento do que
XXX JIT JVM. H&aacute; algo que eu possa fazer para faz&ecirc;-la rodar
mais r&aacute;pido?</a></li>

<li>
<a href="#5_4">Posso tra&ccedil;ar a Coleta de Lixo ("Garbage Collection")?&nbsp;</a></li>

<li>
<a href="#5_5">Como posso aumentar os tamanhos m&aacute;ximo e inicial
da <i>heap</i>?</a></li>

<li>
<a href="#5_6">Posso tra&ccedil;ar minha aplica&ccedil;&atilde;o?</a>&nbsp;</li>
</ol>
<a href="#6_0">T&oacute;picos de Programa&ccedil;&atilde;o&nbsp;</a>
<ol>
<li>
<a href="#6_1">H&aacute; algum exemplo de como usar CNI?</a></li>
</ol>
</ol>

<table BORDER=0 CELLPADDING=4 WIDTH="95%" >
<tr BGCOLOR="#B0D0FF">
<th ALIGN=LEFT>
<h2>
<a NAME="1_0"></a>Quest&otilde;es Gerais</h2>
</th>
</tr>
</table>

<dl>
<h3>
<a NAME="1_1"></a>1.1 Que licen&ccedil;a &eacute; usada para o libgcj?</h3>

<dd>
libgcj &eacute; distribu&iacute;do sob a licen&ccedil;a GPL.</dd>

<dt>

<hr></dt>

<h3>
<a NAME="1_2"></a>1.2 Como fa&ccedil;o para relatar um bug no libgcj?</h3>

<dl>
<dt>
libgcj tem um&nbsp; <a href="/cgi-bin/gnatsweb.pl?user=guest&password=guest&database=java&cmd=login">banco
de dados de bugs, Gnats,</a> correspondente que voc&ecirc; pode folhear.
Voc&ecirc; tamb&eacute;m pode submeter um novo bug a partir da p&aacute;gina
do Gnats.
<hr></dt>
</dl>

<h3>
<a NAME="1_3"></a>1.3 Como posso contribuir com o libgcj?</h3>

<dl>
<dt>
Voc&ecirc; pode enviar reparos simples como remendos. Por favor, siga as
seguintes <a href="http://gcc.gnu.org/contribute.html">Diretrizes GCC
para submiss&atilde;o de remendos</a>. "For more complex changes, you must
sign copyright over to the Free Software Foundation." Veja a&nbsp; p&aacute;gina de <a href="contrib.html">contribui&ccedil;&otilde;es</a>
para detalhes.
<hr></dt>
</dl>

<h3>
<a NAME="1_4"></a>1.4 Por que o libgcj n&atilde;o &eacute; parte do GCC?</h3>

<dd>
Por v&aacute;rias raz&otilde;es menores. &Eacute; prov&aacute;vel que libgcj
termine no GCC em algum ponto no futuro.</dd>

<dt>

<hr></dt>

<h3>
<a NAME="1_5"></a>1.5 gcj e libgcj ir&atilde;o funcionar na minha m&aacute;quina?</h3>

<dd>
&Eacute; sabido que gcj e&nbsp; libgcj funcionam mais ou menos com IA-32
e Sparc Solaris, bem como com Alpha and PowerPC Linux. Podem funcionar
em outros sistemas, mas n&oacute;s n&atilde;o sabemos. Genericamente falando,
a convers&atilde;o para um novo sistema n&atilde;o deveria ser dif&iacute;cil.&nbsp;
Poderia ser uma boa id&eacute;ia para um volunt&aacute;rio.</dd>

<dt>

<hr></dt>

<h3>
<a NAME="1_6"></a>1.6 Como posso depurar meu programa Java?</h3>

<dd>
<a href="ftp://ftp.gnu.org/pub/gnu/gdb/gdb-4.18.tar.gz">gdb 4.18</a> inclui
suporte para depura&ccedil;&atilde;o de programas Java compilados com gcj.&nbsp;
Para Linux, voc&ecirc; precisar&aacute; usar uma vers&atilde;o recente
do gdb&nbsp; <a href="ftp://sources.redhat.com/pub/gdb/snapshots/">ftp://sources.redhat.com/pub/gdb/snapshots/</a>
porque o padr&atilde;o&nbsp; 4.18 n&atilde;o tem suporte para linhas de
execu&ccedil;&atilde;o (<i>threads)&nbsp;</i> Linux.</dd>

<dt>
&nbsp;</dt>
</dl>

<table BORDER=0 CELLPADDING=4 WIDTH="95%" >
<tr BGCOLOR="#B0D0FF">
<th ALIGN=LEFT>
<h2>
<a NAME="2_0"></a>Suporte a Caracter&iacute;sticas Java</h2>
</th>
</tr>
</table>

<dl>
<dd>
&nbsp;</dd>
</dl>

<h3>
<a NAME="2_1"></a>2.1 Quais APIs do Java s&atilde;o suportadas? Qu&atilde;o
completo &eacute; o suporte?</h3>

<dl>
<dd>
<a href="mailto:mdw@@cs.berkeley.edu">Matt Welsh</a> escreve:</dd>

<dl>
<dd>
Simplesmente olhe no diret&oacute;rio 'libjava' do libgcj e veja quais
classes est&atilde;o l&aacute;. A maior parte das classes relacionadas
a&nbsp; GUI n&atilde;o est&aacute; l&aacute; ainda, &eacute; verdade, mas
muitas das outras s&atilde;o f&aacute;ceis de adicionar caso ainda n&atilde;o
existam.</dd>

<dt>
&nbsp;</dt>

<dd>
Eu acho que &eacute; importante salientar que h&aacute; uma grande diferen&ccedil;a
entre Java e as muitas bibliotecas que Java suporta. Infelizmente, a promessa
da Sun de "escreva uma vez, rode em qualquer lugar" assume muito mais que
uma&nbsp; JVM: voc&ecirc; necessitar&aacute; do conjunto completo de bibliotecas
JDK. Considerando que novas APIs Java surgem toda semana, est&aacute; ficando
imposs&iacute;vel rastrear tudo.</dd>

<dt>
&nbsp;</dt>

<dd>
Para fazer as coisas ainda piores, voc&ecirc; n&atilde;o pode simplesmente
rodar as classes JDK da Sun em qualquer velha JVM -- elas assumem que uma
penca de m&eacute;todos nativos est&atilde;o definidos tamb&eacute;m .</dd>

<dl>
<dt>
Desde que essa necessidade de m&eacute;todo nativo n&atilde;o est&aacute;
definida pela especifica&ccedil;&atilde;o JDK, voc&ecirc; est&aacute; efetivamente
limitado a usar a JVM da Sun se quiser usar as bibliotecas JDK da Sun.
Oh sim -- voc&ecirc;&nbsp; tamb&eacute;m poderia reimplementar todos esses
m&eacute;todos nativos, certificando-se de que eles se comportam exatamente
como aqueles feitos pela Sun. Note que eles n&atilde;o tem documenta&ccedil;&atilde;o.&nbsp;</dt>
</dl>
</dl>
</dl>

<hr>
<h3>
<a NAME="2_2"></a>2.2 GCJ suporta o uso direto de m&eacute;todos nativos
C &agrave; la JNI? CNI parece um tanto quanto dif&iacute;cil de usar.</h3>

<blockquote>Atualmente gcj n&atilde;o suporta JNI, mas isto pode mudar
no futuro.
<p><a href="mailto:per@@bothner.com">Per Bothner</a> explica o futuro dessas
interfaces nativas:
<br>&nbsp;
<blockquote>(1) &Eacute; uma meta que gcj deveria suportar tanto JNI quanto
CNI. Fazer isso n&atilde;o &eacute; dif&iacute;cil em princ&iacute;pio,
especialmente lidar com JNI- usando bibliotecas que s&atilde;o conhecidas
no tempo de v&iacute;nculo ("link") (desde que voc&ecirc; pode simplesmente
gerar fun&ccedil;&otilde;es CNI inv&oacute;lucras&nbsp; que chamam os m&eacute;todos
JNI correspondentes).&nbsp; Entretanto h&aacute; ainda certo trabalho tedioso
que precisa ser feito para JNI.</blockquote>
</blockquote>

<dl>
<blockquote>
<blockquote>(2) N&oacute;s preferimos CNI, a medida que &eacute; mais eficiente,
mais f&aacute;cil de escrever, e (pelo menos potencialmente) mais f&aacute;cil
de depurar.&nbsp;
<p>(3) Voc&ecirc; poderia em princ&iacute;pio escrever c&oacute;digo C++
que implementa ambas interfaces CNI e JNI usando a m&aacute;gica do pr&eacute;-processamento.&nbsp;
A quest&atilde;o &eacute; se n&oacute;s podemos faz&ecirc;-lo de tal maneira
que n&atilde;o fosse mais simples&nbsp; e limpo do que simplesmente manter
duas c&oacute;pias do c&oacute;digo. N&oacute;s n&atilde;o sabemos ainda.</blockquote>
</blockquote>

<dl>
<dd>
</dd>
</dl>
</dl>

<hr>
<h3>
<a NAME="2_3"></a><font size=+1>2.3 Por que GCJ usa CNI?</font></h3>
&nbsp;
<blockquote><a href="mailto:per@@bothner.com">Per Bothner</a> explica:</blockquote>

<blockquote>
<blockquote>N&oacute;s usamos CNI porque n&oacute;s achamos que &eacute;
a melhor solu&ccedil;&atilde;o, especialmente para uma implementa&ccedil;&atilde;o
Java que &eacute; baseada na id&eacute;ia de que Java &eacute; apenas outra
linguagem de programa&ccedil;&atilde;o que pode ser implementada usando
t&eacute;cnicas padr&atilde;o de compila&ccedil;&atilde;o. Dado isso, e
a id&eacute;ia que linguagens implementadas usando GCC deveriam ser compat&iacute;veis
onde isso faz sentido, segue que a conven&ccedil;&atilde;o de chamadas
do Java deveria ser t&atilde;o similar e t&atilde;o pr&aacute;tica quanto
&agrave;quelas usadas por outras linguagens, especialmente C++; desde que
n&oacute;s podemos pensar em Java como um subconjunto de C++. CNI &eacute;
apenas um conjunto de fun&ccedil;&otilde;es auxiliares e conven&ccedil;&otilde;es
constru&iacute;das sobre a id&eacute;ia de que Java e C++ tem a *mesma*
conven&ccedil;&atilde;o de chamadas e layout de objetos; seus bin&aacute;rios
s&atilde;o compat&iacute;veis. (Esta &eacute; uma simplifica&ccedil;&atilde;o,
mas se aproxima o bastante.)</blockquote>
</blockquote>

<hr>
<h3>
<a NAME="2_4"></a>2.4 Qual &eacute; o estado do suporte ao AWT?</h3>

<dl>
<dd>
Atualmente n&atilde;o h&aacute; suporte para o AWT.&nbsp; Arte pr&eacute;via
que poderia ser usada para isto requer JNI. Poss&iacute;veis pontos de
partida s&atilde;o dados a seguir.</dd>

<dl>&nbsp;
<br>QtAWT
<br>&nbsp;
<dt>
QtAWT( ) fornece uma implementa&ccedil;&atilde;o baseada em Qt das classes
pares usadas pelos componentes AWT. Isto consiste de um conjunto de classes
Java que implementam as interfaces especificadas em java.awt.peer, e algumas
poucas outras como java.awt.Toolkit. As classes s&atilde;o implementadas
numa mistura de c&oacute;digo Java e c&oacute;digo nativo, com os c&oacute;digos
nativos sendo chamados via JNI. Devido ao fato de que ele adere &agrave;
APIs padr&atilde;o tais como JNI, QtAWT deveria ser port&aacute;vel o bastante
para funcionar com qualquer JVM 1.1. Uma vez que os caminhos para a classe
e para a biblioteca tenham sido ajustados corretamente, o QtAWT pode ser
usado ao inv&eacute;s dos pares nativos fornecidos com sua JVM, ajustando
a propriedade awt.toolkit para apontar para a implementa&ccedil;&atilde;o
QtToolkit.&nbsp;</dt>
</dl>

<dl>
<dd>
<a href="http://developer.kde.org/language-bindings/java/qtawt/developer.html">http://developer.kde.org/language-bindings/java/qtawt/developer.html</a></dd>

<dt>
&nbsp;</dt>

<dt>
GTK AWT</dt>

<dd>
Alguns membros do projeto Mozilla / Blackdown est&atilde;o fazendo algumas
tentativas aqui (login gr&aacute;tis requerido):</dd>

<dd>
<a href="http://developer.java.sun.com/developer/restricted/java2cs/contribs/">http://developer.java.sun.com/developer/restricted/java2cs/contribs/</a></dd>

<dt>
&nbsp;</dt>

<dd>
O projeto Classpath est&aacute;&nbsp; fazendo&nbsp; AWT com pares GTK ,
e eles est&atilde;o procurando por algu&eacute;m que queira fazer Classpath
funcionar com Kaffe ... <a href="http://www.gnu.org/software/classpath/">http://www.gnu.org/software/classpath/</a></dd>

<dt>
&nbsp;</dt>
</dl>

<dl>
<dt>
<a href="http://www.kaffe.org/">Kaffe</a> AWT</dt>

<dd>
Kaffe tem uma implementa&ccedil;&atilde;o de AWT baseada em JNI usando
usando pares peso leve ("lightweight"). O trabalho est&aacute; atualmente
em andamento para implementar usando GTK.</dd>
</dl>
</dl>

<hr>
<h3>
<a NAME="2_5"></a>2.5 E sobre o suporte a Swing?</h3>

<dl>
<dl>
<dt>
Considerando que o suporte ao AWT ainda n&atilde;o est&aacute; pronto,
n&atilde;o h&aacute; chance conseguir com que que Swing rode. Uma vez que
tenhamos suporte ao AWT, o Swing 1.1.1 dever&aacute; ser us&aacute;vel
e mesmo redistribu&iacute;vel, mas JFC ser&aacute; outro assunto, como
<a href="mailto:moroz@@metahood.ru">Oleg
Moroz</a> resume:</dt>

<blockquote>1) Swing 1.1.1 para JDK 1.1.x com licen&ccedil;a que permita
redistribuir como parte da applet ou aplica&ccedil;&atilde;o de valor adicionado.
Isto precisa de alguma pesquisa, entretanto acredito que o termo "aplica&ccedil;&atilde;o
de valor adicionado" pode incluir por exemplo o sistema de desenvolvimento
baseado em gcj;&nbsp; se n&atilde;o por si s&oacute;, uma aplica&ccedil;&atilde;o
simples baseada no Swing pode ser adicionada &agrave; aplica&ccedil;&atilde;o.
Esta vers&atilde;o depende do AWT 1.1 apenas (bem, 1.1.x, x >= 7) e parece
que a vers&atilde;o da Sun poderia ser usada para a maioria dos pr&oacute;positos
que as pessoas gostariam.</blockquote>

<blockquote>2) Swing (JFC) que &eacute; parte do Java2. Este n&atilde;o
&eacute;, at&eacute; onde eu sei,&nbsp; dispon&iacute;vel como um produto
separado e &eacute; protegido por uma licen&ccedil;a mais restritiva&nbsp;
(neste caso pelo menos) que a do JDK ; ele tamb&eacute;m &eacute; dependente
das caracter&iacute;sticas do AWT 1.2.&nbsp; N&oacute;s gostar&iacute;amos
de desenvolver um substituto apenas quando nos movermos para a base de
c&oacute;digo ("codebase") 1.2 e ent&atilde;o&nbsp; precisaremos tamb&eacute;m
desenvolver um substituto AWT 1.2 sem considerar o Swing.</blockquote>
</dl>

<dl>
<dt>
<a href="mailto:per@@bothner.com">Per Bothner</a> acrescenta:</dt>

<dd>
&nbsp;</dd>

<dd>
Uma possibilidade que vale a pena ser considerada &eacute; desenvolver
componentes Swing em conjun&ccedil;&atilde;o com AWT. Podemos implementar&nbsp;
JTextArea e TextArea ao mesmo tempo. N&oacute;s poder&iacute;amos implementar
ambos no topo de (digamos) alguma <i>widget </i>GTK; n&atilde;o necessariamente
*ter&iacute;amos* que ir pela rota <i>"peerless"</i>. Ao inv&eacute;s,
podemos tomar como base o "<i>plugable</i> <i>look-and-feel</i>" na&nbsp;
"<i>themebility</i>" do (digamos) GTK.&nbsp;</dd>

<dt>
&nbsp;</dt>

<dd>
A maior consequ&ecirc;ncia potencial &eacute; a separa&ccedil;&atilde;o
do Swing entre "modelo" (por exemplo, Document) e "vis&atilde;o" (por exemplo,
JTextPane). Pode ser dif&iacute;cil fazer uso da funcionalidade de um conjunto
de ferramentas existente como o GTK a menos que possamos usar
<i>widgets
</i>GTK
com "modelos" separados de objetos.</dd>
</dl>

<hr></dl>

<h3>
<a NAME="2_6"></a>2.6 Que suporte existe para RMI?</h3>

<dl>
<dd>
N&atilde;o h&aacute; suporte para RMI no momento.<a href="mailto:mdw@@cs.berkeley.edu">Matt
Welsh</a> elabora:</dd>

<dl>
<dd>
Eu estava trabalhando nisto, mas est&aacute; voltando ao forno agora. Ent&atilde;o,
se algu&eacute;m pudesse me ajudar eu apreciaria. Tenho uma implementa&ccedil;&atilde;o
gr&aacute;tis
de RMI ("NinjaRMI") que &eacute; muito parecida com o RMI da Sun. Voc&ecirc;
pode baix&aacute;-la de <a href="http://www.cs.berkeley.edu/%7Emdw/proj/ninja">http://www.cs.berkeley.edu/~mdw/proj/ninja</a></dd>
</dl>

<dd>
</dd>
</dl>

<blockquote>
<blockquote>Note que&nbsp; N&Atilde;O &eacute; Java RMI por si mesmo; &eacute;
apenas muito similar em funcionalidade e&nbsp; projeto. Voc&ecirc; pode
retirar algumas classes para obter suporte a RMI na libgcj. Entretanto,
a implementa&ccedil;&atilde;o requer algumas classes em java.* e sun.*
que n&atilde;o s&atilde;o parte da libgcj.</blockquote>
&Eacute; poss&iacute;vel usar a <a href="http://wwwipd.ira.uka.de/%7Ehauma/EfficientRMI/">implementa&ccedil;&atilde;o
RMI </a>de JavaParty , mas a licen&ccedil;a &eacute; muito mais restritiva
que aquela da NinjaRMI. Detalhes abaixo:
<blockquote>O muito mais r&aacute;pido e informal RMI e a apropriada eficiente
serializa&ccedil;&atilde;o&nbsp; &eacute; projetada e implementada completamente
em Java sem qualquer c&oacute;digo nativo. Al&eacute;m disso, o reprojetado
RMI suporta redes de comunica&ccedil;&atilde;o n&atilde;o-TCP/IP, mesmo
com protocolos de transporte heterog&ecirc;neos. Como subproduto, h&aacute;
uma cole&ccedil;&atilde;o de <i>benchmarks</i> para RMI.</blockquote>
</blockquote>

<dl>
<dt>
&nbsp;</dt>

<br>
<hr></dl>

<dl>
<h3>
<a NAME="2_7"></a>2.7 Posso usar qualquer c&oacute;digo de outros projetos
OpenSource para suplementar as caracter&iacute;sticas atuais da libgcj?</h3>

<dd>
<font color="#FF6600">Algu&eacute;m pode apontar-me algumas palavras definitivas
sobre esse assunto?</font></dd>
</dl>

<blockquote>
<blockquote>&nbsp;</blockquote>
</blockquote>

<dl>
<hr></dl>

<dl>
<h3>
<a NAME="2_8"></a>2.8 Quais caracter&iacute;sticas da linguagem Java s&atilde;o/n&atilde;o
s&atilde;o suportadas?</h3>

<dd>
No momento GCJ suporta todas as constru&ccedil;&otilde;es da linguagem
Java conforme a <a href="http://java.sun.com/docs/books/jls/">Java Language
Specification v1.0</a>. O&nbsp; JDK 1.1 adicionou suporte para <i>Inner
Classes</i>, que n&atilde;o s&atilde;o ainda suportadas ao compilar c&oacute;digo
fonte, mas podem ser usadas na compila&ccedil;&atilde;o de bytecodes. Veja
<i>4.2 GCJ pode manipular apenas c&oacute;digo fonte?</i>&nbsp;</dd>
</dl>

<dl>&nbsp;</dl>

<table BORDER=0 CELLPADDING=4 WIDTH="95%" >
<tr BGCOLOR="#B0D0FF">
<th ALIGN=LEFT>
<h2>
<a NAME="3_0"></a>T&oacute;picos de Constru&ccedil;&atilde;o</h2>
</th>
</tr>
</table>

<dl>
<h3>
<a NAME="3_1"></a>3.1 Preciso de algo mais recente que o &uacute;ltimo
lan&ccedil;amento;&nbsp; Como devo construir?</h3>

<dd>
Por favor, leia <a href="http://sources.redhat.com/java/build-snapshot.html">aqui</a>.&nbsp;</dd>

<br>&nbsp;
<p>&nbsp;
<br>&nbsp;
<br>&nbsp;</dl>

<dl>
<h3>
<a NAME="3_2"></a>3.2 Bug de v&iacute;nculo no Solaris</h3>

<dd>
H&aacute; um problema conhecido com o&nbsp;<a href="http://gcc.gnu.org/ml/gcc-bugs/1999-10/msg00159.html">
<i>linkador</i> nativo do Solaris</a> ao usar gcc/gcj. Uma boa indica&ccedil;&atilde;o
de que voc&ecirc; se deparou com este problema &eacute; ter recebido um
erro que parece com o seguinte durante a constru&ccedil;&atilde;o do libgcj:&nbsp;</dd>

<pre>ld: warning: option -o appears more than once, first setting taken
ld: fatal: file libfoo.so: cannot open file: No such file or directory
ld: fatal: File processing errors. No output written to .libs/libfoo.so
collect2: ld returned 1 exit status
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>

<dl>Um contorno conhecido para este e outros problemas de v&iacute;nculo
relatados nos v&aacute;rios lan&ccedil;amentos do Solaris &eacute; construir
gcc/gcj com o <a href="ftp://sources.redhat.com/pub/binutils/snapshots">mais
recente GNU binutils</a> ao inv&eacute;s do <tt>ld </tt>nativodo Solaris
. A maneria mais direta de fazer isso &eacute; construir e instalar&nbsp;
binutils, e ent&atilde;o referenci&aacute;-lo no&nbsp; configure para&nbsp;
gcc via <tt>--with-ld=/path_to_binutils_install/bin/ld</tt> (<tt>--with-as</tt>
pode ser similarmente especificado mas n&atilde;o acredita-se que seja
requerido).&nbsp;
<p>Por favor, note que&nbsp; gcc/gcj deve ter sido constru&iacute;do usando
GNU ld antes de fazer&nbsp; uma constru&ccedil;&atilde;o limpa do libgcj!&nbsp;</dl>

<br>&nbsp;</dl>

<table BORDER=0 CELLPADDING=4 WIDTH="95%" >
<tr BGCOLOR="#B0D0FF">
<th ALIGN=LEFT>
<h2>
<a NAME="4_0"></a>Gcj - Quest&otilde;es sobre Compila&ccedil;&atilde;o/V&iacute;nculo&nbsp;</h2>
</th>
</tr>
</table>

<dl>
<dt>
&nbsp;</dt>

<h3>
<a NAME="4_1"></a>4.1 Por que eu recebo erros de <tt>undefined reference
to `main'</tt>?</h3>
</dl>

<dl>
<dd>
Quando usar gcj para <i>linkar </i>um programa Java, voc&ecirc; deve usar
a op&ccedil;&atilde;o&nbsp; <tt>--main=</tt> para indicar a classe que
tem o m&eacute;todo&nbsp; <tt>main</tt> desejado. Isto porque cada classe
Java pode ter um m&eacute;todo <tt>main</tt>, assim voc&ecirc; tem que
dizer ao gcj qual deles usar.</dd>

<dt>
&nbsp;</dt>

<br>
<hr></dl>

<dl>
<dt>
&nbsp;</dt>

<h3>
<a NAME="4_2"></a>4.2 GCJ pode manipular apenas c&oacute;digo fonte?</h3>
</dl>

<dl>
<dl>O GCJ ir&aacute; compilar ambos, arquivos fonte java e .class, bytecodes.
No momento, a compila&ccedil;&atilde;o de bytecodes ir&aacute; abranger
mais aplica&ccedil;&otilde;es que a compila&ccedil;&atilde;o de fonte,
j&aacute; que falta ao compilador de c&oacute;digo fonte suporte para "inner
classes"<i>,&nbsp; </i>que s&atilde;o&nbsp; usadas pesadamente&nbsp; em
programas escritos para o JDK 1.1 (AWT em particular).</dl>

<br>&nbsp;
<dl>Em muitos casos o c&oacute;digo nativo produzido pela compila&ccedil;&atilde;o
de c&oacute;digo fonte &eacute; mais otimizado que o compilado de arquivos
.class.&nbsp; Per Bothner explica:
<dl>A raz&atilde;o &eacute; que quando compila para bytecode voc&ecirc;
perde bastante informa&ccedil;&atilde;o sobre a estrutura do programa e
etc.&nbsp; Essa informa&ccedil;&atilde;o ajuda na gera&ccedil;&atilde;o
de melhor c&oacute;digo. N&oacute;s podemos em teoria recuperar a informa&ccedil;&atilde;o
que n&oacute;s necessitamos analisando a estrutura dos bytecodes, mas isso
&eacute; dif&iacute;cil algumas vezes - ou algumas vezes simplesmente ningu&eacute;m
tratou disso.</dl>
</dl>

<dl>&nbsp;
<p>Exemplos espec&iacute;ficos incluem estrutura de la&ccedil;o (gcc gera
melhor c&oacute;digo com la&ccedil;os explicitos que com o equivalente
c&oacute;digo espaguete),&nbsp; inicializadores de array, e a sintaxe JDK
1.1 'CLASS.class', que s&atilde;o todos representados usando constru&ccedil;&otilde;es
de mais baixo n&iacute;vel em bytecode.
<br>&nbsp;
<br>&nbsp;
<br>&nbsp;
<br>&nbsp;
<br>&nbsp;
<dt>
&nbsp;</dt>
</dl>

<hr>
<dt>
&nbsp;</dt>

<h3>
<a NAME="4_3"></a>4.3 "gcj -C" n&atilde;o parece estar funcionando como&nbsp;
javac/jikes. O que acontece?&nbsp;</h3>

<blockquote>O comportamento do "gcj-C"&nbsp; n&atilde;o &eacute; de todo
como javac ou jikes, que ir&atilde;o compilar (n&atilde;o apenas varrer)
todos os .java que est&atilde;o desatualizados com respeito aos seus .class.</blockquote>
</dl>

<dl>
<dt>
&nbsp;</dt>
</dl>

<dl>
<h3>
<a NAME="4_4"></a>4.4 Onde o GCJ procura pelos arquivos?&nbsp;</h3>

<blockquote>GCJ procura pelos arquivos a ser compilados baseado na vari&aacute;vel
de ambiente CLASSPATH. Presentemente uma limita&ccedil;&atilde;o importante
&eacute; que gcj n&atilde;o manipula arquivos jar no seu classpath.</blockquote>
</dl>

<hr>
<dl>
<dt>
&nbsp;</dt>
</dl>

<dl>
<h3>
<a NAME="4_5"></a>4.5 Como gcj decide se compila arquivos .class ou .java?</h3>

<blockquote>GCJ parece favorecer arquivos .class no CLASSPATH, se houver
algum,&nbsp; caso contr&aacute;rio usar&aacute; o fonte (.java), tamb&eacute;m
no CLASSPATH. Ele tamb&eacute;m checa se a classe &eacute; mais nova que
o arquivo .java. Se ele n&atilde;o consegue encontrar algum deles, ele
lan&ccedil;a um erro.</blockquote>
</dl>

<dl>
<dt>
&nbsp;</dt>
</dl>

<dl>
<h3>
<a NAME="4_6"></a>4.6 Estou recebendo erros de v&iacute;nculo</h3>

<blockquote>Se voc&ecirc; recebe erros no tempo de v&iacute;nculo que se
relacionam a 'undefined reference to `java::lang::Object type_info function',
verifique que voc&ecirc; compilou qualquer arquivo CNI C++ com a op&ccedil;&atilde;o&nbsp;
-fno_rtti .&nbsp;</blockquote>
</dl>

<dl>
<dt>
&nbsp;</dt>
</dl>

<dl>&nbsp;</dl>

<table BORDER=0 CELLPADDING=4 WIDTH="95%" >
<tr BGCOLOR="#B0D0FF">
<th ALIGN=LEFT>
<h2>
<a NAME="5_0"></a>Quest&otilde;es de tempo de execu&ccedil;&atilde;o ("Runtime")</h2>
</th>
</tr>
</table>

<dl>
<h3>
<a NAME="5_1"></a>5.1 Est&aacute; acontecendo "<i>dumping core" </i>com
meu programa! O que est&aacute; havendo?</h3>

<dd>
Podem ser v&aacute;rias coisas. Um erro comum &eacute; ter sua vari&aacute;vel
de ambiente CLASSPATH apontando para java.lang (e amigos) de terceiros.&nbsp;
Ou remova o conte&uacute;do do CLASSPATH, ou tenha certeza de que ele n&atilde;o
se refere &agrave; outras bibliotecas b&aacute;sicas, sen&atilde;o &agrave;quelas
encontradas em libgcj.zip.</dd>

<br>&nbsp;
<dl>Um outro sintoma coberto por este reparo &eacute; obter, ao rodar um
programa tipo "Hello World", um monte de lixo, caracteres ASCII n&atilde;o
imprim&iacute;veis, antes e/ou depois da sa&iacute;da. YMMW (Your Mileage
May Vary).&nbsp;</dl>

<dd>
</dd>
</dl>

<dl>
<dt>

<hr></dt>

<h3>
<a NAME="5_2"></a>5.2 Quando rodo o depurador eu recebo um SEGV no GC!&nbsp;
O que acontece?</h3>
</dl>

<dl>
<dd>
Isso &eacute; "normal"; O <i>Garbage Collector (</i>GC/Coletor de Lixo)
usa-o para determinar os limites da pilha. Ele &eacute; comumente pego
e manipulado pelo GC -- voc&ecirc; pode ver isso no depurador usando <tt>cont
</tt>para continuar para o&nbsp; segv "real".</dd>

<br>&nbsp;
<dl>Isto n&atilde;o deveria acontecer mais, a medida que n&oacute;s n&atilde;o
definimos MPROTECT_VDB no GC, pelo menos para Linux/386.</dl>

<dt>
&nbsp;</dt>
</dl>

<dl>
<dt>

<hr></dt>

<h3>
<a NAME="5_3"></a>5.3 Eu h&aacute; pouco compilei minha aplica&ccedil;&atilde;o
Java e fiz um <i>benchmark </i>e ela parece rodar mais devagar que o JIT
JVM XXX. H&aacute; algo que eu possa fazer para torn&aacute;-la mais r&aacute;pida?&nbsp;</h3>
</dl>

<dl>
<dd>
Algumas coisas:&nbsp;</dd>

<ul>
<li>
Se seus programas alocam muitos objetos pequenos, de vida curta, a <i>heap
</i>poderia
estar cheia e ativando o GC muito frequentemente. Experimente aumentar
os tamanhos inicial e m&aacute;ximo da <i>heap</i>&nbsp; como indicado
em <i>5.5 Como aumento os tamanhos inicial e m&aacute;ximo da heap de tempo
de execu&ccedil;&atilde;o?</i>&nbsp;</li>

<li>
RE - acessos de array. N&oacute;s temos checagem de c&oacute;digo de tempo
de execu&ccedil;&atilde;o sub-&oacute;timos, e o compilador ainda n&atilde;o
&eacute; t&atilde;o esperto a respeito da remo&ccedil;&atilde;o autom&aacute;tica
de checagem de array.&nbsp; Se seu c&oacute;digo est&aacute; pronto e n&atilde;o
cai dentro dessa situa&ccedil;&atilde;o, tente compilar com&nbsp; --no-bounds-check.&nbsp;</li>

<li>
Tente <i>linkagem</i> est&aacute;tica. A intera&ccedil;&atilde;o com boehm-gc
parece incorrer em <i>overhead&nbsp;</i> extra quando bibliotecas compartilhadas
s&atilde;o usadas. Em um programa que faz uso pesado do alocador eu consegui
mais de 30% em ganho de perfonmance com <i>linkagem </i>est&aacute;tica.
Essa quest&atilde;o deve desaparecer em breve com uma nova vers&atilde;o
do GC.</li>

<li>
Se sua aplica&ccedil;&atilde;o Java n&atilde;o necessita de linhas de execu&ccedil;&atilde;o
(<i>threads</i>), experimente construir libgcj usando&nbsp; --enable-threads=none.
Por&ccedil;&otilde;es do <i>runtime </i>do libgcj s&atilde;o ainda mais
eficientes quando trabalha com uma &uacute;nica linha de execu&ccedil;&atilde;o.</li>
</ul>
</dl>

<dl>
<dd>
&nbsp;</dd>
</dl>

<dl>
<hr>
<dt>
&nbsp;</dt>

<h3>
<a NAME="5_4"></a>5.4 Posso tra&ccedil;ar a Coleta de Lixo?</h3>

<dd>
&Eacute;&nbsp; poss&iacute;vel ativar a sa&iacute;da verbosa do GC suprimindo
a bandeira -DSILENT durante a constru&ccedil;&atilde;o. Uma maneira de
fazer isto &eacute; comentar a linha com #define SILENT 1 do boehm-gc/configure
antes de configurar o&nbsp; libgcj.&nbsp;</dd>

<dt>
&nbsp;</dt>

<dd>
O GC ir&aacute; mostrar uma cole&ccedil;&atilde;o de estat&iacute;sticas
na sa&iacute;da padr&atilde;o.&nbsp; (Reconstruir boehm-gc sozinho sem
esta bandeira parece n&atilde;o funcionar.)</dd>

<dt>
&nbsp;</dt>

<br>
<hr>
<dt>
&nbsp;</dt>

<h3>
<a NAME="5_5"></a>5.5 Como aumento os tamanhos de <i>runtime</i> iniciais
e m&aacute;ximo da <i>heap</i>?</h3>

<dd>
Alguns programas que alocam muitos objetos pequenos de curta dura&ccedil;&atilde;o
podem provocar o r&aacute;pido enchimento da <i>heap </i>de tamanho padr&atilde;o,
ativando GC frequentemente.&nbsp; Com o lan&ccedil;amento 2.95.1 n&atilde;o
h&aacute; meios de ajustar a <i>heap </i>em tempo de execu&ccedil;&atilde;o.
<i>snapshots</i> recentes fornecem os argumentos -ms and -mx para o gij&nbsp;
para especificar os tamanhos inicial e m&aacute;ximo da <i>heap</i>, respectivamente.</dd>
</dl>

<hr>
<dl>
<h3>
<a NAME="5_6"></a>5.6 Como posso tra&ccedil;ar minha aplica&ccedil;&atilde;o?</h3>

<dd>
O suporte para isto est&aacute; atrasado. Apenas c&oacute;digo Java de
uma &uacute;nica linha de execu&ccedil;&atilde;o (<i>thread</i>)&nbsp;
pode ser usado pelo tra&ccedil;ador (gprof). <i>Threads</i> POSIX parecem
ser incompat&iacute;veis com o material gmon.</dd>
</dl>

<table BORDER=0 WIDTH="100%" >
<tr ALIGN=LEFT BGCOLOR="#B0D0FF">
<th>
<h2>
<a NAME="6_0"></a>T&oacute;picos de Programa&ccedil;&atilde;o</h2>
</th>
</tr>
</table>

<h3>
<a NAME="6_1"></a>6.1 H&aacute; exemplos de como usar CNI?</h3>

<blockquote>Glenn Chambers criou alguns exemplos triviais <a href="cni-1.txt">aqui</a>
e <a href="cni-2.txt">aqui</a>. Para
efeito de&nbsp; compara&ccedil;&atilde;o, <a href="jni-kaffe.txt">aqui</a>
est&aacute; o mesmo exemplo como uma aplica&ccedil;&atilde;o JNI.
<p>Note que voc&ecirc; deve compilar os arquivos C++ usados pelo CNI com
a op&ccedil;&atilde;o -fno-rtti.&nbsp;
<p>A fonte de informa&ccedil;&atilde;o prim&aacute;ria sobre CNI est&aacute;
em <a href="papers/cni/t1.html">http://sources.redhat.com/java/papers/cni/t1.html</a></blockquote>
</td>
</tr>

<tr>
<td></td>

<td></td>

<td></td>

<td></td>
</tr>
</table>

<hr>
<address>
<a href="about.html">The GCJ team</a></address>

<br><font size=-1>$Id: faq.html,v 1.11 2000/02/09 01:03:58 apbianco Exp
$</font>
<center>
<h2>
&nbsp;</h2></center>

</body>
</html>
@


1.6
log
@sourceware.cygnus.com->sources.redhat.com
@
text
@d30 1
@


1.5
log
@2000-06-27  Alexandre Petit-Bianco  <apbianco@@cygnus.com>

        * done.html: New file.
        * about.html: Added link to the `Done with Gcj' page.
        * contrib.html: Likewise.
        * docs.html: Likewise.
        * download.html: Likewise.
        * faq-portugese.html: Likewise.
        * faq.html: Likewise.
        * index.html: Likewise. Added new `GCJ News' item.
        * mail.html: Added link to the `Done with Gcj' page.
        * projects.html: Likewise.
        * support.html: Likewise.
        * thanks.html: Likewise.
        * tm.html: Likewise.

(Add a `Done with gcj' section.)
@
text
@d25 6
a30 6
<td><a href="http://sourceware.cygnus.com/java/index.html">Home</a>
<br><a href="http://sourceware.cygnus.com/java/faq.html">FAQ</a>
<br><a href="http://sourceware.cygnus.com/java/mail.html">Mailing Lists</a>
<br><a href="http://sourceware.cygnus.com/java/docs.html">Documentation</a>
<br><a href="http://sourceware.cygnus.com/java/download.html">Download</a>
<br><a href="http://sourceware.cygnus.com/java/contrib.html">Contributing</a>
d32 2
a33 2
<br><a href="http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?user=guest&password=guest&database=java&cmd=login">Bugs</a>
<br><a href="http://sourceware.cygnus.com/java/thanks.html">Thanks</a>
d37 2
a38 2
<br><a href="http://sourceware.cygnus.com/mauve">The Mauve Project</a>
<br><a href="http://sourceware.cygnus.com">Sourceware</a>
d57 1
a57 1
em <a href="http://sourceware.cygnus.com/java/faq.html">http://sourceware.cygnus.com/java/faq.html</a></p>
d152 1
a152 1
<a href="http://sourceware.cygnus.com/java/faq.html#5_0">Quest&otilde;es
d212 1
a212 1
libgcj tem um&nbsp; <a href="http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?user=guest&password=guest&database=java&cmd=login">banco
d227 1
a227 1
sign copyright over to the Free Software Foundation." Veja a&nbsp; p&aacute;gina de <a href="http://sourceware.cygnus.com/java/contrib.html">contribui&ccedil;&otilde;es</a>
d264 1
a264 1
do gdb&nbsp; <a href="ftp://sourceware.cygnus.com/pub/gdb/snapshots/">ftp://sourceware.cygnus.com/pub/gdb/snapshots/</a>
d620 1
a620 1
Por favor, leia <a href="http://sourceware.cygnus.com/java/build-snapshot.html">aqui</a>.&nbsp;</dd>
d645 1
a645 1
gcc/gcj com o <a href="ftp://sourceware.cygnus.com/pub/binutils/snapshots">mais
d974 3
a976 3
<blockquote>Glenn Chambers criou alguns exemplos triviais <a href="http://sourceware.cygnus.com/java/cni-1.txt">aqui</a>
e <a href="http://sourceware.cygnus.com/java/cni-2.txt">aqui</a>. Para
efeito de&nbsp; compara&ccedil;&atilde;o, <a href="http://sourceware.cygnus.com/java/jni-kaffe.txt">aqui</a>
d981 1
a981 1
em <a href="http://sourceware.cygnus.com/java/papers/cni/t1.html">http://sourceware.cygnus.com/java/papers/cni/t1.html</a></blockquote>
d998 1
a998 1
<a href="http://sourceware.cygnus.com/java/about.html">The GCJ team</a></address>
@


1.4
log
@Mention Red Hat.  Add projects page.
@
text
@d31 1
@


1.3
log
@	* Many files: Updated gcc URL.
@
text
@d39 1
a39 1
<br><a href="http://www.cygnus.com">Cygnus Solutions</a></td>
d226 1
a226 1
sign copyright over to Cygnus." Veja a&nbsp; p&aacute;gina de <a href="http://sourceware.cygnus.com/java/contrib.html">contribui&ccedil;&otilde;es</a>
@


1.2
log
@minor tweaks
@
text
@d35 1
a35 1
<p><a href="http://egcs.cygnus.com">GCC</a>
d224 1
a224 1
seguintes <a href="http://egcs.cygnus.com/contribute.html">Diretrizes GCC
d631 1
a631 1
H&aacute; um problema conhecido com o&nbsp;<a href="http://egcs.cygnus.com/ml/gcc-bugs/1999-10/msg00159.html">
@


1.1
log
@	* index.html: Link to the new faq.
	* faq-portugese.html: New file, from ivanfg@@bigfoot.com.
@
text
@d8 1
a9 2
<map name="topbar"><area shape="rect" coords="0,0,47,78" href="http://www.redhat.com/"><area shape="rect" coords="63,30,523,78" href="http://sourceware.cygnus.com/"></map>
<center><a NAME="top"></a><img SRC="file:////XTAL1/ivanfg/topbar-standalone.gif" ALT="" BORDER=0 usemap="#topbar" height=93 width=616></center>
d16 1
a16 1
<td><img SRC="file:////XTAL1/ivanfg/gcj.jpg" ALT="gcj logo" height=98 width=136></td>
d56 2
a57 1
em <a href="http://sourceware.cygnus.com/java/faq.html">http://sourceware.cygnus.com/java/faq.html</a>
@

