java-trap.html (15060B)
1 <!--#set var="ENGLISH_PAGE" value="/philosophy/java-trap.en.html" --> 2 3 <!--#include virtual="/server/header.pt-br.html" --> 4 <!-- Parent-Version: 1.96 --> 5 <!-- This page is derived from /server/standards/boilerplate.html --> 6 <!--#set var="TAGS" value="essays licensing traps" --> 7 <!--#set var="DISABLE_TOP_ADDENDUM" value="yes" --> 8 9 <!-- This file is automatically generated by GNUnited Nations! --> 10 <title>Livre, mas Algemado - A Armadilha do Java - Projeto GNU - Free Software 11 Foundation</title> 12 13 <!--#include virtual="/philosophy/po/java-trap.translist" --> 14 <!--#include virtual="/server/banner.pt-br.html" --> 15 <!--#include virtual="/philosophy/ph-breadcrumb.pt-br.html" --> 16 <!--GNUN: OUT-OF-DATE NOTICE--> 17 <!--#include virtual="/server/top-addendum.pt-br.html" --> 18 <div class="article reduced-width"> 19 20 <h2>Livre, mas Algemado - A Armadilha do Java</h2> 21 22 <address class="byline">por <a href="https://www.stallman.org/">Richard Stallman</a></address> 23 24 <div class="emph-box" style="background: none"> 25 <h3 class="footnote">Nota introdutória</h3> 26 <p>Desde que este artigo foi publicado pela primeira vez, a Sun (agora parte da 27 Oracle) <a 28 href="https://www.fsf.org/news/fsf-welcomes-gpl-java.html">relicenciou</a> a 29 maioria das sua implementação de referência de plataforma Java sob a Licença 30 Pública Geral GNU, e agora existe um ambiente de desenvolvimento livre para 31 Java. Assim, a linguagem Java, como tal, não é mais uma armadilha.</p> 32 33 <p>Você deve ter cuidado, no entanto, porque nem toda plataforma Java é 34 livre. A Sun continua a distribuir uma plataforma Java executável que não é 35 livre, e outras empresas também o fazem.</p> 36 37 <p>O ambiente livre para Java é chamado IcedTea; o código-fonte que Sun liberou 38 está incluído nele. Então esse é o que você deve usar. Muitas distribuições 39 GNU/Linux vêm com o IcedTea, mas algumas incluem plataformas Java não 40 livres. (Nota, adicionada em 10/2015: A implementação livre de Java é 41 conhecida como OpenJDK em muitas distribuições GNU/Linux.)</p> 42 43 <p>Para garantir que seus programas Java sejam executados corretamente em um 44 ambiente livre, você precisa desenvolvê-los usando o IcedTea. Teoricamente, 45 as plataformas Java devem ser compatíveis, mas não são totalmente 46 compatíveis.</p> 47 48 <p>Além disso, existem programas não livres com o “Java” em seu nome, como o 49 JavaFX, e há pacotes Java não livres que você pode achar tentadores, mas 50 você precisa rejeitá-los. Portanto, verifique as licenças de todos os 51 pacotes que você planeja usar. Se você usa o Swing, certifique-se de usar a 52 versão livre, que vem com o IcedTea. (Nota, adicionada em 10/2015: Um 53 substituto livre para o JavaFX chamado OpenJFX foi lançado.)</p> 54 55 <p>Além dessas especificidades de Java, a questão geral descrita aqui permanece 56 importante, porque qualquer biblioteca não livre ou plataforma de 57 programação pode causar um problema semelhante. Devemos aprender uma lição 58 com a história do Java, para que possamos evitar outras armadilhas no 59 futuro.</p> 60 61 <p>Por favor, veja também: <a href="/philosophy/javascript-trap.html"> A 62 Armadilha do JavaScript</a>.</p> 63 </div> 64 <hr class="no-display" /> 65 66 <p><em>12 de abril de 2004</em></p> 67 68 <p> 69 Se o seu programa é software livre, é basicamente ético – mas há uma 70 armadilha para a qual você deve estar atento. Seu programa, embora seja 71 livre, pode ser restrito por softwares não livres dos quais ele 72 depende. Como o problema é mais proeminente hoje em dia nos programas Java, 73 nós o chamamos de Armadilha do Java. 74 </p> 75 76 <p> 77 Um programa é software livre se seus usuários tiverem certas liberdades 78 cruciais. A grosso modo, elas são: a liberdade de executar o programa, a 79 liberdade de estudar e alterar o fonte, a liberdade de redistribuir o 80 código-fonte e os binários e a liberdade de publicar versões 81 aprimoradas. (Veja a <a href="/philosophy/free-sw.html">Definição de 82 Software Livre</a>.) Se algum programa dado em forma de fonte é software 83 livre depende unicamente do significado de sua licença. 84 </p> 85 86 <p> 87 Se o programa pode ser usado no mundo livre, usado por pessoas que querem 88 viver em liberdade, é uma questão mais complexa. Isso não é determinado 89 apenas pela própria licença do programa porque nenhum programa funciona 90 isoladamente. Todo programa depende de outros programas. Por exemplo, um 91 programa precisa ser compilado ou interpretado, então depende de um 92 compilador ou interpretador. Se compilado em código de byte, isso depende de 93 um interpretador de código de bytes. Além disso, ele precisa de bibliotecas 94 para ser executado e também pode chamar outros programas separados que são 95 executados em outros processos. Todos esses programas são 96 dependências. Dependências podem ser necessárias para o programa ser 97 executado, ou podem ser necessárias apenas para determinados recursos. De 98 qualquer maneira, todo ou parte do programa não pode operar sem as 99 dependências. 100 </p> 101 102 <p> 103 Se algumas das dependências de um programa forem não livres, isso significa 104 que todo ou parte do programa não pode ser executado em um sistema 105 totalmente livre – é inutilizável no mundo livre. Claro, poderíamos 106 redistribuir o programa e ter cópias em nossas máquinas, mas isso não é 107 muito bom se não for executado. Esse programa é software livre, mas está 108 efetivamente preso por suas dependências não livres. 109 </p> 110 111 <p> 112 Esse problema pode ocorrer em qualquer tipo de software, em qualquer 113 linguagem. Por exemplo, um programa livre que só funciona no Microsoft 114 Windows é claramente inútil no mundo livre. Mas o software que funciona no 115 GNU/Linux também pode ser inútil se depender de outro software não livre. No 116 passado, o Motif (antes de ter o LessTif) e o Qt (antes de seus 117 desenvolvedores o tornar software livre) eram as principais causas desse 118 problema. A maioria das placas de vídeo 3D funciona totalmente apenas com 119 drivers não livres, o que também causa esse problema. Mas a principal fonte 120 desse problema hoje é o Java, porque as pessoas que escrevem software livre 121 geralmente acham que o Java é sexy. Cegos por sua atração pela linguagem, 122 eles ignoram a questão das dependências e caem na Armadilha do Java. 123 </p> 124 125 <p> 126 A implementação de Java da Sun não é livre. As bibliotecas padrão do Java 127 também são não livres. Nós temos implementações livres de Java, como o <a 128 href="https://objectcomputing.com/resources/publications/sett/january-2003-gcj-the-gnu-compiler-for-java">GNU 129 Compiler for Java</a> (GCJ) e <a href="/software/classpath">GNU 130 Classpath</a>, mas elas não possuem suporte a todos os recursos ainda. Nós 131 ainda estamos trabalhando nisso. 132 </p> 133 134 <p> 135 Se você desenvolver um programa Java na plataforma Java da Sun, será 136 necessário usar recursos exclusivos da Sun sem nem mesmo notar. No momento 137 em que você descobrir isso, você pode tê-los usado por meses, e refazer o 138 trabalho pode levar mais meses. Você pode dizer: “É muito trabalho para 139 recomeçar”. Então, seu programa terá caído na Armadilha do Java; será 140 inutilizável no mundo livre. 141 </p> 142 143 <p> 144 A maneira confiável de evitar a Armadilha do Java é ter apenas uma 145 implementação livre do Java em seu sistema. Então, se você usar um recurso 146 ou biblioteca Java que o software livre ainda não possui suporte, você 147 descobrirá imediatamente e poderá reescrever esse código imediatamente. 148 </p> 149 150 <p> 151 A Sun continua a desenvolver bibliotecas “padrão” adicionais para o Java e 152 quase todas elas são não livres; em muitos casos, até mesmo a especificação 153 de uma biblioteca é um segredo comercial, e a última licença da Sun para 154 essas especificações proíbe o lançamento de qualquer coisa menos que uma 155 implementação completa da especificação. (Veja <a 156 href="https://jcp.org/aboutJava/communityprocess/JSPA2.pdf"> Java 157 Specification Participation Agreement</a> e <a 158 href="https://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html"> 159 J2ME™ Personal Basis Profile Specification</a> para exemplos.) 160 </p> 161 162 <p> 163 Felizmente, essa licença de especificação permite lançar uma implementação 164 como software livre; outros que recebem a biblioteca podem ter permissão 165 para alterá-la e não são obrigados a aderir à especificação. Mas o requisito 166 tem o efeito de proibir o uso de um modelo de desenvolvimento colaborativo 167 para produzir a implementação livre. O uso desse modelo implicaria a 168 publicação de versões incompletas, algo que aqueles que leram a 169 especificação não têm permissão para fazer. 170 </p> 171 172 <p> 173 Nos primeiros dias do movimento do software livre, era impossível evitar 174 depender de programas não livres. Antes de termos o compilador C GNU, todo 175 programa C (livre ou não) dependia de um compilador C não livre. Antes de 176 termos a biblioteca GNU C, todo programa dependia de uma biblioteca C não 177 livre. Antes de termos o Linux, o primeiro kernel livre, todo programa 178 dependia de um kernel não livre. Antes de termos o BASH, todo script de 179 shell tinha que ser interpretado por um shell não livre. Era inevitável que 180 nossos primeiros programas fossem inicialmente prejudicados por essas 181 dependências, mas aceitamos isso porque nosso plano incluía salvá-los 182 posteriormente. Nosso objetivo geral, um sistema operacional GNU de 183 hospedagem própria, incluía substituições livre para todas essas 184 dependências; Se alcançássemos a meta, todos os nossos programas seriam 185 resgatados. Assim aconteceu: com o sistema GNU/Linux, agora podemos usar 186 esses programas em plataformas livres. 187 </p> 188 189 <p> 190 A situação é diferente hoje. Agora temos sistemas operacionais poderosos e 191 livres e muitas ferramentas de programação livres. Qualquer que seja o 192 trabalho que você queira fazer, você pode fazê-lo em uma plataforma livre; 193 não há necessidade de aceitar uma dependência não livre, mesmo que 194 temporariamente. A principal razão pela qual as pessoas caem na armadilha 195 hoje é porque elas não estão pensando nisso. A solução mais fácil para o 196 problema é ensinar as pessoas a reconhecê-lo e não cair nele. 197 </p> 198 199 <p> 200 Para manter seu código Java protegido da Armadilha do Java, instale um 201 ambiente de desenvolvimento Java livre e use-o. De forma mais genérica, seja 202 qual for a linguagem que você usa, mantenha os olhos abertos e verifique o 203 status de programas dos quais o seu código depende. A maneira mais fácil de 204 verificar se um programa é livre é procurá-lo no <a 205 href="https://www.fsf.org/directory">Diretório de Software Livre</a>. Se um 206 programa não estiver no diretório, você poderá verificar sua(s) licença(s) 207 com a <a href="/licenses/license-list.html">lista de licenças de software 208 livre</a>. 209 </p> 210 211 <p> 212 Estamos tentando resgatar os programas Java que caíram nessa armadilha, 213 portanto, se você gosta da linguagem Java, nós o convidamos a ajudar no 214 desenvolvimento do GNU Classpath. Experimentar seus programas com o GCJ 215 Compiler e o GNU Classpath, e relatar quaisquer problemas que você encontre 216 em classes já implementadas, também é útil. No entanto, terminar o GNU 217 Classpath levará tempo; se mais bibliotecas não livres continuarem sendo 218 adicionadas, talvez nunca tenhamos todas as mais recentes. Então, por favor, 219 não coloque seu software livre em grilhões. Quando você escrever um programa 220 hoje, escreva-o para funcionar em instalações livres desde o início. 221 </p> 222 223 <h3 class="footnote">Veja também:</h3> 224 <p><a href="/philosophy/sun-in-night-time.html">O curioso incidente da Sun no 225 período noturno</a></p> 226 </div> 227 228 <div class="translators-notes"> 229 230 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.--> 231 </div> 232 </div> 233 234 <!-- for id="content", starts in the include above --> 235 <!--#include virtual="/server/footer.pt-br.html" --> 236 <div id="footer" role="contentinfo"> 237 <div class="unprintable"> 238 239 <p>Envie perguntas em geral sobre a FSF e o GNU para <a 240 href="mailto:gnu@gnu.org"><gnu@gnu.org></a>. Também existem <a 241 href="/contact/">outros meios de contatar</a> a FSF. Links quebrados e 242 outras correções ou sugestões podem ser enviadas para <a 243 href="mailto:webmasters@gnu.org"><webmasters@gnu.org></a>.</p> 244 245 <p> 246 <!-- TRANSLATORS: Ignore the original text in this paragraph, 247 replace it with the translation of these two: 248 249 We work hard and do our best to provide accurate, good quality 250 translations. However, we are not exempt from imperfection. 251 Please send your comments and general suggestions in this regard 252 to <a href="mailto:web-translators@gnu.org"> 253 254 <web-translators@gnu.org></a>.</p> 255 256 <p>For information on coordinating and contributing translations of 257 our web pages, see <a 258 href="/server/standards/README.translations.html">Translations 259 README</a>. --> 260 A equipe de traduções para o português brasileiro se esforça para oferecer 261 traduções precisas e de boa qualidade, mas não estamos isentos de erros. Por 262 favor, envie seus comentários e sugestões em geral sobre as traduções para 263 <a 264 href="mailto:web-translators@gnu.org"><web-translators@gnu.org></a>. 265 </p><p>Consulte o <a href="/server/standards/README.translations.html">Guia 266 para as traduções</a> para mais informações sobre a coordenação e a 267 contribuição com traduções das páginas deste site.</p> 268 </div> 269 270 <!-- Regarding copyright, in general, standalone pages (as opposed to 271 files generated as part of manuals) on the GNU web server should 272 be under CC BY-ND 4.0. Please do NOT change or remove this 273 without talking with the webmasters or licensing team first. 274 Please make sure the copyright date is consistent with the 275 document. For web pages, it is ok to list just the latest year the 276 document was modified, or published. 277 278 If you wish to list earlier years, that is ok too. 279 Either "2001, 2002, 2003" or "2001-2003" are ok for specifying 280 years, as long as each year in the range is in fact a copyrightable 281 year, i.e., a year in which the document was published (including 282 being publicly visible on the web or in a revision control system). 283 284 There is more detail about copyright years in the GNU Maintainers 285 Information document, www.gnu.org/prep/maintain. --> 286 <p>Copyright © 2004, 2010, 2015, 2021 Free Software Foundation, Inc.</p> 287 288 <p>Esta página está licenciada sob uma licença <a rel="license" 289 href="http://creativecommons.org/licenses/by-nd/4.0/deed.pt_BR">Creative 290 Commons Atribuição-SemDerivações 4.0 Internacional</a>.</p> 291 292 <!--#include virtual="/server/bottom-notes.pt-br.html" --> 293 <div class="translators-credits"> 294 295 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.--> 296 Traduzido por: Rafael Fontenelle <a 297 href="mailto:rafaelff@gnome.org"><rafaelff@gnome.org></a>, 2019-2021.</div> 298 299 <p class="unprintable"><!-- timestamp start --> 300 Última atualização: 301 302 $Date: 2021/10/01 17:39:49 $ 303 304 <!-- timestamp end --> 305 </p> 306 </div> 307 </div> 308 <!-- for class="inner", starts in the banner include --> 309 </body> 310 </html>