Jump to content

Apache Harmony

From Wikipedia, the free encyclopedia

Apache Harmony
Developer(s)Apache Software Foundation
Final release
5.x5.0M15 / September 15, 2010;13 years ago(2010-09-15)
6.x6.0M3 / September 15, 2010;13 years ago(2010-09-15)
Repository
Written inC,Java
Operating systemLinux,Windows
TypeJava virtual machine,JavaLibrary
LicenseApache License 2.0
Websiteharmony.apache.org

Apache Harmonyis a retiredopen source,free Java implementation,developed by theApache Software Foundation.[1]It was announced in early May 2005 and on October 25, 2006, the board of directors voted to make Apache Harmony a top-level project. The Harmony project achieved (as of February 2011) 99% completeness forJ2SE 5.0,and 97% forJava SE 6.[2]TheAndroidoperating system has historically been a major user of Harmony, although sinceAndroid Nougatit increasingly relies onOpenJDKlibraries.[3]

On October 29, 2011 a vote was started by the project lead Tim Ellison whether to retire the project. The outcome was 20 to 2 in favor,[4]and the project was retired on November 16, 2011.[5][6]

History

[edit]

Initiation

[edit]

The Harmony project was initially conceived as an effort to unite all developers of thefree Java implementations.Manydevelopersexpected that it would be the project above[clarification needed]theGNU,Apacheand other communities. GNU developers were invited into and participated during the initial, preparatory planning.[7]Apache then decided not to use code fromGNU Classpathbecause it wanted Harmony to be available under the Apache License v2.[8]Apache developers would thenwrite the needed classes from scratchand expect necessary large code donations fromsoftware companies.Various misunderstandings at the start of the project, and proposals from major companies likeIBMto donate large amounts of existing code, led some people in the free Java community to view the project as a corporate consortium than an Apache project.[9]

One major point of incompatibility between the GNU Classpath and Apache Harmony projects was their incompatible licenses: Classpath'sGNU General Public Licensewith thelinking exceptionversus Harmony'sApache License.[9]

Difficulties to obtain a TCK license from Sun

[edit]

On April 10, 2007, theApache Software Foundationsent anopen lettertoSun MicrosystemsCEO,Jonathan Schwartzregarding their inability to acquire an acceptable license for the Java SE 5Technology Compatibility Kit(TCK), a test kit needed by the project to demonstrate compatibility with the Java SE 5 specification, as needed by theSunspecification license for Java SE 5.[10]What makes the license unacceptable forASFis the fact that it imposes rights restrictions through limits on the "field of use" available to users of Harmony, not compliant with theJava Community Processrules.[11]

Sun answered on a company blog[12][13]that it intended to create an open source implementation of the Java platform underGPL,including the TCK, but that their priority was to make theJava Platformaccessible to theLinuxcommunity underGPLas quickly as possible.

This answer triggered some reactions, either criticizingSunfor not responding "in a sufficiently open manner" to an open letter,[14]or ratherApache Software Foundation;some think that ASF acted unwisely to aggressively demand something they could have obtained with more diplomacy from Sun, especially considering the timescale of the opening class library.[15][16]

Sun released theOpenJDKin May 2007, along with a specific license to allow to run the TCK in the OpenJDK context for anyGPLimplementation deriving substantially from OpenJDK.[17]This does not cover Apache Harmony, which is not GPL-licensed. On December 9, 2010, the Apache Software Foundation resigned from the Java Community Process Executive Committee,[18]in protest over the difficulty in obtaining a license acceptable to Apache for use with the Harmony project.[19]

Use in Android SDK

[edit]

The virtual machine that is used inGoogle'sAndroidplatform (Dalvikup to version 4.4, and its successor,Android Runtime(ART)) uses a subset of Harmony for the core of itsClass Library.[20][21]However, Dalvik does not align toJava SEnorJava MEClass Libraryprofiles (for exampleJ2MEclasses,AWTandSwingare not supported).

Android 7.0 "Nougat"replaced Harmony withOpenJDK.[3]

End of the project

[edit]

On October 11, 2010,IBM,by far the biggest participant in the project, decided to joinOracleon theOpenJDKproject, effectively shifting its efforts from Harmony to theOraclereference implementation.[22][23]Bob Sutor, IBM's head of Linux and open source, blogged that "IBM will be shifting its development effort from the Apache Project Harmony to OpenJDK".[24]In March 2011,IBM's Tim Ellison announced that he resigned as Project Management Chair for Harmony[25][26]After IBM's disengagement, the project's activity level greatly declined.[27]

On October 29, 2011, a poll was started on the harmony-dev mailing list by the project lead Tim Ellison whether to retire the project. The outcome on November 3, was 20 to 2 in favor of retirement.[4]On November 16, 2011, the Apache Software Foundation board of directors passed a motion to terminate the project.[28]One director,Larry Rosen,cast a "no" vote, based on the timing rather than the merits of the proposal; it was otherwise unanimous.[28]The project was retired on November 16, 2011.[5]

Development team

[edit]

At the start, Apache Harmony received some large code contributions from several companies. Development discussions have taken place on open mailing lists. Later, the Apache Software foundation mentors put a lot of effort into bringing the development process more in line with "the Apache way,"[29][30]and it seemed that their efforts were successful.

Last development status

[edit]

Apache Harmony was accepted among the official Apache projects on October 29, 2006.

Architecture

[edit]

The Dynamic Runtime Layer virtual machine consists of the following components:

  1. The VM core:with its subcomponents concentrates most of the JVM control functions.
  2. The porting layer:hides platform-specific details from other VM components behind a single interface and is based on theApache Portable Runtimelayer.
  3. Thegarbage collector:allocates Java objects in the heap memory and reclaims unreachable objects using various algorithms
  4. Execution Manager:selects the execution engine for compiling a method, handles profiles and the dynamic recompilation logic.
  5. Class Library:is a Java standard library.
  6. The thread managerthat handle operating system threading
  7. The execution engine:consists of the following:
    1. Thejust-in-time compilerfor compilation and execution of method code.
    2. Theinterpreterfor easier debugging.

Support platform and operating system

[edit]

The project provided a portable implementation that ease development on many platforms and operating systems. The main focus was onWindowsandLinuxoperating systems on x86 and x86-64 architectures.[31]

Windows 2000 WindowsXP,Server 2003,Vista LinuxRHEL,SLES,Debian,Gentoo,Fedora FreeBSD AIX Mac OS X
IA-32(Pentium III or better) No Yes Yes No
x86-64(Intel 64, AMD64) Yes Yes
Itanium(IA64, IPF) No Yes
PowerPC 32-bit No
PowerPC 64-bit No No
zSeries31-bit No

Class library coverage

[edit]

The expected donations from software companies were actually received. The Apache Harmony now contains the working code, including theSwing,AWTandJava 2Dcode which were contributed byIntel.

As of February 2011,the Harmony project achieved 99% completeness forJDK 5.0,and 97% forJava SE 6.[2]

The progress of the Apache Harmony project can be tracked against J2SE 1.4 and Java SE 5.0.[32]Also, there is a branch for Harmony v6.0 in development for Java SE 6.0.

Apache Harmony developers integrate several existing, field-tested open-source projects to meet their goal (notreinventing the wheel). Many of these projects are mature and well known and other parts of the library needed to be written from scratch.

This is a list of existing open source components that are used in the Apache Harmony project; some of them were in use before the project started.

Component Description
ICU Mature C/C++ and Java libraries forUnicodesupport andsoftware internationalization and globalization
Apache Xalan XSLTstylesheet processor forJava,C++which implementsXPathlanguage
Apache Xerces XMLparser library for Java, C++,Perl
Apache Portable Runtime Cross-platformabstraction library, provides platform independence
Apache CXF Robust, high performanceWeb servicesframework work over protocols such asSOAP,XML/HTTP,RESTfulHTTP,CORBA
BCEL Libraries to decompose, modify, and recompose binary Java classes, i.e.,bytecode
MX4J Java Management Extensions(JMX) tools to manage and monitor applications, system objects, devices and service-oriented networks
VM Magic Set of extensions to Java language to facilitate systems programming in Java by adding direct memory operations, etc.
Bouncy Castle Libraries collection of lightweight cryptography for Java andC#
ANTLR Language tool, provides a framework to construct recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in many target languages

Documentation

[edit]

Harmony is less documented than the alternative free Java implementations. For instance, in GNU Classpath every method of the centralCORBAclass (ORB) has the explaining comment both in the standard abstract API class[33]and implementation.[34]In the Yoko project, used by Harmony,[35]most methods both in the standard declaration[36]and implementing class[37]were undocumented at the end of October 2006. Also, GNU Classpath supported both older and newer CORBA features (same as Sun's implementation). Harmony, differently, left the central method of the older standard (ORB.connect(Object)) fully unimplemented.

Tools

[edit]

A complete implementation of the Java platform also needs acompilerthat translates Java source code intobytecodes,a program that managesJAR files,adebugger,and anappletviewer andweb browserplugin,to name a few. Harmony has thecompiler,appletviewer,jarsigner, javah, javap,keytool,policytool, andunpack200.[38]

Virtual machine support

[edit]

Harmony has sevenvirtual machineimplementations that run Harmony Class Library, all of which were donations by external groups:

  • JC Harmony Edition VM, "JCHEVM," based on theJCVM'sinterpreter,contributed by the author, Archie Cobbs.
  • BootJVM, a simplebootstrappingvirtual machine, contributed by Daniel Lydick.
  • SableVM,an advanced, portable interpreter, contributed by authors from theSable Research Group;and the Dynamic Runtime Layer Virtual Machine.
  • DRLVM,ajust-in-time compilercontributed byIntel.
  • BEA announced the availability of an evaluation version of JRockit VM running Apache Harmony Class Library.[39]
  • JikesRVM,an open-sourcemeta-circularJVM that use the Apache Harmony Class Library.[40]
  • Ja.NET SE,an open source project providing a Java 5 JDK (class libraries, tools, etc.) that run on the.NET FrameworkCLR. Ja.NET SE is based on the Apache Harmony Class Libraries.[41]

In the end of November 2006, the language support provided by these virtual machine was still incomplete, and the build instructions recommended to useIBM'sproprietaryJ9 instead to run the class library test suite. However, this is not necessary anymore (as of July 2007).

As for the rest of the project, DRLVMvirtual machinedevelopment has now stalled (as of May 2011).[42]

Application status

[edit]

Since its conception, Harmony grew in its ability to execute non-trivial Java applications.[43]As of July 2007,supported applications include:

However, Harmony's incomplete library prevented it from launching some other applications:

  • ArgoUML:because it needs aJava appletimplementation, which was still unavailable in Harmony.
  • Apache Geronimoruns on Apache Harmony with some issues and workarounds.[48]
  • Vuze,formerly Azureus, because of unimplemented security classes.

See also

[edit]

References

[edit]
  1. ^"Original FAQ Questions from Project Launch".harmony.apache.org.RetrievedFebruary 27,2011.We are starting with Java SE 5, as that is the first version of Java SE for which the licensing allows an open source implementation, but we'll continue with Java SE 6 and any subsequent versions that follow.
  2. ^ab"Class Library Component Status".harmony.apache.org.RetrievedFebruary 27,2011.
  3. ^abAmadeo, Ron (January 7, 2016)."Android N switches to OpenJDK, Google tells Oracle it is protected by the GPL".Ars Technica.Condé Nast.RetrievedJuly 1,2016.
  4. ^abEllison, Tim (November 3, 2011)."Move Apache Harmony to the Attic (updated)".org.apache.harmony.dev. Archived fromthe originalon December 14, 2013.Alt URLArchivedFebruary 7, 2013, at theWayback Machine
  5. ^abEllison, Tim (November 16, 2011)."Board accepted attic resolution".org.apache.harmony.dev. Archived fromthe originalon December 14, 2013.RetrievedNovember 27,2011.Alt URLArchivedMarch 14, 2013, at theWayback Machine
  6. ^"The end of (Apache) Harmony".The H. November 4, 2011.
  7. ^Mark Wielaard (May 9, 2005)."Harmony!".Archived fromthe originalon May 16, 2008.RetrievedOctober 21,2010.Apache has set up a proposal for discussion around a full free j2se implementation. Which they call "Harmony". This is (at the moment) not about code, but about finding out a direction for getting to such a beast. Dalibor, Tom, Jeroen and I were asked to help them in that discussion and possibly show them how to set up a good architecture for it.
  8. ^Geir Magnusson Jr. (May 24, 2006)."A proposal for a free Java implementation".Apache.
  9. ^abMark Wielaard (May 24, 2006)."Toward a free Java".LWN.net.All this means that, despite the fact that there is now some code available donated by Intel, there is no practical cooperation between the original free software projects backing Harmony and the project now known as Apache Harmony. All this made some people think of Harmony as a company consortium in the guise of an ASF project and not a full community project.
  10. ^"Open Letter to Sun Microsystems - JCK".apache.org.
  11. ^According to ASF, 1) a specification lead cannotimpose any contractual condition or covenant that would limit or restrict the right of any licensee to create or distribute such Independent Implementations(section 5.C.III), and 2)a specification lead must license all necessary IP royalty-free to any compatible implementation of a specification(section 5.B).
  12. ^"On the Record".Archived fromthe originalon April 21, 2007.
  13. ^"Sun to Apache:" Open Source Process is a Journey "- Java IoT".Archived fromthe originalon July 9, 2008.RetrievedApril 14,2007.
  14. ^"The Silence from an Open Sun".Ian Skerrett.April 16, 2007.
  15. ^"Mark J. Wielaard » Blog Archive » OpenJCK".RetrievedAugust 27,2023.
  16. ^Gilbert, Dave (April 16, 2007)."Five Reasons Why Apache Will Regret That Open Letter".Archived fromthe originalon April 18, 2007.RetrievedMarch 8,2008.
  17. ^"OpenJDK Community TCK License Agreement V 1.1"(PDF).Sun Microsystems.RetrievedMarch 8,2008.Subject to and conditioned upon its Licensee Implementation being substantially derived from OpenJDK Code and, if such Implementation has or is to be distributed to a third party, its being distributed under the GPL License, Sun hereby grants to Licensee, to the extent of Sun's Intellectual Property Rights in the TCK, a worldwide, personal, non-exclusive, non-transferable, limited license to use the TCK internally and solely for the purpose of developing and testing Licensee Implementation.
  18. ^"The ASF Resigns From the JCP Executive Committee".Apache Software Foundation. December 9, 2010.
  19. ^"Apache quits Java governance group in protest of Oracle abuses".Ars Technica. December 9, 2010.
  20. ^"Google's Android SDK Bypasses Java ME in Favor of Java Lite and Apache Harmon".infoq. November 12, 2007.RetrievedMay 31,2009.Instead of providing a full version of the Java SE or Java ME Google has diverged on two fronts. First, a limited subset of the core Java packages is provided. (...) By going this route Android is following in the footsteps of another Google project GWT which uses Java as its development language but does not support the full JDK.
  21. ^"Package Index".Open Handset Alliance.Archivedfrom the original on June 27, 2009.RetrievedMay 31,2009.
  22. ^"Oracle and IBM Collaborate to Accelerate Java Innovation Through OpenJDK".Oracle Corporation.Archivedfrom the original on October 14, 2010.RetrievedOctober 22,2010.
  23. ^Ryan Paul (October 13, 2010)."Java wars: IBM joins OpenJDK as Oracle shuns Apache Harmony".Ars Technica.Archivedfrom the original on October 19, 2010.RetrievedOctober 22,2010.
  24. ^Bob Sutor."IBM joins the OpenJDK community, will help unify open source Java efforts".Archived fromthe originalon October 18, 2010.RetrievedOctober 22,2010.IBM will be shifting its development effort from the Apache Project Harmony to OpenJDK. For others who wish to do the same, we'll work together to make the transition as easy as possible. IBM will still be vigorously involved in other Apache projects.
  25. ^Tim Ellison (March 14, 2011)."Rebooting the Harmony project".RetrievedMarch 20,2011.
  26. ^"What is the Future of Apache Harmony?".infoq. March 14, 2011.RetrievedMarch 20,2011.
  27. ^"Mailing list archives: [email protected]".apache.org.RetrievedSeptember 11,2011.
  28. ^ab"Board of Directors Meeting Minutes".Apache Software Foundation. November 16, 2011.RetrievedAugust 8,2012.Larry wishes it to be noted that he is not against termination, he simply would have preferred to have more time to work on the messaging.
  29. ^Leo Simons (July 24, 2006)."We would like all the development to happen right here".Archived fromthe originalon September 29, 2007.RetrievedJuly 28,2006.
  30. ^"The Apache Way".Archived fromthe originalon August 21, 2006.RetrievedJuly 28,2006.
  31. ^Harmony Documentation Team."Apache Harmony - Supported Platforms".harmony.apache.org.
  32. ^"Results of comparison between JDK_5.0 and Harmony_5.0".people.apache.org.RetrievedAugust 27,2023.
  33. ^Class path[permanent dead link]
  34. ^Class path[permanent dead link]
  35. ^"Harmony uses latest Yoko jars..."September 27, 2006.
  36. ^"License".apache.org.RetrievedAugust 27,2023.
  37. ^"License".apache.org.RetrievedAugust 27,2023.
  38. ^"Apache Harmony - Project Roadmap".harmony.apache.org.RetrievedAugust 27,2023.
  39. ^"[general] JRockit H27.2.1 for Harmony Class Library released now".
  40. ^"Announcing Jikes RVM 3.0 + Apache Harmony!".
  41. ^"Janet Dev".
  42. ^"Subversion Commits".harmony.apache.org.RetrievedMay 28,2011.
  43. ^"Application_Status".apache.org. Archived fromthe originalon August 10, 2007.RetrievedNovember 4,2006.
  44. ^"Eclipse Unit Tests Pass on DRLVM - Harmony Wiki".Archived fromthe originalon February 8, 2007.RetrievedNovember 4,2006.
  45. ^"Apache_Tomcat".apache.org. Archived fromthe originalon February 10, 2007.RetrievedNovember 4,2006.
  46. ^"JUnit".apache.org.
  47. ^"Apache_Ant".apache.org. Archived fromthe originalon February 10, 2007.RetrievedNovember 4,2006.
  48. ^"Apache Harmony".apache.org.
[edit]