OpenJDK - OpenJDK

OpenJDK
OpenJDK logo.svg
Desenvolvedor (s) Oracle , OpenJDK e Java Community, Red Hat , Azul Systems , IBM , Microsoft , Amazon , Apple , SAP
lançamento inicial 8 de maio de 2007 ; 14 anos atras ( 08/05/2007 )
Repositório
Escrito em C ++ e Java
Sistema operacional Linux , FreeBSD , macOS , Microsoft Windows , OpenIndiana ; várias outras portas em andamento
Modelo Plataforma Java
Licença GPL-2.0 apenas com exceção de vinculação
Local na rede Internet openjdk .java .net

OpenJDK ( Open Java Development Kit ) é uma implementação gratuita e de código aberto da plataforma Java, Standard Edition (Java SE). É o resultado de um esforço que a Sun Microsystems começou em 2006. A implementação é licenciada sob a GPL-2.0 apenas com uma exceção de link . Se não fosse pela exceção de vinculação GPL, os componentes vinculados à biblioteca de classes Java estariam sujeitos aos termos da licença GPL. OpenJDK é a implementação de referência oficial do Java SE desde a versão 7.

Componentes

O projeto OpenJDK produz vários componentes: o mais importante é a máquina virtual ( HotSpot ), a Biblioteca de Classes Java e o compilador Java ( javac ).

O plug-in do navegador da web e o Web Start , que fazem parte do Oracle Java , não estão incluídos no OpenJDK. A Sun indicou anteriormente que tentaria abrir o código-fonte desses componentes, mas nem a Sun nem a Oracle o fizeram. Os únicos plug-ins gratuitos disponíveis atualmente e implementações do Web Start a partir de 2016 são aqueles fornecidos pelo IcedTea .

OpenJDK 9+ suporta compilação AOT ( jaotc) usando GraalVM (JEP 295). A -XX:+EnableJVMCIProductbandeira experimental permite o uso de Graal JIT (JEP 317).

Versões OpenJDK

O OpenJDK foi inicialmente baseado apenas na versão JDK 7 da plataforma Java.

Desde o JDK 10, o esforço para produzir uma implementação de referência de código aberto da plataforma Java SE foi transferido para o projeto JDK. Ao contrário dos projetos de lançamento de JDK anteriores, que produziam apenas um lançamento de recurso e depois eram encerrados, este projeto de longa execução produzirá todos os lançamentos de recursos JDK futuros e enviará um lançamento de recurso a cada seis meses de acordo com um modelo estrito e baseado no tempo.

Existem vários ramos separados de desenvolvimento do Projeto OpenJDK e JDK:

  • O projeto JDK versão 16.
  • O projeto JDK versão 15.
  • O projeto JDK versão 14.
  • A versão 13 do projeto JDK.
  • O projeto JDK versão 12.
  • O projeto JDK versão 11.
  • O projeto JDK versão 10.
  • O projeto OpenJDK 9, que é a base para o JDK 9.
  • O projeto OpenJDK 8u, que é baseado no JDK 8 e produz atualizações para as versões Java 8 existentes.
  • O projeto OpenJDK 8, que é a base para o JDK 8, foi lançado em 18 de março de 2014.
  • O projeto OpenJDK 7u, que é baseado no JDK 7 e produz atualizações para as versões Java 7 existentes.
  • O projeto OpenJDK 6, que é baseado no JDK 7, adaptado para fornecer uma versão de código aberto do Java 6 . Observe que a Red Hat renunciou à liderança do OpenJDK 6 no início de 2017 e isso foi então assumido pela Azul Systems.

Construções OpenJDK

Como a Oracle não está mais lançando atualizações para lançamentos de suporte de longo prazo (LTS) sob uma licença permissiva, outros começaram a oferecer compilações para Windows. As distribuições Linux sempre ofereceram suas próprias compilações.

Construir Organização LTS
Licença permissiva
TCK
testado
Construído sem
modificações

Suporte comercial
AdoptOpenJDK (movido para Eclipse como Eclipse Adoptium em 2021) sim sim Não Opcional Opcional (IBM)
Alibaba Dragonwell Alibaba Group sim sim Não Não Não
Amazon Corretto Amazonas sim sim sim Não Opcional (na AWS)
Azul Zulu Azul Systems sim sim sim Não Opcional
BellSoft Liberica JDK BellSoft sim sim sim Não Opcional
Eclipse Adoptium / Temurin Eclipse Foundation sim sim sim Opcional Opcional (Azul, IBM)
IBM Semeru Runtime Certified Edition IBM sim Não sim Não Opcional (IBM)
IBM Semeru Runtime Open Edition IBM sim sim Não Não Opcional (IBM)
IBM Java SDK (versão 11 movida para IBM Semeru Runtime Certified Edition) IBM sim Não sim Não sim
JetBrains Runtime JetBrains sim sim Não Não Não
Microsoft Build de OpenJDK Microsoft sim sim sim Não Opcional (no Azure)
ojdkbuild sim sim Não sim Não
OpenLogic OpenJDK OpenLogic sim sim Não Não Opcional
GraalVM Community Edition GraalVM Não sim sim Não Não
Oracle GraalVM Enterprise Edition Oracle Corporation sim Não sim Não sim
Oracle Java SE Oracle Corporation sim Não sim Não sim
Oracle OpenJDK Oracle Corporation Não sim sim sim Não
Versão do Red Hat do OpenJDK IBM sim sim sim Não sim
SAP SapMachine SEIVA sim sim sim Não Opcional (para produtos SAP)

IcedTea e inclusão em distribuições de software

Para agrupar o OpenJDK no Fedora e em outras distribuições Linux gratuitas , o OpenJDK precisava ser compilado usando apenas componentes de software livre . Devido aos componentes sobrecarregados na biblioteca de classes e às suposições implícitas no sistema de construção de que o JDK usado para construir o OpenJDK era um Sun JDK, isso não era possível. Para alcançar a abertura, a Red Hat iniciou o projeto IcedTea em junho de 2007. Ele começou como um híbrido OpenJDK / GNU Classpath que poderia ser usado para inicializar o OpenJDK, substituindo os estorvos pelo código do GNU Classpath.

Em 5 de novembro de 2007, a Red Hat assinou o Contrato de Contribuidor da Sun e a Licença TCK da Comunidade OpenJDK . Um dos primeiros benefícios desse acordo é um alinhamento mais estreito com o projeto IcedTea, que reúne Fedora , a distribuição Linux, e JBoss , o servidor de aplicativos, tecnologias em um ambiente Linux. IcedTea forneceu alternativas de software livre para as poucas seções proprietárias restantes no projeto OpenJDK.

Em maio de 2008, as distribuições do Fedora 9 e Ubuntu 8.04 incluíram o IcedTea 6, totalmente baseado em código- fonte livre e aberto . O Fedora 9 foi a primeira versão enviada com IcedTea6, com base nas fontes OpenJDK6 da Sun em vez de OpenJDK7. Também foi o primeiro a usar OpenJDK para o nome do pacote (por meio do contrato de marca comercial OpenJDK ) em vez de IcedTea. O Ubuntu também empacotou o IcedTea7 antes de passar para o IcedTea6. Pacotes para IcedTea6 também foram criados para Debian e incluídos no Lenny . Em 12 de julho de 2008, o Debian aceitou o OpenJDK-6 na instável e mais tarde foi incluído na estável . O OpenJDK também está disponível no openSUSE , Red Hat Enterprise Linux e derivados RHEL, como CentOS .

Em junho de 2008, a Red Hat anunciou que os binários empacotados para OpenJDK no Fedora 9 , construídos usando IcedTea 6, foram aprovados nos testes do Technology Compatibility Kit e podem ser considerados uma implementação Java 6 totalmente compatível. Em julho de 2009, uma construção binária IcedTea 6 para Ubuntu 9.04 passou em todos os testes de compatibilidade no Java SE 6 TCK .

Desde agosto de 2008, o OpenJDK 7 pode ser usado no macOS e em outras variantes do BSD .

No Android Nougat , o OpenJDK substituiu o agora descontinuado Apache Harmony como as bibliotecas Java no código-fonte do sistema operacional móvel . O Google estava em uma disputa legal com a Oracle sobre reivindicações de violação de direitos autorais e patentes por meio do uso de reimplementações de APIs Java protegidas por direitos autorais via Harmony. Ao mesmo tempo que afirma que esta mudança foi para criar uma plataforma mais consistente entre Java no Android e outras plataformas, a empresa admitiu que a mudança foi motivada pela ação judicial, argumentando que a Oracle havia autorizado o uso do código OpenJDK por meio de licenciamento sob a GPL .

História

Promessa da Sun e lançamento inicial

A Sun anunciou no JavaOne 2006 que o Java se tornaria um software de código aberto e, em 25 de outubro de 2006, na conferência Oracle OpenWorld , Jonathan Schwartz disse que a empresa pretendia anunciar o código aberto da plataforma Java central dentro de 30 a 60 dias .

A Sun lançou a máquina virtual Java HotSpot e o compilador como software livre sob a GNU General Public License em 13 de novembro de 2006, com a promessa de que o restante do JDK (que inclui o Java Runtime Environment ) seria colocado sob a GPL em março de 2007 , "exceto para alguns componentes que a Sun não tem o direito de publicar na forma de código-fonte sob a GPL". De acordo com o defensor do software livre Richard Stallman , isso acabaria com a "armadilha do Java", o aprisionamento do fornecedor que ele argumenta aplicado ao Java e aos programas escritos em Java.

Lançamento da biblioteca de classes

Seguindo sua promessa de lançar um Java Development Kit (JDK) baseado quase totalmente em código-fonte livre e livre no primeiro semestre de 2007, a Sun lançou o código-fonte completo da Java Class Library sob a GPL em 8 de maio de 2007, exceto para algumas partes limitadas que foram licenciadas à Sun por terceiros e a Sun não conseguiu licenciar novamente sob a GPL. Incluídos na lista de partes sobrecarregadas estavam vários componentes principais da interface gráfica do usuário (GUI) Java . A Sun declarou que planejava substituir os componentes proprietários restantes por implementações alternativas e tornar a biblioteca de classes totalmente gratuita.

Quando lançado inicialmente em maio de 2007, 4% da biblioteca de classes do OpenJDK permaneceu proprietária. Com o surgimento do OpenJDK 6 em maio de 2008, restava menos de 1% (a implementação SNMP , que não faz parte da especificação Java), tornando possível construir o OpenJDK sem plugues binários. O requisito de plug binário foi posteriormente retirado do OpenJDK 7 como parte do b53 em abril de 2009.

Isso foi possível, ao longo do primeiro ano, pelo trabalho da Sun Microsystems e da comunidade OpenJDK. Cada estorvo foi lançado como software livre e de código aberto ou substituído por uma alternativa. A partir de dezembro de 2010, todos os chamados plugs binários foram substituídos por substitutos de código aberto , fazendo com que todo o JDK fosse de código aberto e os plugs binários não fossem mais necessários.

Melhorias na comunidade

Em 5 de novembro de 2007, a Red Hat anunciou um acordo com a Sun, assinando um amplo contrato de contribuição da Sun (que cobre a participação em todos os projetos de software livre e de código aberto liderados pela Sun por todos os engenheiros da Red Hat) e o OpenJDK Community Technology Compatibility Kit da Sun (TCK ) Contrato de Licença (que dá à empresa acesso ao conjunto de testes que determina se um projeto baseado em OpenJDK está em conformidade com a especificação Java SE 6).

Também em novembro de 2007, o Porters Group foi criado no OpenJDK para ajudar nos esforços de portar o OpenJDK para diferentes arquiteturas de processador e sistemas operacionais . O projeto de portabilidade do BSD liderado por Kurt Miller e Greg Lewis e o projeto de portabilidade do Mac OS X (baseado no BSD) liderado por Landon Fuller expressaram interesse em ingressar no OpenJDK através do Porters Group. A partir de janeiro de 2008, ambos fazem parte das discussões da lista de e-mails. Outro projeto com formalização pendente no Porters Group é a equipe Haiku Java liderada por Bryan Varner.

Em dezembro de 2007, a Sun mudou o controle de revisão do OpenJDK do TeamWare para o Mercurial (e mais tarde para o Git e GitHub ), como parte do processo de lançamento para comunidades de código aberto .

O OpenJDK tem procedimentos comparativamente rígidos de aceitação de contribuições de código: cada contribuição proposta deve ser revisada por outro committer do OpenJDK e o contribuidor deve ter assinado o Contrato de Contribuidor Sun / Oracle (SCA / OCA). De preferência, também deve haver um teste jtreg demonstrando que o bug foi corrigido. Inicialmente, o processo de envio de patch externo era lento e, até setembro de 2008, os commits para a base de código eram feitos apenas por engenheiros da Sun. O processo foi aprimorado e, a partir de 2010, patches simples e backports do OpenJDK 7 para o OpenJDK 6 podem ocorrer em poucas horas, em vez de dias.

Em 2011, uma versão não oficial do OpenJDK 6.0 para OS / 2 foi lançada pela primeira vez. Esta porta está incluída no derivado OS / 2 ArcaOS .

Em 25 de setembro de 2013, a Microsoft e a Azul Systems colaboraram para criar o Zulu, uma versão do OpenJDK para usuários da nuvem Windows Azure. O Zulu está disponível para download gratuito no site da comunidade Zulu.org . Também é possível obter o Zulu na Amazon Web Services por meio da Juju Charm Store da Canonical, do Docker Hub e dos repositórios da Azul Systems. A Azul contribui com correções de bugs e melhorias para o projeto OpenJDK e tem vários committers de projeto na equipe.

Desde abril de 2016, há compilações de comunidade não suportadas do OpenJDK para Microsoft Windows no GitHub no projeto ojdkbuild que são lançadas junto com as atualizações do Oracle JDK. A partir do build 8u151, o instalador MSI oferece um componente opcional para usar o Java Web Start com base no projeto IcedTea-Web .

Em 2020, uma versão do OpenJDK 8 para o OpenVMS na plataforma Itanium foi lançada.

O número de contribuições externas ao OpenJDK está crescendo desde o início do projeto. O OpenJDK 11, lançado em setembro de 2018, recebeu 20% das correções externas e trouxe 17 novos JEPs (recursos), dos quais 3 foram contribuições da comunidade. A saber, JEP 315: "Melhorar Aarch64 Intrinsics" (contribuição de BellSoft ), JEP 318: "Epsilon: A No-Op Garbage Collector" (por Red Hat) e JEP 331: "Low-Overhead Heap Profiling" (contribuição do Google) .

Colaboração com IBM, Apple e SAP

Em 11 de outubro de 2010, a IBM , de longe o maior participante do projeto Apache Harmony , decidiu se juntar à Oracle no projeto OpenJDK, mudando efetivamente seus esforços do Harmony para o OpenJDK. Bob Sutor, chefe de Linux e código aberto da IBM, escreveu em seu blog que "a IBM mudará seu esforço de desenvolvimento do Apache Project Harmony para o OpenJDK".

Em 12 de novembro de 2010, a Apple Inc. (apenas três semanas depois de descontinuar sua própria porta Java runtime) e a Oracle Corporation anunciaram o projeto OpenJDK para Mac OS X. A Apple contribuirá com a maioria dos principais componentes, ferramentas e tecnologia necessários para um Java SE 7 implementação no Mac OS X, incluindo uma máquina virtual Java baseada em HotSpot de 32 e 64 bits, bibliotecas de classes, uma pilha de rede e a base para um novo cliente gráfico.

Em 11 de janeiro de 2011, o Mac OS X Port Project foi criado no OpenJDK, e a Apple fez a primeira contribuição pública de código para o projeto. A contribuição inicial da Apple construída na porta OpenJDK BSD .

Em julho de 2011, a SAP AG anunciou que a SAP se juntou oficialmente ao projeto OpenJDK.

Veja também

Referências

links externos