아파치 하모니

Apache Harmony
아파치 하모니
Apache Harmony Logo.png
개발자Apache 소프트웨어 재단
최종 릴리즈
5.x5.0M15 / 2010년9월 15일, 11년 전(2010-09-15)
6.x6.0M3 / 2010년9월 15일, 11년 전(2010-09-15)
저장소
기입처C, Java
운영 체제Linux, Windows
유형Java 가상 머신, Java 라이브러리
면허증.Apache 라이센스 2.0
웹 사이트harmony.apache.org

Apache Harmony는 Apache Software [1]Foundation에서 개발한 무료 오픈 소스입니다.2005년 5월 초에 발표되었으며 2006년 10월 25일 이사회는 Apache Harmony를 최상위 프로젝트로 선정하기로 의결했습니다.Harmony 프로젝트는 J2SE 5.0의 경우 99%, Java SE [2]6의 경우 97%의 완성도를 달성했습니다(2011년 2월 현재).Android 운영체제는 역사적으로 Harmony의 [3]주요 사용자였지만 Android Nougat 이후 OpenJDK 라이브러리에 점점 더 의존하게 되었습니다.

2011년 10월 29일 프로젝트 리더인 Tim Ellison에 의해 프로젝트 폐지를 위한 투표가 시작되었습니다.결과는 20 대 2로 [4]이 프로젝트는 2011년 [5][6]11월 16일에 종료되었습니다.

역사

개시

Harmony 프로젝트는 처음에 무료 Java 구현의 모든 개발자를 통합하기 위한 노력으로 생각되었습니다.많은 개발자들은 이것이 GNU, Apache 및 다른 커뮤니티 위에 있는 프로젝트일[clarification needed] 것이라고 예상했습니다.GNU 개발자는 초기 준비 [7]계획에 초대되어 참여했습니다.Apache는 Apache License [8]v2에서 Harmony를 사용할 수 있기를 원했기 때문에 GNU Classpath의 코드를 사용하지 않기로 결정했습니다.Apache 개발자는 필요한 클래스를 처음부터 작성하고 소프트웨어 회사로부터 필요한 대규모 코드 기부를 기대합니다.프로젝트 시작 시 다양한 오해와 IBM과 같은 주요 기업들이 많은 양의 기존 코드를 기부하자는 제안으로 인해 자유 자바 커뮤니티의 일부 사람들은 이 프로젝트를 아파치 [9]프로젝트가 아닌 기업 컨소시엄으로 보게 되었다.

GNU Classpath 프로젝트와 Apache Harmony 프로젝트 간의 주요 비호환 포인트는 호환되지 않는 라이센스입니다.Classpath의 GNU General Public License(링크 예외 포함)와 Harmony의 Apache License([9]Apache License).

Sun에서 TCK 라이선스를 취득하는 데 어려움

2007년 4월 10일 Apache Software FoundationSun Microsystems의 CEO Jonathan Schwartz에게 Sunifi에 필요한 Java SE 5 사양과의 호환성을 입증하기 위해 프로젝트에 필요한 테스트 키트인 Java SE 5 Technology Compatibility Kit(TCK)에 대한 허용 라이선스를 취득할 수 없다는 공개 서한을 보냈습니다.Java SE [10]5의 캐티온 라이선스ASF가 라이선스를 받아들일 수 없는 것은 Java Community Process [11]규칙을 준수하지 않고 Harmony 사용자가 사용할 수 있는 "사용 분야"에 제한을 가하기 때문입니다.

Sun은 회사 블로그에서[12][13] TCK를 포함한 GPL에서 Java 플랫폼의 오픈 소스 구현을 작성하는 것을 목표로 하고 있지만, 우선순위는 Java 플랫폼GPL에서 Linux 커뮤니티에 최대한 빨리 접근할 수 있도록 하는 것이라고 답변했습니다.

이 대답, 열린 letter,[14]또는 오히려 아파치 소프트웨어 재단에"충분히 개방된 자세로"응답하지 않고 있다;일부는 ASF분별없이 공격적으로 특히 개막개의 시간을 고려하고 그들은 태양으로부터 더 많은 외교를 사용하여 얻게 할 수 있는 것을 요구하기에 행동한다고 생각하는 태양 주장을 비판하는 데 반응을 촉발시켰다.멍청이라이브러리로 이동합니다.[15][16]

Sun은 2007년 5월에 OpenJDK와 함께 OpenJDK에서 [17]파생된 GPL 구현에 OpenJDK 컨텍스트에서 TCK를 실행할 수 있는 특정 라이선스를 출시했습니다.GPL 라이선스가 아닌 Apache Harmony에는 적용되지 않습니다.2010년 12월 9일 Apache Software Foundation은 Apache가 하모니 [19]프로젝트에서 사용할 수 있는 라이선스를 취득하는 데 어려움을 겪자 Java Community Process Executive [18]Committee에서 사임했습니다.

Android SDK에서 사용

Google의 Android 플랫폼(Dalvik 최대 버전 4.4)과 후속 버전인 Android Runtime(ART)에서 사용되는 가상 머신은 클래스 [20][21]라이브러리의 핵심에 Harmony의 하위 집합을 사용합니다.단, Dalvik은 Java SE 또는 Java ME Class Library 프로파일에 대응하지 않습니다(예를 들어 J2ME 클래스, AWT Swing은 지원되지 않습니다).

안드로이드 7.0 "누가"는 하모니를 OpenJDK[3]대체했다.

프로젝트의 종료

2010년 10월 11일, 프로젝트의 가장 큰 참여자인 IBMOpenJDK 프로젝트에 Oracle과 함께 참여하기로 결정함으로써 사실상 Harmony에서 Oracle 참조 [22][23]구현으로 전환했습니다.IBM의 Linux 책임자이자 오픈 소스인 Bob Sutor는 "IBM은 Apache Project Harmony에서 OpenJDK로 개발 노력을 전환할 것입니다."[24]라고 블로그에 올렸습니다.2011년 3월 IBM의 Tim Ellison은 화합을 위한[25][26] 프로젝트 관리 의장직에서 사임했다고 발표했습니다. IBM이 해체된 후 프로젝트의 활동 수준이 크게 [27]저하되었습니다.

2011년 10월 29일 프로젝트 리더인 Tim Ellison에 의해 Harmony-Dev 메일링 리스트에 대한 여론조사가 시작되었습니다.11월 3일 결과는 20대 2로 [4]은퇴에 찬성했다.2011년 11월 16일 Apache Software Foundation 이사회는 프로젝트 [28]종료 신청을 통과시켰습니다.래리 로젠이라는 한 이사는 제안의 장점이 아닌 시기에 따라 반대표를 던졌다. 그렇지 않으면 [28]만장일치였다.이 프로젝트는 2011년 [5]11월 16일에 종료되었습니다.

개발팀

처음에 Apache Harmony는 몇몇 회사로부터 많은 코드 기부를 받았다.공개 메일링 리스트에 대한 개발 논의가 이루어지고 있습니다.그 후 아파치 소프트웨어 재단 멘토들은 개발 과정을 아파치 [29][30]방식에 더 부합시키기 위해 많은 노력을 기울였고, 그들의 노력은 성공한 것으로 보였다.

최종개발현황

Apache Harmony는 2006년 10월 29일 Apache 공식 프로젝트 중 승인되었습니다.

아키텍처

동적 런타임 계층 가상 시스템은 다음과 같은 구성 요소로 구성됩니다.

  1. VM 코어:는 하위 구성요소와 함께 대부분의 JVM 제어 기능을 집중시킵니다.
  2. 포팅 계층:은 단일 인터페이스 뒤에 있는 다른 VM 구성 요소에서 플랫폼별 세부 정보를 숨기고 Apache Portable Runtime 계층을 기반으로 합니다.
  3. 가비지 콜렉터:는 힙 메모리에 Java 개체를 할당하고 다양한 알고리즘을 사용하여 도달할 수 없는 개체를 회수합니다.
  4. Execution Manager: 메서드를 컴파일하기 위한 실행 엔진을 선택하고 프로파일 및 동적 재컴파일 로직을 처리합니다.
  5. 클래스 라이브러리: Java 표준 라이브러리입니다.
  6. 운영 체제 스레드를 처리하는 스레드 관리자
  7. 실행 엔진:은 다음과 같이 구성됩니다.
    1. 메서드 코드의 컴파일 및 실행을 위한 적시 컴파일러입니다.
    2. 디버깅이 용이한 인터프리터.

지원 플랫폼 및 운영 체제

이 프로젝트는 많은 플랫폼과 운영체제에서 개발을 용이하게 하는 휴대용 구현을 제공했습니다.주로 x86 [31]및 x86-64 아키텍처의 Windows 및 Linux 운영체제에 초점을 맞췄습니다.

윈도 2000 Windows XP, Server 2003, Vista Linux RHEL, SLES, Debian, Gentoo, Fedora FreeBSD AIX Mac OS X
IA-32(펜튬 III 이상) 아니요. 네. 네. 아니요.
x86-64 (인텔 64, AMD64) 네. 네.
아이테니엄(IA64, IPF) 아니요. 네.
PowerPC 32비트 아니요.
PowerPC 64비트 아니요. 아니요.
z시리즈 31비트 아니요.

클래스 라이브러리 커버리지

소프트웨어 회사로부터 예상된 기부금을 실제로 받았다.Apache Harmony는 현재 인텔이 제공한 Swing, AWT, Java 2D 코드를 포함한 작업 코드를 포함하고 있습니다.

2011년 2월 현재 Harmony 프로젝트는 JDK 5.0의 경우 99%, Java SE [2]6의 경우 97%의 완성도를 달성했습니다.

Apache Harmony 프로젝트의 진행 상황은 J2SE 1.4 및 Java SE [32]5.0을 기준으로 추적할 수 있습니다.또한 Java SE 6.0용 개발에는 Harmony v6.0용 브랜치가 있습니다.

Apache Harmony 개발자는 기존의 여러 오픈 소스 프로젝트를 통합하여 목표를 달성합니다(수레벨을 재창조하지 않음).이러한 프로젝트의 대부분은 성숙하고 잘 알려져 있기 때문에 라이브러리의 다른 부분은 처음부터 작성해야 했습니다.

Apache Harmony 프로젝트에서 사용되는 기존 오픈 소스 구성 요소의 목록입니다. 이 중 일부는 프로젝트가 시작되기 전에 사용되었습니다.

요소 묘사
ICU Unicode 지원 및 소프트웨어 국제화와 세계화를 위한 성숙한 C/C++ 및 Java 라이브러리
아파치 잘란 XPath 언어를 구현하는 Java용 XSLT 스타일시트 프로세서, C++
아파치 엑스르체스 Java, C++, Perl용 XML 파서 라이브러리
Apache 휴대용 런타임 플랫폼에 의존하지 않는 크로스 플랫폼 추상화 라이브러리
아파치 CXF SOAP, XML/HTTP, RESTful HTTP, CORBA 등의 프로토콜을 통해 작동하는 강력한 고성능 웹 서비스 프레임워크
BCEL 바이너리 Java 클래스(바이트 코드)를 분해, 수정 및 재구성하는 라이브러리
MX4J Java Management Extensions(JMX) 툴을 통해 애플리케이션, 시스템 객체, 디바이스 및 서비스 지향 네트워크를 관리 및 감시할 수 있습니다.
VM Magic 직접 메모리 조작 등을 추가하여 Java에서 시스템 프로그래밍을 용이하게 하기 위한 Java 언어의 확장 세트입니다.
번시 캐슬 Java 및 C#용 경량 암호화 라이브러리 컬렉션
앤티엘 언어 도구: 많은 대상 언어의 액션을 포함하는 문법 설명에서 인식자, 인터프리터, 컴파일러 및 번역자를 구성하는 프레임워크를 제공합니다.

문서

조화는 무료 Java 구현에 비해 문서화되어 있지 않습니다.예를 들어 GNU Classpath에서는 중앙 CORBA 클래스의 모든 메서드(ORB)는 표준 추상 API[33] 클래스와 [34]구현 모두에서 설명 코멘트를 가지고 있습니다.하모니가 [35]사용한 요코프로젝트에서는 2006년 10월 말 표준선언과[36] 실시클래스의[37] 대부분의 방법이 미등록으로 되어 있었다.또한 GNU Classpath는 오래된 CORBA 기능과 새로운 CORBA 기능을 모두 지원했습니다(Sun의 구현과 동일).이와는 달리, 조화는 이전 표준의 중심적인 방법을 남겼습니다.ORB.connect(Object))가 완전히 구현되지 않았습니다.

도구들

Java 플랫폼을 완전히 구현하려면 Java 소스 코드를 바이트 코드, JAR 파일, 디버거, 애플릿 뷰어와 웹 브라우저 플러그인으로 변환하는 컴파일러도 필요합니다.하모니에는 컴파일러, 애플릿뷰어, jarsigner, javah, javap, keytool, policytool 및 unpack200[38]있습니다.

가상 머신 지원

Harmony에는 Harmony Class Library를 실행하는 7개의 가상 머신 구현이 있으며, 모두 외부 그룹의 기부금입니다.

  • 저자인 Archie Cobbs가 기고한 JCVM의 인터프리터를 기반으로 한 JC Harmony Edition VM, "JCHEVM"
  • BootJVM은 Daniel Lydick이 제공한 단순한 부트스트랩 가상 머신입니다.
  • Sable Research Group 및 Dynamic Runtime Layer Virtual Machine의 저자가 기고한 고급 휴대용 인터프리터인 SableVM.
  • DRLVM은 인텔이 제공하는 저스트타임 컴파일러입니다.
  • BEA는 Apache Harmony Class [39]Library를 실행하는 JRockit VM의 평가 버전을 사용할 수 있다고 발표했습니다.
  • JikesRVM은 Apache Harmony Class [40]Library를 사용하는 오픈 소스 메타 순환 JVM입니다.
  • Ja.NET SE는 에서 실행되는 Java 5 JDK(클래스 라이브러리, 도구 등)를 제공하는 오픈소스 프로젝트입니다.NET Framework CLR. Ja.NETSE는 Apache Harmony 클래스 [41]라이브러리를 기반으로 합니다.

2006년 11월 말, 이러한 가상 머신이 제공하는 언어 지원이 아직 불완전했으며, 빌드 지침에서는 클래스 라이브러리 테스트 스위트를 실행하기 위해 IBM의 독자 사양인 J9을 사용하는 것이 권장되었습니다.단, 이것은 더 이상 필요하지 않습니다(2007년 7월 현재).

프로젝트의 나머지 부분에 대해서는, DRLVM 가상 머신의 개발은 현재(2011년 [42]5월 현재) 정지하고 있습니다.

응용 프로그램 상태

그 구상 이후, 하모니는 사소한 자바 애플리케이션을 [43]실행하는 능력이 커졌다.2007년 7월 현재 지원되는 어플리케이션은 다음과 같습니다.

그러나 Harmony의 불완전한 라이브러리로 인해 다음과 같은 다른 응용 프로그램을 시작할 수 없었습니다.

  • ArgoUML: Java 애플릿 구현이 필요하기 때문에 Harmony에서는 사용할 수 없었습니다.
  • Apache Geronimo는 Apache Harmony에서 실행되며 몇 가지 문제와 [48]해결 방법이 있습니다.
  • Vuze(이전 Azureus)는 구현되지 않은 보안 클래스 때문에 발생합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Original FAQ Questions from Project Launch". harmony.apache.org. Retrieved February 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. ^ a b "Class Library Component Status". harmony.apache.org. Retrieved February 27, 2011.
  3. ^ a b Amadeo, Ron (January 7, 2016). "Android N switches to OpenJDK, Google tells Oracle it is protected by the GPL". Ars Technica. Condé Nast. Retrieved July 1, 2016.
  4. ^ a b Ellison, Tim (November 3, 2011). "Move Apache Harmony to the Attic (updated)". org.apache.harmony.dev. Archived from the original on December 14, 2013. Alt URL
  5. ^ a b Ellison, Tim (November 16, 2011). "Board accepted attic resolution". org.apache.harmony.dev. Archived from the original on December 14, 2013. Retrieved November 27, 2011. Alt URL
  6. ^ "The end of (Apache) Harmony". The H. November 4, 2011.
  7. ^ Mark Wielaard (May 9, 2005). "Harmony!". Archived from the original on May 16, 2008. Retrieved October 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. ^ a b Mark 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. ^ ASF에 따르면 1) 사양 리드는 그러한 독립적 구현을 작성 또는 배포할 수 있는 사용권자의 권리를 제한하거나 제한하는 계약 조건 또는 계약을 부과할 수 없습니다(섹션 5.C).III) 및 2) 및 2) 사양 리드는 필요한 모든 IP 로열티 없이 사양의 호환 가능한 구현에 대한 라이센스를 취득해야 한다(섹션 5).B)
  12. ^ "On the Record". Archived from the original on April 21, 2007.
  13. ^ "Sun to Apache: "Open Source Process is a Journey" - Java IoT".
  14. ^ "The Silence from an Open Sun". Ian Skerrett. April 16, 2007.
  15. ^ "Mark J. Wielaard".
  16. ^ Gilbert, Dave (April 16, 2007). "Five Reasons Why Apache Will Regret That Open Letter". Archived from the original on April 18, 2007. Retrieved March 8, 2008.
  17. ^ "OpenJDK Community TCK License Agreement V 1.1" (PDF). Sun Microsystems. Retrieved March 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.
  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.com. November 12, 2007. Retrieved May 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. Archived from the original on June 27, 2009. Retrieved May 31, 2009.
  22. ^ "Oracle and IBM Collaborate to Accelerate Java Innovation Through OpenJDK". Oracle Corporation. Archived from the original on October 14, 2010. Retrieved October 22, 2010.
  23. ^ Ryan Paul (October 13, 2010). "Java wars: IBM joins OpenJDK as Oracle shuns Apache Harmony". Ars Technica. Archived from the original on October 19, 2010. Retrieved October 22, 2010.
  24. ^ Bob Sutor. "IBM joins the OpenJDK community, will help unify open source Java efforts". Archived from the original on October 18, 2010. Retrieved October 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". Retrieved March 20, 2011.
  26. ^ "What is the Future of Apache Harmony?". infoq.com. March 14, 2011. Retrieved March 20, 2011.
  27. ^ "Mailing list archives: dev@harmony.apache.org". apache.org. Retrieved September 11, 2011.
  28. ^ a b "Board of Directors Meeting Minutes". Apache Software Foundation. November 16, 2011. Retrieved August 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 from the original on September 29, 2007. Retrieved July 28, 2006.
  30. ^ "The Apache Way". Archived from the original on August 21, 2006. Retrieved July 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".
  33. ^ http://cvs.savannah.gnu.org/viewcvs/*checkout*/classpath/org/omg/CORBA/ORB.java?rev=1.2.2.12&root=classpath[영구 데드링크]
  34. ^ http://cvs.savannah.gnu.org/viewcvs/*checkout*/classpath/gnu/CORBA/OrbFunctional.java?rev=1.6&root=classpath[영구 데드링크]
  35. ^ "Harmony uses latest Yoko jars..." September 27, 2006.
  36. ^ http://svn.apache.org/repos/asf/incubator/yoko/trunk/yoko-spec-corba/src/main/java/org/omg/CORBA/ORB.java
  37. ^ http://svn.apache.org/repos/asf/incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OBCORBA/ORB_impl.java
  38. ^ "Apache Harmony - Project Roadmap".
  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. Retrieved May 28, 2011.
  43. ^ "Application_Status". apache.org. Archived from the original on August 10, 2007. Retrieved November 4, 2006.
  44. ^ "Archived copy". Archived from the original on February 8, 2007. Retrieved November 4, 2006.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  45. ^ "Apache_Tomcat". apache.org. Archived from the original on February 10, 2007. Retrieved November 4, 2006.
  46. ^ "JUnit". apache.org.
  47. ^ "Apache_Ant". apache.org. Archived from the original on February 10, 2007. Retrieved November 4, 2006.
  48. ^ "Apache Harmony". apache.org.

외부 링크