PATCH: remove htdocs/java/faq-portugese.html
Gerald Pfeifer
pfeifer@dbai.tuwien.ac.at
Wed Apr 30 12:30:00 GMT 2003
On Sun, 6 Apr 2003, Gerald Pfeifer wrote:
>> Approval, assuming you've made an attempt to contact the original
>> author or most recent active maintainer. We should warn them
>> before removing it, and give them a last chance to update it.
> I have contacted the original submitter (ivanfg@bigfoot.com) and will
> wait a couple of days.
He responded quickly and asked me to wait one or two weeks; now we've
waited three and given this, the fact that he hadn't updated it for years
(which cost many of us time), your response and explicit approval by Tom
as well, I'm installing the following:
2003-04-30 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* faq-portugese.html: Remove.
* faq.html: Remove link to faq-portugese.html.
Gerald
Index: faq-portugese.html
===================================================================
RCS file: faq-portugese.html
diff -N faq-portugese.html
--- faq-portugese.html 31 Oct 2002 14:47:43 -0000 1.18
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,948 +0,0 @@
-<html>
-
-<head>
- <title>The GCJ FAQ</title>
-</head>
-
-<body>
-
-
-<h1>O FAQ GCJ</h1>
-A última versão deste documento sempre está disponível
-em <a href="http://gcc.gnu.org/java/faq-portugese.html">http://gcc.gnu.org/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ões Gerais</a></li>
-
-<ol>
-<li>
-<a href="#1_1">Que licença é usada para o libgcj?</a></li>
-
-<li>
-<a href="#1_2">Como faç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ão é parte do GCC?</a></li>
-
-<li>
-<a href="#1_5">gcj e libgcj irão funcionar na minha máquina?</a></li>
-
-<li>
-<a href="#1_6">Como faço para depurar meu programa Java?</a></li>
-</ol>
-
-<li>
-<a href="#2_0">Suporte a Características Java</a> </li>
-
-<ol>
-<li>
-<a href="#2_1">Quais APIs do Java são suportadas? Quão completo
-é o suporte? </a></li>
-
-<li>
-<a href="#2_2">GCJ suporta o uso direto de métodos nativos C à
-la JNI? CNI parece um tanto quanto difícil de usar.</a></li>
-
-<li>
-<a href="#2_3">Por que GCJ usa CNI?</a></li>
-
-<li>
-<a href="#2_4">Qual é 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ódigo de outros projetos OpenSource
-para suplementar as características atuais do libgcj?</a></li>
-
-<li>
-<a href="#2_8">Quais características da linguagem Java são/não
-são suportadas?</a></li>
-</ol>
-
-<li>
-<a href="#3_0">Questões de Construção </a> </li>
-
-<ol>
-<li>
-<a href="#3_1">Preciso de algo mais recente que o último lançamento;
-Como devo construí-lo?</a></li>
-
-<li>
-<a href="#3_2">Bug do <i>linkador</i> no Solaris</a> </li>
-</ol>
-
-<li>
-<a href="#4_0">GCJ: Questões de Compilação/Vínculo</a><i> </i></li>
-
-<ol>
-<li>
-<a href="#4_1">Por que recebo erros de <tt>undefined reference to
-`main'</tt>?</a> </li>
-
-<li>
-<a href="#4_2">GCJ pode manipular apenas código fonte?</a></li>
-
-<li>
-<a href="#4_3">"gcj -C" não parece funcionar como javac/jikes. O
-que acontece? </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ínculo!</a> </li>
-</ol>
-
-<li>
-<a href="faq.html#5_0">Questões
-de <i>Runtime</i> (tempo de execução)</a></li>
-
-<ol>
-<li>
-<a href="#5_1">Está ocorrendo "<i>core dumping"</i> com meu programa!
-O que acontece?</a> </li>
-
-<li>
-<a href="#5_2">Quando eu rodo o depurador obtenho um SEGV no GC!
-O que acontece?</a></li>
-
-<li>
-<a href="#5_3">Há pouco compilei e fiz o <i>benchmark</i> de minha
-aplicação Java e ela parece estar rodando mais lento do que
-XXX JIT JVM. Há algo que eu possa fazer para fazê-la rodar
-mais rápido?</a></li>
-
-<li>
-<a href="#5_4">Posso traçar a Coleta de Lixo ("Garbage Collection")? </a></li>
-
-<li>
-<a href="#5_5">Como posso aumentar os tamanhos máximo e inicial
-da <i>heap</i>?</a></li>
-
-<li>
-<a href="#5_6">Posso traçar minha aplicação?</a> </li>
-</ol>
-<a href="#6_0">Tópicos de Programação </a>
-<ol>
-<li>
-<a href="#6_1">Há 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ões Gerais</h2>
-</th>
-</tr>
-</table>
-
-<dl>
-<h3>
-<a NAME="1_1"></a>1.1 Que licença é usada para o libgcj?</h3>
-
-<dd>
-libgcj é distribuído sob a licença GPL.</dd>
-
-<dt>
-
-<hr></dt>
-
-<h3>
-<a NAME="1_2"></a>1.2 Como faço para relatar um bug no libgcj?</h3>
-
-<dl>
-<dt>
-libgcj tem um <a href="http://gcc.gnu.org/cgi-bin/gnatsweb.pl?user=guest&password=gcc&database=java&cmd=login">banco
-de dados de bugs, Gnats,</a> correspondente que você pode folhear.
-Você também pode submeter um novo bug a partir da página
-do Gnats.
-<hr></dt>
-</dl>
-
-<h3>
-<a NAME="1_3"></a>1.3 Como posso contribuir com o libgcj?</h3>
-
-<dl>
-<dt>
-Você pode enviar reparos simples como remendos. Por favor, siga as
-seguintes <a href="http://gcc.gnu.org/contribute.html">Diretrizes GCC
-para submissão de remendos</a>. "For more complex changes, you must
-sign copyright over to the Free Software Foundation." Veja a página de <a href="contrib.html">contribuições</a>
-para detalhes.
-<hr></dt>
-</dl>
-
-<h3>
-<a NAME="1_4"></a>1.4 Por que o libgcj não é parte do GCC?</h3>
-
-<dd>
-Por várias razões menores. É prová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ão funcionar na minha máquina?</h3>
-
-<dd>
-É sabido que gcj e 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ós não sabemos. Genericamente falando,
-a conversão para um novo sistema não deveria ser difícil.
-Poderia ser uma boa idéia para um voluntário.</dd>
-
-<dt>
-
-<hr></dt>
-
-<h3>
-<a NAME="1_6"></a>1.6 Como posso depurar meu programa Java?</h3>
-
-<dd>
-GDB inclui
-suporte para depuração de programas Java compilados com gcj.
-Para Linux, você precisará usar uma versão recente
-do gdb <a href="ftp://sources.redhat.com/pub/gdb/snapshots/">ftp://sources.redhat.com/pub/gdb/snapshots/</a>
-porque o padrão 4.18 não tem suporte para linhas de
-execução (<i>threads) </i> Linux.</dd>
-
-<dt>
- </dt>
-</dl>
-
-<table BORDER=0 CELLPADDING=4 WIDTH="95%" >
-<tr BGCOLOR="#B0D0FF">
-<th ALIGN=LEFT>
-<h2>
-<a NAME="2_0"></a>Suporte a Características Java</h2>
-</th>
-</tr>
-</table>
-
-<dl>
-<dd>
- </dd>
-</dl>
-
-<h3>
-<a NAME="2_1"></a>2.1 Quais APIs do Java são suportadas? Quão
-completo é o suporte?</h3>
-
-<dl>
-<dd>
-<a href="mailto:mdw@cs.berkeley.edu">Matt Welsh</a> escreve:</dd>
-
-<dl>
-<dd>
-Simplesmente olhe no diretório 'libjava' do libgcj e veja quais
-classes estão lá. A maior parte das classes relacionadas
-a GUI não está lá ainda, é verdade, mas
-muitas das outras são fáceis de adicionar caso ainda não
-existam.</dd>
-
-<dt>
- </dt>
-
-<dd>
-Eu acho que é importante salientar que há uma grande diferenç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 JVM: você necessitará do conjunto completo de bibliotecas
-JDK. Considerando que novas APIs Java surgem toda semana, está ficando
-impossível rastrear tudo.</dd>
-
-<dt>
- </dt>
-
-<dd>
-Para fazer as coisas ainda piores, você não pode simplesmente
-rodar as classes JDK da Sun em qualquer velha JVM -- elas assumem que uma
-penca de métodos nativos estão definidos também .</dd>
-
-<dl>
-<dt>
-Desde que essa necessidade de método nativo não está
-definida pela especificação JDK, você está efetivamente
-limitado a usar a JVM da Sun se quiser usar as bibliotecas JDK da Sun.
-Oh sim -- você também poderia reimplementar todos esses
-métodos nativos, certificando-se de que eles se comportam exatamente
-como aqueles feitos pela Sun. Note que eles não tem documentação. </dt>
-</dl>
-</dl>
-</dl>
-
-<hr>
-<h3>
-<a NAME="2_2"></a>2.2 GCJ suporta o uso direto de métodos nativos
-C à la JNI? CNI parece um tanto quanto difícil de usar.</h3>
-
-<blockquote>Atualmente gcj nã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>
-<blockquote>(1) É uma meta que gcj deveria suportar tanto JNI quanto
-CNI. Fazer isso não é difícil em princípio,
-especialmente lidar com JNI- usando bibliotecas que são conhecidas
-no tempo de vínculo ("link") (desde que você pode simplesmente
-gerar funções CNI invólucras que chamam os métodos
-JNI correspondentes). Entretanto há ainda certo trabalho tedioso
-que precisa ser feito para JNI.</blockquote>
-</blockquote>
-
-<dl>
-<blockquote>
-<blockquote>(2) Nós preferimos CNI, a medida que é mais eficiente,
-mais fácil de escrever, e (pelo menos potencialmente) mais fácil
-de depurar.
-<p>(3) Você poderia em princípio escrever código C++
-que implementa ambas interfaces CNI e JNI usando a mágica do pré-processamento.
-A questão é se nós podemos fazê-lo de tal maneira
-que não fosse mais simples e limpo do que simplesmente manter
-duas cópias do código. Nós nã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>
-
-<blockquote><a href="mailto:per@bothner.com">Per Bothner</a> explica:</blockquote>
-
-<blockquote>
-<blockquote>Nós usamos CNI porque nós achamos que é
-a melhor solução, especialmente para uma implementação
-Java que é baseada na idéia de que Java é apenas outra
-linguagem de programação que pode ser implementada usando
-técnicas padrão de compilação. Dado isso, e
-a idéia que linguagens implementadas usando GCC deveriam ser compatíveis
-onde isso faz sentido, segue que a convenção de chamadas
-do Java deveria ser tão similar e tão prática quanto
-àquelas usadas por outras linguagens, especialmente C++; desde que
-nós podemos pensar em Java como um subconjunto de C++. CNI é
-apenas um conjunto de funções auxiliares e convenções
-construídas sobre a idéia de que Java e C++ tem a *mesma*
-convenção de chamadas e layout de objetos; seus binários
-são compatíveis. (Esta é uma simplificação,
-mas se aproxima o bastante.)</blockquote>
-</blockquote>
-
-<hr>
-<h3>
-<a NAME="2_4"></a>2.4 Qual é o estado do suporte ao AWT?</h3>
-
-<dl>
-<dd>
-Atualmente não há suporte para o AWT. Arte prévia
-que poderia ser usada para isto requer JNI. Possíveis pontos de
-partida são dados a seguir.</dd>
-
-<dl>
-<br>QtAWT
-<br>
-<dt>
-QtAWT( ) fornece uma implementaçã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ão implementadas
-numa mistura de código Java e código nativo, com os códigos
-nativos sendo chamados via JNI. Devido ao fato de que ele adere à
-APIs padrão tais como JNI, QtAWT deveria ser portá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és dos pares nativos fornecidos com sua JVM, ajustando
-a propriedade awt.toolkit para apontar para a implementação
-QtToolkit. </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>
- </dt>
-
-<dt>
-GTK AWT</dt>
-
-<dd>
-Alguns membros do projeto Mozilla / Blackdown estão fazendo algumas
-tentativas aqui (login grá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>
- </dt>
-
-<dd>
-O projeto Classpath está fazendo AWT com pares GTK ,
-e eles estão procurando por algué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>
- </dt>
-</dl>
-
-<dl>
-<dt>
-<a href="http://www.kaffe.org/">Kaffe</a> AWT</dt>
-
-<dd>
-Kaffe tem uma implementação de AWT baseada em JNI usando
-usando pares peso leve ("lightweight"). O trabalho está 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ão está pronto,
-não há chance conseguir com que que Swing rode. Uma vez que
-tenhamos suporte ao AWT, o Swing 1.1.1 deverá ser usável
-e mesmo redistribuível, mas JFC será 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ça que permita
-redistribuir como parte da applet ou aplicação de valor adicionado.
-Isto precisa de alguma pesquisa, entretanto acredito que o termo "aplicação
-de valor adicionado" pode incluir por exemplo o sistema de desenvolvimento
-baseado em gcj; se não por si só, uma aplicação
-simples baseada no Swing pode ser adicionada à aplicação.
-Esta versão depende do AWT 1.1 apenas (bem, 1.1.x, x >= 7) e parece
-que a versão da Sun poderia ser usada para a maioria dos própositos
-que as pessoas gostariam.</blockquote>
-
-<blockquote>2) Swing (JFC) que é parte do Java2. Este não
-é, até onde eu sei, disponível como um produto
-separado e é protegido por uma licença mais restritiva
-(neste caso pelo menos) que a do JDK ; ele também é dependente
-das características do AWT 1.2. Nós gostaríamos
-de desenvolver um substituto apenas quando nos movermos para a base de
-código ("codebase") 1.2 e então precisaremos també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>
- </dd>
-
-<dd>
-Uma possibilidade que vale a pena ser considerada é desenvolver
-componentes Swing em conjunção com AWT. Podemos implementar
-JTextArea e TextArea ao mesmo tempo. Nós poderíamos implementar
-ambos no topo de (digamos) alguma <i>widget </i>GTK; não necessariamente
-*teríamos* que ir pela rota <i>"peerless"</i>. Ao invés,
-podemos tomar como base o "<i>plugable</i> <i>look-and-feel</i>" na
-"<i>themebility</i>" do (digamos) GTK. </dd>
-
-<dt>
- </dt>
-
-<dd>
-A maior consequência potencial é a separação
-do Swing entre "modelo" (por exemplo, Document) e "visão" (por exemplo,
-JTextPane). Pode ser difí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ão há 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á voltando ao forno agora. Então,
-se alguém pudesse me ajudar eu apreciaria. Tenho uma implementação
-grátis
-de RMI ("NinjaRMI") que é muito parecida com o RMI da Sun. Você
-pode baixá-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 NÃO é Java RMI por si mesmo; é
-apenas muito similar em funcionalidade e projeto. Você pode
-retirar algumas classes para obter suporte a RMI na libgcj. Entretanto,
-a implementação requer algumas classes em java.* e sun.*
-que não são parte da libgcj.</blockquote>
-É possível usar a <a href="http://wwwipd.ira.uka.de/~hauma/KaRMI/">implementação
-RMI </a>de JavaParty , mas a licença é muito mais restritiva
-que aquela da NinjaRMI. Detalhes abaixo:
-<blockquote>O muito mais rápido e informal RMI e a apropriada eficiente
-serialização é projetada e implementada completamente
-em Java sem qualquer código nativo. Além disso, o reprojetado
-RMI suporta redes de comunicação não-TCP/IP, mesmo
-com protocolos de transporte heterogêneos. Como subproduto, há
-uma coleção de <i>benchmarks</i> para RMI.</blockquote>
-</blockquote>
-
-<dl>
-<dt>
- </dt>
-
-<br>
-<hr></dl>
-
-<dl>
-<h3>
-<a NAME="2_7"></a>2.7 Posso usar qualquer código de outros projetos
-OpenSource para suplementar as características atuais da libgcj?</h3>
-
-<dd>
-<font color="#FF6600">Alguém pode apontar-me algumas palavras definitivas
-sobre esse assunto?</font></dd>
-</dl>
-
-<blockquote>
-<blockquote> </blockquote>
-</blockquote>
-
-<dl>
-<hr></dl>
-
-<dl>
-<h3>
-<a NAME="2_8"></a>2.8 Quais características da linguagem Java são/não
-são suportadas?</h3>
-
-<dd>
-No momento GCJ suporta todas as construções da linguagem
-Java conforme a <a href="http://java.sun.com/docs/books/jls/">Java Language
-Specification v1.0</a>. O JDK 1.1 adicionou suporte para <i>Inner
-Classes</i>, que não são ainda suportadas ao compilar código
-fonte, mas podem ser usadas na compilação de bytecodes. Veja
-<i>4.2 GCJ pode manipular apenas código fonte?</i> </dd>
-</dl>
-
-<dl> </dl>
-
-<table BORDER=0 CELLPADDING=4 WIDTH="95%" >
-<tr BGCOLOR="#B0D0FF">
-<th ALIGN=LEFT>
-<h2>
-<a NAME="3_0"></a>Tópicos de Construção</h2>
-</th>
-</tr>
-</table>
-
-<dl>
-<h3>
-<a NAME="3_1"></a>3.1 Preciso de algo mais recente que o último
-lançamento; Como devo construir?</h3>
-
-<dd>
-Por favor, leia <a href="http://gcc.gnu.org/java/build-snapshot.html">aqui</a>. </dd>
-
-<br>
-<p>
-<br>
-<br> </dl>
-
-<dl>
-<h3>
-<a NAME="3_2"></a>3.2 Bug de vínculo no Solaris</h3>
-
-<dd>
-Há um problema conhecido com o <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ção
-de que você se deparou com este problema é ter recebido um
-erro que parece com o seguinte durante a construção do libgcj: </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
- </pre>
-
-<dl>Um contorno conhecido para este e outros problemas de vínculo
-relatados nos vários lançamentos do Solaris é construir
-gcc/gcj com o <a href="ftp://sources.redhat.com/pub/binutils/snapshots">mais
-recente GNU binutils</a> ao invés do <tt>ld </tt>nativodo Solaris
-. A maneria mais direta de fazer isso é construir e instalar
-binutils, e então referenciá-lo no configure para
-gcc via <tt>--with-ld=/path_to_binutils_install/bin/ld</tt> (<tt>--with-as</tt>
-pode ser similarmente especificado mas não acredita-se que seja
-requerido).
-<p>Por favor, note que gcc/gcj deve ter sido construído usando
-GNU ld antes de fazer uma construção limpa do libgcj! </dl>
-
-<br> </dl>
-
-<table BORDER=0 CELLPADDING=4 WIDTH="95%" >
-<tr BGCOLOR="#B0D0FF">
-<th ALIGN=LEFT>
-<h2>
-<a NAME="4_0"></a>Gcj - Questões sobre Compilação/Vínculo </h2>
-</th>
-</tr>
-</table>
-
-<dl>
-<dt>
- </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ê deve usar
-a opção <tt>--main=</tt> para indicar a classe que
-tem o método <tt>main</tt> desejado. Isto porque cada classe
-Java pode ter um método <tt>main</tt>, assim você tem que
-dizer ao gcj qual deles usar.</dd>
-
-<dt>
- </dt>
-
-<br>
-<hr></dl>
-
-<dl>
-<dt>
- </dt>
-
-<h3>
-<a NAME="4_2"></a>4.2 GCJ pode manipular apenas código fonte?</h3>
-</dl>
-
-<dl>
-<dl>O GCJ irá compilar ambos, arquivos fonte java e .class, bytecodes.
-No momento, a compilação de bytecodes irá abranger
-mais aplicações que a compilação de fonte,
-já que falta ao compilador de código fonte suporte para "inner
-classes"<i>, </i>que são usadas pesadamente em
-programas escritos para o JDK 1.1 (AWT em particular).</dl>
-
-<br>
-<dl>Em muitos casos o código nativo produzido pela compilação
-de código fonte é mais otimizado que o compilado de arquivos
-.class. Per Bothner explica:
-<dl>A razão é que quando compila para bytecode você
-perde bastante informação sobre a estrutura do programa e
-etc. Essa informação ajuda na geração
-de melhor código. Nós podemos em teoria recuperar a informação
-que nós necessitamos analisando a estrutura dos bytecodes, mas isso
-é difícil algumas vezes - ou algumas vezes simplesmente ninguém
-tratou disso.</dl>
-</dl>
-
-<dl>
-<p>Exemplos específicos incluem estrutura de laço (gcc gera
-melhor código com laços explicitos que com o equivalente
-código espaguete), inicializadores de array, e a sintaxe JDK
-1.1 'CLASS.class', que são todos representados usando construções
-de mais baixo nível em bytecode.
-<br>
-<br>
-<br>
-<br>
-<br>
-<dt>
- </dt>
-</dl>
-
-<hr>
-<dt>
- </dt>
-
-<h3>
-<a NAME="4_3"></a>4.3 "gcj -C" não parece estar funcionando como
-javac/jikes. O que acontece? </h3>
-
-<blockquote>O comportamento do "gcj-C" não é de todo
-como javac ou jikes, que irão compilar (não apenas varrer)
-todos os .java que estão desatualizados com respeito aos seus .class.</blockquote>
-</dl>
-
-<dl>
-<dt>
- </dt>
-</dl>
-
-<dl>
-<h3>
-<a NAME="4_4"></a>4.4 Onde o GCJ procura pelos arquivos? </h3>
-
-<blockquote>GCJ procura pelos arquivos a ser compilados baseado na variável
-de ambiente CLASSPATH. Presentemente uma limitação importante
-é que gcj não manipula arquivos jar no seu classpath.</blockquote>
-</dl>
-
-<hr>
-<dl>
-<dt>
- </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, caso contrário usará o fonte (.java), também
-no CLASSPATH. Ele também checa se a classe é mais nova que
-o arquivo .java. Se ele não consegue encontrar algum deles, ele
-lança um erro.</blockquote>
-</dl>
-
-<dl>
-<dt>
- </dt>
-</dl>
-
-<dl>
-<h3>
-<a NAME="4_6"></a>4.6 Estou recebendo erros de vínculo</h3>
-
-<blockquote>Se você recebe erros no tempo de vínculo que se
-relacionam a 'undefined reference to `java::lang::Object type_info function',
-verifique que você compilou qualquer arquivo CNI C++ com a opção
--fno_rtti . </blockquote>
-</dl>
-
-<dl>
-<dt>
- </dt>
-</dl>
-
-<dl> </dl>
-
-<table BORDER=0 CELLPADDING=4 WIDTH="95%" >
-<tr BGCOLOR="#B0D0FF">
-<th ALIGN=LEFT>
-<h2>
-<a NAME="5_0"></a>Questões de tempo de execução ("Runtime")</h2>
-</th>
-</tr>
-</table>
-
-<dl>
-<h3>
-<a NAME="5_1"></a>5.1 Está acontecendo "<i>dumping core" </i>com
-meu programa! O que está havendo?</h3>
-
-<dd>
-Podem ser várias coisas. Um erro comum é ter sua variável
-de ambiente CLASSPATH apontando para java.lang (e amigos) de terceiros.
-Ou remova o conteúdo do CLASSPATH, ou tenha certeza de que ele não
-se refere à outras bibliotecas básicas, senão àquelas
-encontradas em libgcj.zip.</dd>
-
-<br>
-<dl>Um outro sintoma coberto por este reparo é obter, ao rodar um
-programa tipo "Hello World", um monte de lixo, caracteres ASCII não
-imprimíveis, antes e/ou depois da saída. YMMW (Your Mileage
-May Vary). </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!
-O que acontece?</h3>
-</dl>
-
-<dl>
-<dd>
-Isso é "normal"; O <i>Garbage Collector (</i>GC/Coletor de Lixo)
-usa-o para determinar os limites da pilha. Ele é comumente pego
-e manipulado pelo GC -- você pode ver isso no depurador usando <tt>cont
-</tt>para continuar para o segv "real".</dd>
-
-<br>
-<dl>Isto não deveria acontecer mais, a medida que nós não
-definimos MPROTECT_VDB no GC, pelo menos para Linux/386.</dl>
-
-<dt>
- </dt>
-</dl>
-
-<dl>
-<dt>
-
-<hr></dt>
-
-<h3>
-<a NAME="5_3"></a>5.3 Eu há pouco compilei minha aplicação
-Java e fiz um <i>benchmark </i>e ela parece rodar mais devagar que o JIT
-JVM XXX. Há algo que eu possa fazer para torná-la mais rápida? </h3>
-</dl>
-
-<dl>
-<dd>
-Algumas coisas: </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áximo da <i>heap</i> como indicado
-em <i>5.5 Como aumento os tamanhos inicial e máximo da heap de tempo
-de execução?</i> </li>
-
-<li>
-RE - acessos de array. Nós temos checagem de código de tempo
-de execução sub-ótimos, e o compilador ainda não
-é tão esperto a respeito da remoção automática
-de checagem de array. Se seu código está pronto e não
-cai dentro dessa situação, tente compilar com --no-bounds-check. </li>
-
-<li>
-Tente <i>linkagem</i> estática. A interação com boehm-gc
-parece incorrer em <i>overhead </i> extra quando bibliotecas compartilhadas
-sã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ática.
-Essa questão deve desaparecer em breve com uma nova versão
-do GC.</li>
-
-<li>
-Se sua aplicação Java não necessita de linhas de execução
-(<i>threads</i>), experimente construir libgcj usando --enable-threads=none.
-Porções do <i>runtime </i>do libgcj são ainda mais
-eficientes quando trabalha com uma única linha de execução.</li>
-</ul>
-</dl>
-
-<dl>
-<dd>
- </dd>
-</dl>
-
-<dl>
-<hr>
-<dt>
- </dt>
-
-<h3>
-<a NAME="5_4"></a>5.4 Posso traçar a Coleta de Lixo?</h3>
-
-<dd>
-É possível ativar a saída verbosa do GC suprimindo
-a bandeira -DSILENT durante a construção. Uma maneira de
-fazer isto é comentar a linha com #define SILENT 1 do boehm-gc/configure
-antes de configurar o libgcj. </dd>
-
-<dt>
- </dt>
-
-<dd>
-O GC irá mostrar uma coleção de estatísticas
-na saída padrão. (Reconstruir boehm-gc sozinho sem
-esta bandeira parece não funcionar.)</dd>
-
-<dt>
- </dt>
-
-<br>
-<hr>
-<dt>
- </dt>
-
-<h3>
-<a NAME="5_5"></a>5.5 Como aumento os tamanhos de <i>runtime</i> iniciais
-e máximo da <i>heap</i>?</h3>
-
-<dd>
-Alguns programas que alocam muitos objetos pequenos de curta duração
-podem provocar o rápido enchimento da <i>heap </i>de tamanho padrão,
-ativando GC frequentemente. Com o lançamento 2.95.1 não
-há meios de ajustar a <i>heap </i>em tempo de execução.
-<i>snapshots</i> recentes fornecem os argumentos -ms and -mx para o gij
-para especificar os tamanhos inicial e máximo da <i>heap</i>, respectivamente.</dd>
-</dl>
-
-<hr>
-<dl>
-<h3>
-<a NAME="5_6"></a>5.6 Como posso traçar minha aplicação?</h3>
-
-<dd>
-O suporte para isto está atrasado. Apenas código Java de
-uma única linha de execução (<i>thread</i>)
-pode ser usado pelo traçador (gprof). <i>Threads</i> POSIX parecem
-ser incompatí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ópicos de Programação</h2>
-</th>
-</tr>
-</table>
-
-<h3>
-<a NAME="6_1"></a>6.1 Há 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 comparação, <a href="jni-kaffe.txt">aqui</a>
-está o mesmo exemplo como uma aplicação JNI.
-<p>Note que você deve compilar os arquivos C++ usados pelo CNI com
-a opção -fno-rtti.
-<p>A fonte de informação primária sobre CNI está
-em <a href="papers/cni/t1.html">http://gcc.gnu.org/java/papers/cni/t1.html</a></blockquote>
-</td>
-</tr>
-
-<tr>
-<td></td>
-
-<td></td>
-
-<td></td>
-
-</body>
-</html>
Index: faq.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/java/faq.html,v
retrieving revision 1.59
diff -u -3 -p -r1.59 faq.html
--- faq.html 19 Feb 2003 18:47:05 -0000 1.59
+++ faq.html 30 Apr 2003 12:28:17 -0000
@@ -7,7 +7,6 @@
<h1>The GCJ FAQ</h1>
<p>The latest version of this document is always available at <a href="faq.html">http://gcc.gnu.org/java/faq.html</a>.</p>
- <p>This FAQ is also available in <a href="faq-portugese.html">Brazilian Portugese</a>.</p>
<ol>
<li><a href="#1_0">General Questions</a>
<ol>
More information about the Java-patches
mailing list