Apache Harmony - Apache Harmony

Apache Harmony
Apache Harmony Logo.png
Desenvolvedor (s) Apache Software Foundation
Último lançamento
5x  5.0M15 / 15 de setembro de 2010 ; 11 anos atrás ( 15/09/2010 )
6x 6.0M3 / 15 de setembro de 2010 ; 11 anos atrás ( 15/09/2010 )
Repositório
Escrito em C , Java
Sistema operacional Linux , Windows
Modelo Máquina Virtual Java , Biblioteca Java
Licença Licença Apache 2.0
Local na rede Internet harmonia .apache .org

Apache Harmony é um aposentado de código aberto , a implementação Java livre , desenvolvido pela Apache Software Foundation . Foi anunciado no início de maio de 2005 e em 25 de outubro de 2006, o Conselho de Diretores votou para fazer do Apache Harmony um projeto de alto nível. O projeto Harmony atingiu (em fevereiro de 2011) 99% de integridade para J2SE 5.0 e 97% para Java SE 6 . O sistema operacional Android tem sido historicamente um grande usuário do Harmony, embora desde o Android Nougat ele dependa cada vez mais das bibliotecas OpenJDK .

Em 29 de outubro de 2011, uma votação foi iniciada pelo líder do projeto, Tim Ellison, se o projeto deveria ser aposentado. O resultado foi de 20 a 2 a favor, e o projeto foi retirado em 16 de novembro de 2011.

História

Iniciação

O projeto Harmony foi inicialmente concebido como um esforço para unir todos os desenvolvedores de implementações Java gratuitas . Muitos desenvolvedores esperavam que fosse o projeto acima do GNU , Apache e outras comunidades. Os desenvolvedores GNU foram convidados e participaram do planejamento preparatório inicial. A Apache então decidiu não usar o código do GNU Classpath porque queria que o Harmony estivesse disponível sob a licença Apache v2. Os desenvolvedores do Apache então escreveriam as classes necessárias do zero e esperariam grandes doações de código necessárias de empresas de software . Vários mal-entendidos no início do projeto e propostas de grandes empresas como a IBM de doar grandes quantidades de código existente levaram algumas pessoas na comunidade Java livre a ver o projeto como um consórcio corporativo em vez de um projeto Apache.

Um dos principais pontos de incompatibilidade entre os projetos GNU Classpath e Apache Harmony eram suas licenças incompatíveis: a Licença Pública Geral GNU da Classpath com a exceção de vinculação versus a Licença Apache do Harmony .

Dificuldades para obter uma licença TCK da Sun

Em 10 de abril de 2007, a Apache Software Foundation enviou uma carta aberta ao CEO da Sun Microsystems , Jonathan Schwartz sobre sua incapacidade de adquirir uma licença aceitável para o Java SE 5 Technology Compatibility Kit (TCK), um kit de teste necessário ao projeto para demonstrar compatibilidade com a especificação Java SE 5, conforme exigido pela licença de especificação Sun para Java SE 5. O que torna a licença inaceitável para ASF é o fato de que ela impõe restrições de direitos por meio de limites no "campo de uso" disponível para usuários do Harmony, não é compatível com as regras do Java Community Process .

A Sun respondeu em um blog da empresa que pretendia criar uma implementação de código aberto da plataforma Java sob GPL , incluindo o TCK, mas que sua prioridade era tornar a plataforma Java acessível à comunidade Linux sob GPL o mais rápido possível.

Essa resposta desencadeou algumas reações, seja criticando a Sun por não responder "de uma maneira suficientemente aberta" a uma carta aberta, ou melhor, Apache Software Foundation ; alguns pensam que a ASF agiu imprudentemente ao exigir agressivamente algo que eles poderiam ter obtido com mais diplomacia da Sun, especialmente considerando a escala de tempo da biblioteca de classes de abertura.

A Sun lançou o OpenJDK em maio de 2007, junto com uma licença específica para permitir a execução do TCK no contexto do OpenJDK para qualquer implementação GPL derivada substancialmente do OpenJDK. Isso não cobre o Apache Harmony, que não é licenciado pela GPL. Em 9 de dezembro de 2010, a Apache Software Foundation renunciou ao Java Community Process Executive Committee, em protesto contra a dificuldade em obter uma licença aceitável para o Apache para uso com o projeto Harmony.

Use no Android SDK

A máquina virtual que é utilizado na Google 's Android plataforma ( Dalvik até a versão 4.4, e seu sucessor, Runtime Android (ART)) utiliza um subconjunto de Harmony para o núcleo de sua biblioteca de classes . No entanto, Dalvik não se alinha aos perfis Java SE nem Java ME Class Library (por exemplo , classes J2ME , AWT e Swing não são suportados).

O Android 7.0 "Nougat" substituiu o Harmony pelo OpenJDK .

Fim do projeto

Em 11 de outubro de 2010, a IBM , de longe o maior participante do projeto, decidiu se juntar à Oracle no projeto OpenJDK , efetivamente mudando seus esforços de Harmony para a implementação de referência da Oracle . 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 março de 2011, Tim Ellison , da IBM , anunciou que renunciou ao cargo de Diretor de Gerenciamento de Projetos da Harmony. Após o desligamento da IBM, o nível de atividade do projeto diminuiu drasticamente.

Em 29 de outubro de 2011, uma enquete foi iniciada na lista de discussão do Harmon-dev pelo líder do projeto, Tim Ellison, se o projeto deveria ser retirado. O resultado, em 3 de novembro, foi de 20 a 2 a favor da aposentadoria. Em 16 de novembro de 2011, o conselho de diretores da Apache Software Foundation aprovou uma moção para encerrar o projeto. Um diretor, Larry Rosen , votou "não" com base no momento e não nos méritos da proposta; caso contrário, foi unânime. O projeto foi desativado em 16 de novembro de 2011.

Equipe de desenvolvimento

No início, o Apache Harmony recebeu algumas grandes contribuições de código de várias empresas. As discussões de desenvolvimento ocorreram em listas de discussão abertas. Mais tarde, os mentores da fundação Apache Software se esforçaram muito para alinhar o processo de desenvolvimento com "o estilo Apache" e parecia que seus esforços foram bem-sucedidos.

Último status de desenvolvimento

O Apache Harmony foi aceito entre os projetos oficiais do Apache em 29 de outubro de 2006.

Arquitetura

A máquina virtual Dynamic Runtime Layer consiste nos seguintes componentes:

  1. O núcleo da VM: com seus subcomponentes concentra a maioria das funções de controle da JVM.
  2. A camada de portabilidade : oculta detalhes específicos da plataforma de outros componentes da VM por trás de uma única interface e é baseada na camada do Apache Portable Runtime .
  3. O coletor de lixo : aloca objetos Java na memória heap e recupera objetos inacessíveis usando vários algoritmos
  4. Execution Manager : seleciona o mecanismo de execução para compilar um método, trata dos perfis e da lógica de recompilação dinâmica.
  5. Biblioteca de classes : é uma biblioteca padrão Java.
  6. O gerenciador de threads que gerencia o threading do sistema operacional
  7. O mecanismo de execução: consiste no seguinte:
    1. O compilador just-in-time para compilação e execução de código de método.
    2. O intérprete para depuração mais fácil.

Plataforma de suporte e sistema operacional

O projeto forneceu uma implementação portátil que facilita o desenvolvimento em muitas plataformas e sistemas operacionais. O foco principal era nos sistemas operacionais Windows e Linux em arquiteturas x86 e x86-64.

Windows 2000 Windows XP , Server 2003 , Vista Linux RHEL , SLES , Debian , Gentoo , Fedora FreeBSD AIX Mac OS X
IA-32 (Pentium III ou melhor) Não sim sim Não N / D N / D
x86-64 (Intel 64, AMD64) N / D sim sim N / D N / D N / D
Itanium (IA64, IPF) N / D Não sim N / D N / D N / D
PowerPC 32 bits N / D N / D Não N / D N / D N / D
PowerPC 64 bits N / D N / D Não N / D Não N / D
zSeries 31 bits N / D N / D Não N / D N / D N / D

Cobertura da biblioteca de classe

As doações esperadas de empresas de software foram efetivamente recebidas. O Apache Harmony agora contém o código de trabalho, incluindo o código Swing , AWT e Java 2D que foram contribuídos pela Intel .

Em fevereiro de 2011, o projeto Harmony alcançou 99% de completude para JDK 5.0 e 97% para Java SE 6 .

O progresso do projeto Apache Harmony pode ser rastreado no J2SE 1.4 e Java SE 5.0. Além disso, há uma ramificação do Harmony v6.0 em desenvolvimento para Java SE 6.0.

Os desenvolvedores do Apache Harmony integram vários projetos de código aberto testados em campo existentes para atingir seu objetivo (não reinventar a roda ). Muitos desses projetos são maduros e bem conhecidos e outras partes da biblioteca precisam ser escritas do zero.

Esta é uma lista de componentes de código aberto existentes que são usados ​​no projeto Apache Harmony; alguns deles estavam em uso antes do início do projeto.

Componente Descrição
UTI Bibliotecas C / C ++ e Java maduras para suporte a Unicode e internacionalização e globalização de software
Apache Xalan Processador de folha de estilo XSLT para Java , C ++ que implementa a linguagem XPath
Apache Xerces Biblioteca do analisador XML para Java, C ++, Perl
Apache Portable Runtime Biblioteca de abstração de plataforma cruzada , fornece independência de plataforma
Apache CXF Estrutura de serviços da Web robusta e de alto desempenho que funciona sobre protocolos como SOAP , XML / HTTP, RESTful HTTP, CORBA
BCEL Bibliotecas para decompor, modificar e recompor classes binárias Java, ou seja, bytecode
MX4J Ferramentas Java Management Extensions (JMX) para gerenciar e monitorar aplicativos, objetos do sistema, dispositivos e redes orientadas a serviços
VM Magic Conjunto de extensões para a linguagem Java para facilitar a programação de sistemas em Java, adicionando operações diretas de memória, etc.
Castelo inflável Coleção de bibliotecas de criptografia leve para Java e C #
ANTLR Ferramenta de linguagem, fornece uma estrutura para construir reconhecedores, intérpretes, compiladores e tradutores a partir de descrições gramaticais contendo ações em muitos idiomas-alvo

Documentação

O Harmony é menos documentado do que as implementações Java alternativas gratuitas. Por exemplo, no GNU Classpath, cada método da classe CORBA central (ORB) tem o comentário explicativo tanto na classe abstrata padrão da API quanto na implementação. No projeto Yoko , usado pelo Harmony, a maioria dos métodos tanto na declaração padrão quanto na classe de implementação não estavam documentados no final de outubro de 2006. Além disso, o GNU Classpath suportava recursos CORBA mais antigos e mais novos (igual à implementação da Sun). O Harmony, diferentemente, deixou o método central do padrão antigo ( ORB.connect(Object)) totalmente não implementado.

Ferramentas

Uma implementação completa da plataforma Java também precisa de um compilador que traduza o código-fonte Java em bytecodes , um programa que gerencia arquivos JAR , um depurador e um visualizador de miniaplicativo e plug-in de navegador da web , para citar alguns. Harmony tem o compilador , appletviewer , jarsigner, javah, javap, keytool , policytool e unpack200 .

Suporte para máquina virtual

O Harmony tem sete implementações de máquina virtual que executam a Harmony Class Library, todas elas doações de grupos externos:

  • JC Harmony Edition VM, "JCHEVM", baseado no interpretador da JCVM , contribuído pelo autor, Archie Cobbs.
  • BootJVM, uma máquina virtual simples de inicialização , contribuído por Daniel Lydick.
  • SableVM , um intérprete avançado e portátil, contribuído por autores do Sable Research Group ; e a Máquina Virtual Dynamic Runtime Layer.
  • DRLVM , um compilador just-in-time contribuído pela Intel .
  • A BEA anunciou a disponibilidade de uma versão de avaliação do JRockit VM executando a Apache Harmony Class Library.
  • JikesRVM , um open-source meta-circular JVM que usar o Apache Harmony biblioteca de classes.
  • Ja.NET SE , um projeto de código aberto que fornece um Java 5 JDK (bibliotecas de classes, ferramentas, etc.) que são executados no .NET Framework CLR. Ja.NET SE é baseado nas Bibliotecas de Classes Apache Harmony.

No final de novembro de 2006, o suporte ao idioma fornecido por estes máquina virtual ainda estava incompleta, e as instruções de compilação recomendado o uso de IBM 's proprietária J9 em vez de executar o conjunto de testes biblioteca de classes. No entanto, isso não é mais necessário (a partir de julho de 2007).

Quanto ao restante do projeto, o desenvolvimento da máquina virtual DRLVM agora está paralisado (em maio de 2011).

Status do aplicativo

Desde sua concepção, o Harmony cresceu em sua capacidade de executar aplicativos Java não triviais. Em julho de 2007, os aplicativos suportados incluem:

No entanto, a biblioteca incompleta do Harmony o impediu de lançar alguns outros aplicativos:

  • ArgoUML : porque precisa de uma implementação de miniaplicativo Java , que ainda não estava disponível no Harmony.
  • O Apache Geronimo é executado no Apache Harmony com alguns problemas e soluções alternativas.
  • Vuze , anteriormente Azureus, por causa de classes de segurança não implementadas.

Veja também

Referências

links externos