Apache Harmony

From Wikipedia, the free encyclopedia

Apache Harmony
Developer: Apache Software Foundation
Latest release: Snapshots 95% / Oct 29, 2006
OS: Cross-platform
Use: Java SE 5
License: Apache 2.0 licence
Website: http://harmony.apache.org/

Apache Harmony is an open source implementation of Java, starting with Java SE 5.0. It will be licensed under the Apache License, Version 2. It was announced in early May 2005 and on October 25th 2006, the Board of Directors voted to make Apache Harmony a top-level project.

Contents

The Harmony project was initially conceived as an effort to unite all developers of the Free Java language implementations. Many developers expected that it would be the project above the GNU, Apache and other communities. GNU developers were invited into and participated during the initial, preparatory planning. Later it was decided not to use the code from GNU Classpath, and that Harmony would use an incompatible licence; therefore blocking the sharing of code between Harmony and existing free Java projects. Apache developers would then write the needed classes from scratch and expect necessary large code donations from software companies.

The main reason for disagreements between GNU Classpath and Apache projects are due to differences between the General Public License (GNU Classpath license also contains the linking exception) and Apache Software License. These disagreements seem mainly inspired by various software companies[1] that prefer slightly more liberal Apache license that allows the closed source derived works. GNU Classpath can also be linked[2] with the proprietary code, but it is legally difficult to make the closed source derivative of the GNU Classpath itself. However, many free software developers think that the licenses and philosophy of these communities are not different enough to split the efforts, and the inability to find the compromises is frequently estimated negatively. The occasionally appearing suggestions to view these projects as the opposing forces do not find wide support. The enthusiasts of the free software tend to break the discussion with the simple words that "more free software is not a problem"[3].

Apache Harmony started from being mostly developed by several companies, receiving large code contributions at once. However the general discussions on the mailing lists were always opened for everyone, and later the Apache Software foundation mentors put a lot of effort [4] to bring the development process more in line with the Apache way [5], and it seems that their efforts were highly successful. In November 1, 2006, the current team of committers consisted of 16 developers, 12 of them from IBM and Intel [1].

Apache Harmony has been accepted among the official Apache projects on 29th October 2006.

The expected donations from software companies were actually received. The Apache Harmony now contains the working code, including the Swing, AWT and Java 2D code which were contributed by Intel.

The part of the implemented classes is still smaller than in GNU Classpath (96% in the trunk versus almost 100% as of November 2006 [6]), despite some non-trivial applications were shown being running in 2006 JavaONE international conference.

Also Harmony's test suite is less extensive than GNU Classpath's for now (20000 tests [2] versus 50000 [3] as of October 2006).

The progress of the Apache Harmony project can be tracked against J2SE 1.4 and J2SE 5.0.

Harmony is currently less documented than the alternative free java implementations. For instance, in GNU Classpath every method of the central CORBA class (ORB) has the explaining comment both in the standard abstract API class [4] and implementation [5]. In the Yoko project, used by Harmony [6], the majority of methods both in the standard declaration [7] and implementing class [8] were not documented (at the end of October, 2006). Also, GNU Classpath supported both older and current CORBA features (same as Sun's implementation). Harmony, differently, left the central method of the older standard (ORB.connect(Object)) fully unimplemented.

A complete implementation of the Java platform also requires a compiler that translates Java source code into bytecodes, a program that manages JAR files, a debugger, and an applet viewer and web browser plugin, to name a few. Harmony currently only has the compiler [9].

However incompleteness of the implementation cannot be a serious criticism for such project, as it is still very young.

Harmony currently has four virtual machine implementations, all of which were donations by external groups:

  • JC Harmony Edition VM, "JCHEVM," based on the JCVM's interpreter, contributed by the author, Archie Cobbs.
  • BootJVM, a simple bootstrapping virtual machine, contributed by Daniel Lydick.
  • SableVM, an advanced, portable interpreter, contributed by authors from the Sable Research Group; and the Dynamic Runtime Layer Virtual Machine.
  • DRLVM, a just-in-time compiler contributed by Intel.
  • BEA announced the availability of an evaluation version of JRockit VM running Apache Harmony Class Library [7].

In the end of November, 2006, the language support provided by these virtual machine was still incomplete, and the build instructions recommended to use IBM's proprietary J9 instead to run the class library test suite [10].

However, the DRLVM virtual machine is currently (as of November, 2006) under heavy development, so a fast improvement of its features can be expected.

Since its conception, Harmony has steadily grown in its ability to execute non-trivial Java applications (see here). As of December 2006, supported applications include:

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

  1. ^ Mark Wielaard (2006-05-24). Toward a free Java. LWN.net.
  2. ^ GNU Classpath License.
  3. ^ Dalibor Topic (2006-06-01). Harmony, JavaONE 2007 and other thoughts.
  4. ^ Leo Simons (2006-07-24). "We would like all the development to happen right here".
  5. ^ The Apache Way.
  6. ^ that a class is implemented does not imply that this class behaves as requested in the RI specification. For example, some implemented methods can still do nothing at all (this is also true for GNU Classpath)
  7. ^ BEA JRockit VM under a binary, evaluation-only license

Advanced Search
Included Web Search Engines


Safe Search

close

Top Matching Results

Occasionally Search.com will highlight specialized results that are based on the context of your query. Examples of specialized results include specific links to news, images, or video.

Top Matching Results may highlight information from other Search.com pages, content from the CNET Network of sites, or third party content. The listings are based purely on relevance. Search.com does not receive payment for listings in this section but our partners that provide this data may get paid for listing these products.

Sponsored Links

This section contains paid listings which have been purchased by companies that want to have their sites appear for specific search terms and related content. These listings are administered, sorted and maintained by a third party and are not endorsed by Search.com.

Search Results

Search.com sends your search query to several search engines at one time and integrates the results into one list which has been sorted by relevance using Search.com's proprietary algorithm. You can customize the list of search engines included in your metasearch from the preferences.

The search engines that are used in your metasearch may allow companies to pay to have their Web sites included within the results. To view the Paid Inclusion policy for a specific search engine, please visit their Web site. Search.com does not accept payment or share revenue with any search engine partner for listings in this section.