IcedTea

Origem: Wikipédia, a enciclopédia livre.
IcedTea7
Desenvolvedor Red Hat / GNU Classpath
Versão estável 2.3.8 (11 de março de 2013; há 11 anos)
Sistema operacional Multiplataforma
Gênero(s) Máquina virtual Java e Biblioteca
Licença GPL+linking exception
Página oficial http://icedtea.classpath.org
IcedTea-Web
Desenvolvedor Red Hat / GNU Classpath
Versão estável 1.3.1 (7 de novembro de 2012; há 11 anos)
Sistema operacional Multiplataforma
Gênero(s) Máquina virtual Java e Biblioteca
Licença GPL+linking exception
Página oficial http://icedtea.classpath.org/wiki/IcedTea-Web
IcedTea6
Desenvolvedor Red Hat / GNU Classpath
Versão estável 1.12.4 (4 de março de 2013; há 11 anos)
Sistema operacional Multiplataforma
Gênero(s) Máquina virtual Java e Biblioteca
Licença GPL+linking exception
Página oficial http://icedtea.classpath.org

IcedTea é um software de desenvolvimento e projecto de integração lançado pela Red Hat, em junho de 2007.[1] O objetivo é fazer o software OpenJDK que a Sun Microsystems lançou como software livre em 2007, utilizável sem exigir qualquer outro software que não é livre. Para a Red Hat, isto tornaria possível adicionar o OpenJDK ao Fedora Linux, bem como outras distribuições. Esta meta foi cumprida; e uma versão do IcedTea baseada em OpenJDK foi empacotada com o Fedora 8 em novembro de 2007. Em abril de 2008, viu-se o primeiro lançamento[2] de uma nova variante, IcedTea6, que se baseia no build do OpenJDK6 da Sun, um fork do OpenJDK, com o objectivo de ser compatível com o actual JDK6. Este foi liberada no Ubuntu e Fedora, em maio de 2008. O pacote IcedTea, nessas distribuições, foi renomeado para OpenJDK com o anúncio da marca OpenJDK. Em junho de 2008, o Fedora fez seu build passar nos rigorosos testes TCK da Sun[3] em x86 e x86-64.

História[editar | editar código-fonte]

Este projeto foi criado na sequência da Sun liberar seu HotSpot Virtual Machine e compilador Java, em novembro de 2006; e mais do código fonte da classe de biblioteca em maio de 2007. No entanto, parte da biblioteca da classe, como a renderização de fontes, gerenciamento de cores e suporte a som, só foram fornecidas como plugins binários proprietários. Isto porque o código fonte para estes plugins pertence a terceiros, em vez da Sun Microsystems.[4] As partes foram liberadas publicadas sob os termos da GNU General Public License, uma licença de software livre.

Devido a estes componentes em falta, não foi possível construir o OpenJDK apenas com componentes em software livre. A Sun é destinada a negociar com os titulares de licença para permitir esse código a ser liberado sob uma licença livre; ou na falta deste, para substituir estes elementos proprietários com implementações alternativas. Com os plugins substituídos, a biblioteca de classes seria então totalmente livre. A Sun tem continuado a usar o código proprietário em seu certificado de versões binárias.[5]

Na sequência do anúncio, o projeto IcedTea foi iniciado e formalmente anunciado em 7 de junho de 2007,[6] com build de um repositório fornecido pela equipe GNU Classpath. A equipe não podia chamar seu software produto de "OpenJDK" porque esta é uma marca comercial de propriedade da Sun Microsystems. Eles decidiram, em vez disso, o nome temporário "IcedTea".[7]

Em 5 de novembro de 2007, quanto à Red Hat e à Sun Contributor Agreement, ambos assinaram um acordo com a Comunidade OpenJDK, a Licença TCK. O comunicado de imprensa sugeriu que isso iria beneficiar o projeto IcedTea.[8] Simon Phipps sugeriu a possibilidade de estar hospedando IcedTea no openjdk.java.net;[9] e Mark Reinhold notou que a assinatura da cessão de direitos autorais poderia permitir que a Red Hat contribuísse com os componentes do IcedTea à Sun para inclusão no JDK mainstream.[10][11]

Desde então, uma série de patches para IcedTea6 fizeram seu caminho para OpenJDK6, por exemplo.[12][13]

Em junho de 2008, foi anunciado que IcedTea6 (como a versão do pacote OpenJDK no Fedora 9) passou nos testes Technology Compatibility Kit; e pode-se afirmar uma implementação totalmente compatível com Java 6.[14]

Objetivos[editar | editar código-fonte]

Especificamente, o projeto IcedTea começou com dois objetivos. Um deles é que seja possível para o GNU Compiler for Java compile o código OpenJDK. O problema era que o único programa que poderia compilar o software proprietário OpenJDK existente era o Sun JDK. Distribuições livres como o Fedora não podem depender de ferramentas proprietárias para construir pacotes, de modo que o projeto IcedTea teve de tornar possível compilar o código utilizando software livre. Quando isso foi feito, a versão resultante do IcedTea do OpenJDK poderia ser utilizada para compilar a si mesma, escapando assim, a necessidade de uso de software não-livre às futuras compilações.[6][15]

A segunda tarefa foi de fornecer equivalentes livres de plugins binários que existiam no OpenJDK, porque a Sun não foi capaz de liberar todo o código-fonte. A partir de março de 2008, isso já não é necessário para IcedTea6, como o OpenJDK6 build pode ser construído sem plugins binários. Com o lançamento do b10,[16] que substitui o suporte proprietário a som, a partir do projecto Gervill, uma implementação plena do Java 1.6 que podem ser construída sem plugins binários. O único remanescente é um plugin binário para suporte SNMP, que é um provedor opcional de arquitectura JMX e não faz parte das especificações.

Benefícios[editar | editar código-fonte]

O IcedTea fornece um plugin Java Web browser em software livre. Foi o primeiro a trabalhar em navegadores de 64 bits em Linux de 64 bits, uma característica proprietária do JRE da Sun conduzida mais tarde.[17] Isto o torna adequado para habilitar o suporte a Java applets em Firefox de 64 bits, entre outros. Além disso, o suporte Java Web Start é por meio do NETX.[18] Sun fez promessas sobre lançar seu plugin e implementação de Web Start, como parte do OpenJDK, mas até agora não cumpriu,[19] apesar da contínua pressão da comunidade.[20] O desenvolvimento do plugin IcedTea continua, com a última versão da próxima geração do plugin com suporte ao Google Chromium.[21] O desenvolvimento atual tem lugar no rojeto separaddI cedTea Web.[22]

IcedTea fornece também build de sistema mais familiar, proporcionando um wrapper em torno do OpenJDK makefiles utilizando o GNU Autotools. Isso elimina a necessidade de lembrar um grande número de variáveis do ambiente para configurar e construir (o actual IcedTea constrói um conjunto de cerca de 40 dessas variáveis à construção subjacente ao OpenJDK). Também tem desde cedo um lugar para trabalhar em características que acabarão por aparecer nas principais builds do OpenJDK, como Gervill[23]; e ao trabalho nos portes para outras plataformas.

Evolução e avaliação[editar | editar código-fonte]

Em junho de 2007, o Fedora está trabalhando no IcedTea; e uma porção significativa da Mauve, a suíte de testes do GNU Classpath, executado com êxito no mesmo.[24] Em maio de 2008, o suporte foi adicionado ao IcedTea para rodar os testes de regressão Sun jtreg.[25]

IcedTea é o padrão na JVM no Ark Linux.[26]

IcedTea está disponível no Ubuntu 7.10 (Gutsy Gibbon), a partir do "universo" repositório;[27] e IcedTea6 no 8.04 (Hardy Heron).[28]

IcedTea está disponível no Fedora 8 e IcedTea6 no Fedora 9 (como java-1.6.0-openjdk), a partir do repositório "yum". Pacotes (e builds) para IcedTea6 estão disponíveis no Gentoo no repositório oficial, mas eles são marcados como instáveis.

Pode ser construído e executado no Debian.[29] Pacotes binários foram apresentadas em 20 de abril. Em abril de 2008, mas foram rejeitados devido a problemas com alguns arquivos de licenciamento.[30][31] Um novo pacote foi carregado em junho de 2008;[32] e entrou instável em 12 de julho de 2008.

Arquitectura[editar | editar código-fonte]

OpenJDK contém aproximadamente (no lançamento, em maio de 2007) 4% de código sobrecarregado,[7] que só foi empacotado como plugins binários. Esses eram necessários para construir e usar o JDK. OpenJDK6 foi lançada com apenas 1% de código sobrecarregado; e seu suporte a som também já foi substituído. IcedTea6 baseia-se nesta versão. IcedTea6 ainda fornece suporte web browser, o suporte Web Start, como a implementação da Sun continua a ser proprietária.

IcedTea substitui o plugins binários com o equivalente ao código GNU Classpath, compilando tudo com GCJ e opcionalmente bootstraps a si mesma, usando o HotSpot e Java Virtual Machine; e o javac, compilador Java, que apenas dá um built.[33]

Zero e Shark[editar | editar código-fonte]

Portes de HotSpot e (OpenJDK; Virtual Machine) são difíceis, porque o código contêm bastantes optimizações em Assembly para além do núcleo C++.[34] O projecto IcedTea desenvolveu um porte genérico do interpretador HotSpot zero-assembler Hotspot (ou zero),[35] com quase nenhum código assembly.[36][37] Este porte é destinado a permitir adaptar o Linux na arquitetura do processador, tornando potencial infinito em portáteis.[38] O código do HotSpot zero-montador é utilizado para todos os não-x86 portes do HotSpot (PPC, IA64, S390 e ARM) desde a versão 1.6.[39][40][41]

O rojetoI cedTea já está desenvolvendo uma plataforma independente de compilador just-in-time chamado Shark para HotSpot, utilizando LLVM, para complementar Zero.[37][42] Concluindo este trabalho, fará com que o Java Virtual Machine seja independente da arquitetura de CPU.

Referências[editar | editar código-fonte]

  1. Fitzsimmons, Thomas (8 de junho de 2007). «Credits». Consultado em 8 de junho de 2007 
  2. Angel, Lillian (4 de abril de 2008). «IcedTea6 1.1 Released». Consultado em 12 de julho de 2008. Arquivado do original em 31 de outubro de 2008 
  3. Sharples, Rich (19 de junho de 2008). «Java is finally Free and Open». Consultado em 19 de junho de 2008. Arquivado do original em 20 de junho de 2008 
  4. «Open JDK is here!». Sun Microsystems. 8 de maio de 2007. Consultado em 9 de maio de 2007 
  5. «Sun's OpenJDK FAQ». Now Sun is open sourcing most of the remaining components of the JDK, with the exception of a few encumbered components that we hope, with the community's help, can be re-implemented so that 100% of the OpenJDK code commons is available as free software…Sun will continue to use that code in commercial releases until it's replaced by fully-functional open-source alternatives 
  6. a b Haley, Andrew (7 de junho de 2007). «Experimental Build Repository at icedtea.classpath.org». Consultado em 9 de junho de 2007 
  7. a b Fitzsimmons, Thomas (18 de maio de 2007). «Plans for OpenJDK». Consultado em 22 de maio de 2007 
  8. «Red Hat and Sun Collaborate to Advance Open Source Java Technology». Red Hat. 5 de novembro de 2007. Consultado em 6 de novembro de 2007. Arquivado do original em 25 de agosto de 2007 
  9. Phipps, Simon (5 de novembro de 2007). «Red Hat Joins OpenJDK». Consultado em 14 de novembro de 2007. Arquivado do original em 22 de fevereiro de 2008 
  10. Reinhold, Mark (5 de novembro de 2007). «Welcome, Red Hat!». Consultado em 14 de novembro de 2007. Arquivado do original em 22 de fevereiro de 2008 
  11. Andrew, Haley (16 de maio de 2008). «Open source project: OpenJDK» 
  12. «Bug ID 6523403: OSS CMM: Need to provide lcms library with PYCC and LINEAR_RGB OS ICC profiles». Consultado em 12 de julho de 2008 
  13. «Bug ID 6604044 java crashes talking to second X screen». Consultado em 12 de julho de 2008 
  14. Sharples, Rich (19 de junho de 2008). «Java is finally Free and Open». Consultado em 9 de julho de 2009. Arquivado do original em 20 de junho de 2008 
  15. Wielaard, Mark (7 de junho de 2007). «Experimental Build Repository at icedtea.classpath.org». Consultado em 9 de junho de 2007 
  16. «OpenJDK6 b10 source posted». 30 de maio de 2007. Consultado em 12 de julho de 2008 
  17. «Java SE 6 Update 12 Release Notes». Consultado em 28 de Outubro de 2009 
  18. Netx is a high-quality implementation of the Java Network Launching Protocol (JNLP).
  19. Darcy, Joe (8 de junho de 2009). «OpenJDK and the new plugin». Consultado em 5 de setembro de 2009 
  20. Hughes, Andrew John (21 de agosto de 2009). «Opensource plugin&webstart - when?». Consultado em 5 de setembro de 2009 
  21. Bhole, Deepak (26 de agosto de 2009). «IcedTea Java plugin with Chromium and Firefox 3.6A1». Consultado em 5 de setembro de 2009 
  22. Bhole, Deepak (2 de fevereiro de 2011). «First release of IcedTea-Web!». Consultado em 4 de abril de 2011 
  23. a generic synthesizer for Java
  24. Kung, Francis (21 de junho de 2007). «Mauve test run results». Consultado em 12 de junho de 2007 
  25. Wielaard, Mark. «jtreg testing integrated». Consultado em 12 de julho de 2008 
  26. «Ark Linux packages». Ark Linux. Consultado em 23 de fevereiro de 2008. Arquivado do original em 14 de março de 2008 
  27. «Ubuntu -- Details of icedtea-java7-jre in gutsy». Ubuntu Packages. Consultado em 26 de outubro de 2007 
  28. «Ubuntu -- Details of package openjdk-6-jre in hardy». Ubuntu Packages. Consultado em 12 de julho de 2008 
  29. «Debian Building Instructions». IcedTea Wiki. Consultado em 21 de maio de 2008 
  30. «openjdk-6 - Debian NEW package overview». Debian ftp-master. Consultado em 21 de maio de 2008 
  31. «jdk6 - GPL-compatible free software licenses and documented copyrights and licenses». Consultado em 12 de julho de 2008 
  32. «openjdk-6 - Debian NEW package overview». Debian ftp-master. Consultado em 12 de julho de 2008 
  33. Wielaard, Mark (7 de junho de 2007). «IcedTea». Consultado em 9 de junho de 2007 
  34. Benson, Gary (6 de novembro de 2007). «Gary's guide to porting IcedTea». Consultado em 26 de janeiro de 2008. Arquivado do original em 3 de maio de 2012 
  35. «Zero-Assembler Project». Consultado em 22 de agosto de 2008 
  36. «ZeroSharkFaq». icedtea.classpath.org. Consultado em 30 de maio de 2009 
  37. a b Benson, Gary (28 de maio de 2008). «28 May 2008». Red Hat. Consultado em 30 de maio de 2008. Shark is a platform-independent JIT for HotSpot, to complement the zero-assembler interpreter we’ve been using 
  38. Benson, Gary (21 de maio de 2009). «Zero and Shark: a Zero-Assembly Port of OpenJDK». java.net. Consultado em 30 de maio de 2009. Arquivado do original em 31 de maio de 2009. We started an experimental port of OpenJDK without assembly language, using free software libraries to bridge the gaps. This experiment evolved to become the zero-assembly port of OpenJDK -- Zero -- and its just-in-time compiler Shark. 
  39. Benson, Gary (1 de fevereiro de 2008). «1st February 2008». Consultado em 3 de fevereiro de 2008. Arquivado do original em 3 de maio de 2012 
  40. Haley, Andrew (31 de janeiro de 2008). «Making zero-assembler the default on ppc». Consultado em 3 de fevereiro de 2008 
  41. Angel, Lillian (13 de fevereiro de 2008). «IcedTea 1.6 Released with Zero-assembler and JNLP support!». Red Hat. Consultado em 13 de fevereiro de 2008 
  42. Benson, Gary (31 de março de 2008). «31 March 2008». Red Hat. Consultado em 30 de maio de 2008 

Ligações externas[editar | editar código-fonte]