Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Apache Harmony является отставной с открытым исходным кодом , свободная реализация Java , разработанный Apache Software Foundation . [1] Об этом было объявлено в начале мая 2005 года, а 25 октября 2006 года Совет директоров проголосовал за превращение Apache Harmony в проект высшего уровня. Проект Harmony достиг (по состоянию на февраль 2011 г.) 99% завершенности для J2SE 5.0 и 97% для Java SE 6 . [2] Android операционная система исторически была основным потребителем гармонии, хотя с Android Нуга он все больше и больше полагается на OpenJDK библиотек. [3]

29 октября 2011 года руководитель проекта Тим Эллисон начал голосование по вопросу прекращения проекта. Результат был 20 против 2, [4] и проект был закрыт 16 ноября 2011 года. [5] [6]

История [ править ]

Инициирование [ править ]

Проект Harmony изначально задумывался как попытка объединить всех разработчиков бесплатных реализаций Java . Многие разработчики ожидали , что это будет проект выше [ разъяснение необходимости ] в GNU , Apache и других общин. Разработчики GNU были приглашены и участвовали во время первоначального подготовительного планирования. [7]

Несовместимость с GNU Classpath [ править ]

Несмотря на впечатление, произведенное подготовительным планированием, было решено не использовать код из GNU Classpath и что Harmony будет использовать несовместимую лицензию; таким образом блокируя сотрудничество между Harmony и существующими бесплатными проектами Java. [8] Разработчики Apache затем писали необходимые классы с нуля и ожидали, что компании-разработчики программного обеспечения предоставят необходимые крупные пожертвования кода . Различные недоразумения в начале проекта и тот факт, что крупные компании, такие как IBM, предложили предоставить большой объем существующего кода, создали некоторую путаницу в сообществе свободной Java в отношении реальных целей проекта. [9]

Одним из основных моментов несовместимости между проектами GNU Classpath и Apache Harmony была их несовместимость лицензий: Стандартная общественная лицензия GNU Classpath с исключением связывания по сравнению с лицензией Apache от Harmony . [9]

Трудности с получением лицензии TCK от Sun [ править ]

10 апреля 2007 года Фонд Apache Software направил открытое письмо в Sun Microsystems генерального директор , Джонатан Шварц о своей неспособности приобрести приемлемую лицензию на SE-Java Technology Compatibility Kit (ТСК), тестовый набор , необходимого проект для демонстрации совместимость со спецификацией Java SE 5, как того требует лицензия на спецификацию Sun для Java SE 5. [10] Что делает эту лицензию неприемлемой для ASF, так это тот факт, что она налагает ограничения прав через ограничения на «поле использования», доступное пользователям Harmony, не соответствует правилам Java Community Process .[11]

Sun ответила в блоге компании [12] [13], что намеревается создать реализацию платформы Java с открытым исходным кодом под GPL , включая TCK, но их приоритетом было сделать платформу Java доступной для сообщества GNU / Linux под GPL как можно быстрее.

Этот ответ вызвал некоторую реакцию: либо критику Sun за то, что она не ответила «достаточно открыто» на открытое письмо [14], либо, скорее, Apache Software Foundation ; некоторые думают, что ASF поступила неразумно, агрессивно потребовав чего-то, что они могли бы получить от Sun с большей дипломатичностью, особенно с учетом временных рамок открытия библиотеки классов. [15] [16]

Sun выпустила OpenJDK в мае 2007 года вместе со специальной лицензией, позволяющей запускать TCK в контексте OpenJDK для любой реализации GPL, основанной на OpenJDK. [17] Это не распространяется на Apache Harmony, на который не распространяется GPL. 9 декабря 2010 года Apache Software Foundation вышла из исполнительного комитета Java Community Process [18] в знак протеста против трудностей с получением лицензии, приемлемой для Apache для использования с проектом Harmony. [19]

Использовать в Android SDK [ править ]

Виртуальная машина , которая используется в Google «s Android платформы ( Dalvik до версии 4.4, и его преемник, Android Время воспроизведения (ART)) использует подмножество гармонии для ядра своей библиотеки классов . [20] [21] Однако Dalvik не соответствует профилям Java SE и Java ME Class Library (например, классы J2ME , AWT и Swing не поддерживаются).

Android 7.0 «Nougat» заменил Harmony на OpenJDK . [3]

Конец проекта [ править ]

11 октября 2010 г. IBM , на сегодняшний день самый крупный участник проекта, решила присоединиться к Oracle в проекте OpenJDK , эффективно переключив свои усилия с Harmony на эталонную реализацию Oracle . [22] [23] Боб Сутор, глава IBM по Linux и открытому исходному коду, написал в блоге, что «IBM переместит свои усилия по разработке с Apache Project Harmony на OpenJDK». [24] В марте 2011 года Тим Эллисон из IBM объявил, что уходит с поста председателя по управлению проектами Harmony [25] [26]. После выхода IBM уровень активности проекта значительно снизился. [27]

29 октября 2011 года руководитель проекта Тим Эллисон начал опрос в списке рассылки harmony-dev о том, прекращать ли проект. Результат 3 ноября был 20: 2 в пользу выхода на пенсию. [4] 16 ноября 2011 г. совет директоров Apache Software Foundation принял предложение о прекращении проекта. [28] Один директор, Ларри Розен , проголосовал против, основываясь на времени, а не на достоинствах предложения; в остальном он был единодушен. [28] Проект был закрыт 16 ноября 2011 г. [5]

Команда разработчиков [ править ]

Вначале Apache Harmony получил большой объем кода от нескольких компаний. Обсуждения разработки проходили в открытых списках рассылки. Позже наставники фонда Apache Software приложили много усилий для того, чтобы привести процесс разработки в соответствие с «подходом Apache» [29] [30], и казалось, что их усилия увенчались успехом.

Статус последней разработки [ править ]

Apache Harmony был принят в число официальных проектов Apache 29 октября 2006 года.

Архитектура [ править ]

Виртуальная машина Dynamic Runtime Layer состоит из следующих компонентов:

  1. Ядро виртуальной машины: с его подкомпонентами сосредоточено большинство функций управления JVM.
  2. Уровень переноса : скрывает специфические для платформы детали от других компонентов виртуальных машин за единым интерфейсом и основан на уровне Apache Portable Runtime .
  3. Сборщик мусора : выделяет Java объекты в памяти кучи и высвобождает недостижимые объекты , используя различные алгоритмы
  4. Execution Manager : выбирает механизм выполнения для компиляции метода, обрабатывает профили и логику динамической перекомпиляции.
  5. Библиотека классов : стандартная библиотека Java.
  6. Диспетчер потоков, который обрабатывает потоки операционной системы
  7. Механизм выполнения: состоит из следующего:
    1. Компилятор просто по времени для компиляции и выполнения метода кода.
    2. Интерпретатор для облегчения отладки.

Платформа поддержки и операционная система [ править ]

Проект предоставил переносимую реализацию, упрощающую разработку на многих платформах и операционных системах. Основное внимание уделялось операционным системам Windows и Linux на архитектурах x86 и x86-64. [31]

Покрытие библиотеки классов [ править ]

Ожидаемые пожертвования от софтверных компаний были получены. Apache Harmony теперь содержит рабочий код, включая код Swing , AWT и Java 2D , предоставленный Intel .

По состоянию на февраль 2011 года проект Harmony достиг 99% завершенности для JDK 5.0 и 97% для Java SE 6 . [2]

Прогресс проекта Apache Harmony можно отслеживать по J2SE 1.4 и Java SE 5.0. [32] Кроме того, для Java SE 6.0 в разработке находится ветка Harmony v6.0.

Разработчики Apache Harmony объединяют несколько существующих, протестированных на практике проектов с открытым исходным кодом для достижения своей цели (не изобретая колесо ). Многие из этих проектов являются зрелыми и хорошо известными, а другие части библиотеки нужно было писать с нуля.

Это список существующих компонентов с открытым исходным кодом, которые используются в проекте Apache Harmony; некоторые из них использовались до начала проекта.

Документация [ править ]

Harmony менее документирован, чем альтернативные бесплатные реализации Java. Например, в GNU Classpath каждый метод центрального класса CORBA (ORB) имеет поясняющий комментарий как в стандартном абстрактном классе API [33], так и в реализации. [34] В проекте Yoko , используемом Harmony, [35] большинство методов как в стандартном объявлении [36], так и в классе реализации [37] были недокументированы в конце октября 2006 года. Кроме того, GNU Classpath поддерживал как старые, так и новые CORBA. функции (такие же, как у Sun). Иными словами, Harmony ORB.connect(Object)полностью не реализовал центральный метод старого стандарта ( ).

Инструменты [ править ]

Полная реализация платформы Java также требует компилятора, который переводит исходный код Java в байт-коды , программы, которая управляет файлами JAR , отладчика , средства просмотра апплетов и подключаемого модуля веб-браузера , и это лишь некоторые из них. Harmony имеет компилятор , Appletviewer , Jarsigner, javah, javap, Keytool , policytool и unpack200 . [38]

Поддержка виртуальных машин [ править ]

В Harmony есть семь реализаций виртуальных машин , на которых работает библиотека классов Harmony, и все они были пожертвованы внешними группами:

  • JC Harmony Edition VM, "JCHEVM", основан на интерпретаторе JCVM , предоставленном автором, Арчи Коббсом.
  • BootJVM, простая виртуальная машина для начальной загрузки , предоставленная Дэниелом Лидиком.
  • SableVM , продвинутый портативный интерпретатор, предоставленный авторами из Sable Research Group ; и виртуальная машина динамического уровня выполнения.
  • DRLVM , своевременный компилятор, предоставленный Intel .
  • BEA объявила о выпуске оценочной версии JRockit VM с библиотекой классов Apache Harmony. [39]
  • JikesRVM , мета-круговая JVM с открытым исходным кодом , использующая библиотеку классов Apache Harmony. [40]
  • Ja.NET SE , проект с открытым исходным кодом, предоставляющий Java 5 JDK (библиотеки классов, инструменты и т. Д.), Работающий в среде CLR .NET Framework . Ja.NET SE основан на библиотеках классов Apache Harmony. [41]

В конце ноября 2006 года, языковая поддержка , обеспечиваемая эта виртуальная машина была еще не завершена, и инструкция по сборке рекомендуется использовать IBM «s собственность J9 вместо того, чтобы запустить тестовый набор библиотек классов. Однако в этом больше нет необходимости (по состоянию на июль 2007 г.).

Что касается остальной части проекта, разработка виртуальной машины DRLVM остановилась (по состоянию на май 2011 г.). [42]

Статус заявки [ править ]

С момента своего создания Harmony расширила свою способность выполнять нетривиальные Java-приложения. [43] По состоянию на июль 2007 г. поддерживаемые приложения включают:

  • Eclipse : 99,3% тестов эталонной реализации (RI) 36000 проходят в библиотеке классов Harmony DRLVM +. [44]
  • Apache Tomcat : 100% тестов RI пройдены. [45]
  • JUnit : 100% тестов RI пройдены. [46]
  • Apache Ant : 97% тестов RI проходят успешно. [47]
  • Другие приложения проходят успешно, такие как Apache Derby , Apache Axis , Log4j , Apache Velocity , Apache Cocoon , jEdit и Apache Commons .

Однако неполная библиотека Harmony не позволила запустить некоторые другие приложения:

  • ArgoUML : потому что ему нужна реализация Java-апплета , которая все еще была недоступна в Harmony.
  • Apache Geronimo работает на Apache Harmony с некоторыми проблемами и обходными путями. [48]
  • Vuze , ранее Azureus, из-за нереализованных классов безопасности.

См. Также [ править ]

  • Путь к классам GNU
  • Список виртуальных машин Java
  • Бесплатные реализации Java
  • Библиотека классов Java
  • OpenJDK
  • Чай со льдом

Ссылки [ править ]

  1. ^ «Оригинальные FAQ Вопросы от запуска проекта» . harmony.apache.org . Проверено 27 февраля 2011 года . Мы начинаем с Java SE 5, поскольку это первая версия Java SE, для которой лицензирование допускает реализацию с открытым исходным кодом, но мы продолжим работу с Java SE 6 и любыми последующими версиями.
  2. ^ a b «Статус компонента библиотеки классов» . harmony.apache.org . Проверено 27 февраля 2011 года .
  3. ^ a b Амадео, Рон (7 января 2016 г.). «Android N переходит на OpenJDK, Google сообщает Oracle, что он защищен лицензией GPL» . Ars Technica . Condé Nast . Проверено 1 июля, 2016 .
  4. ^ a b Эллисон, Тим (3 ноября 2011 г.). «Переместите Apache Harmony на чердак (обновлено)» . org.apache.harmony.dev. Архивировано из оригинального 14 декабря 2013 года . Альтернативный URL
  5. ^ a b Эллисон, Тим (16 ноября 2011 г.). «Правление приняло чердачное постановление» . org.apache.harmony.dev. Архивировано из оригинального 14 декабря 2013 года . Проверено 27 ноября 2011 года . Альтернативный URL
  6. ^ "Конец (Апачей) Гармонии" . Х. 4 ноября 2011 г.
  7. ^ Марк Wielaard (9 мая 2005). "Гармония!" . Архивировано из оригинального 16 мая 2008 года . Проверено 21 октября 2010 года . Apache подготовил предложение для обсуждения полной бесплатной реализации j2se. Который они называют «Гармонией». Речь идет (на данный момент) не о коде, а о том, как найти путь к такому зверю. Далибора, Тома, Джеруна и меня попросили помочь им в этом обсуждении и, возможно, показать им, как создать для этого хорошую архитектуру.
  8. Гейр Магнуссон младший (24 мая 2006 г.). «Предложение о бесплатной реализации Java» . Apache .
  9. ^ a b Марк Вилаард (24 мая 2006 г.). «К свободной Яве» . LWN.net . Все это означает, что, несмотря на то, что сейчас имеется некоторый доступный код, пожертвованный Intel, практического сотрудничества между исходными проектами бесплатного программного обеспечения, поддерживающими Harmony, и проектом, ныне известным как Apache Harmony, не существует. Все это заставляло некоторых людей думать о Harmony как о консорциуме компаний под видом проекта ASF, а не как о полноценном проекте сообщества.
  10. ^ "Открытое письмо Sun Microsystems - JCK" . apache.org.
  11. ^ Согласно ASF, 1) руководитель спецификации не может налагать какие-либо договорные условия или договор, которые ограничивали бы или ограничивали право любого лицензиата на создание или распространение таких независимых реализаций (раздел 5.C.III), и 2) руководитель спецификации должен лицензировать все необходимые IP без лицензионных отчислений на любую совместимую реализацию спецификации (раздел 5.B).
  12. ^ "На записи" . Архивировано из оригинального 21 апреля 2007 года.
  13. ^ «Sun to Apache:« Процесс с открытым исходным кодом - это путешествие »- Java IoT» .
  14. ^ "Молчание от открытого солнца" . Ян Скерретт .
  15. ^ "Марк Дж. Вилаард" .
  16. Гилберт, Дэйв (16 апреля 2007 г.). «Пять причин, по которым Apache пожалеет об этом открытом письме» . Архивировано из оригинала 18 апреля 2007 года . Проверено 8 марта 2008 года .
  17. ^ «Лицензионное соглашение OpenJDK Community TCK V 1.1» (PDF) . Sun Microsystems . Проверено 8 марта 2008 года . При условии и при условии, что Реализация Лицензиата в значительной степени является производной от Кода OpenJDK, и, если такая Реализация будет или должна быть передана третьей стороне, она распространяется по Лицензии GPL, Sun настоящим предоставляет Лицензиату в пределах Интеллектуальной Права собственности на TCK, всемирную личную, неисключительную, непередаваемую ограниченную лицензию на использование TCK внутри компании и исключительно в целях разработки и тестирования реализации Лицензиата.
  18. ^ "ASF уходит из Исполнительного комитета JCP" . Фонд программного обеспечения Apache.
  19. ^ «Apache покидает группу управления Java в знак протеста против злоупотреблений Oracle» . Ars Technica.
  20. ^ «Google Android SDK обходит Java ME в пользу Java Lite и Apache Harmon» . infoq.com. 12 ноября 2007 . Проверено 31 мая 2009 года . Вместо того, чтобы предоставить полную версию Java SE или Java ME, Google разделился по двум направлениям. Во-первых, предоставляется ограниченный набор основных пакетов Java. (...) Идя по этому пути, Android следует по стопам другого проекта Google, GWT, который использует Java в качестве языка разработки, но не поддерживает полный JDK.
  21. ^ "Указатель пакетов" . Откройте Handset Alliance . Архивировано 27 июня 2009 года . Проверено 31 мая 2009 года .
  22. ^ «Oracle и IBM сотрудничают, чтобы ускорить развитие Java-инноваций с помощью OpenJDK» . Корпорация Oracle . Архивировано 14 октября 2010 года . Проверено 22 октября 2010 года .
  23. ^ Райан Пол. «Войны Java: IBM присоединяется к OpenJDK, поскольку Oracle избегает Apache Harmony» . Ars Technica . Архивировано 19 октября 2010 года . Проверено 22 октября 2010 года .
  24. ^ Боб Сутор. «IBM присоединяется к сообществу OpenJDK, поможет объединить усилия по разработке Java с открытым исходным кодом» . Архивировано из оригинального 18 октября 2010 года . Проверено 22 октября 2010 года . IBM перенесет свои усилия по разработке с Apache Project Harmony на OpenJDK. Для тех, кто хочет сделать то же самое, мы будем работать вместе, чтобы сделать переход как можно проще. IBM по-прежнему будет активно участвовать в других проектах Apache.
  25. Тим Эллисон (14 марта 2011 г.). «Перезагрузка проекта Harmony» . Проверено 20 марта 2011 года .
  26. ^ "Каково будущее Apache Harmony?" . infoq.com. 14 марта 2011 . Проверено 20 марта 2011 года .
  27. ^ "Архивы списков рассылки: [email protected]" . apache.org . Проверено 11 сентября 2011 года .
  28. ^ a b «Протокол заседания Совета директоров» . Фонд программного обеспечения Apache. 16 ноября 2011 . Проверено 8 августа 2012 года . Ларри хотел бы отметить, что он не против увольнения, он просто предпочел бы иметь больше времени для работы над сообщениями.
  29. Лео Саймонс (24 июля 2006 г.). «Мы бы хотели, чтобы все разработки происходили прямо здесь» . Архивировано из оригинального 29 сентября 2007 года . Проверено 28 июля 2006 года .
  30. ^ "Путь Апачей" . Архивировано из оригинального 21 августа 2006 года . Проверено 28 июля 2006 года .
  31. ^ Команда документации Harmony. «Apache Harmony - Поддерживаемые платформы» . harmony.apache.org.
  32. ^ "Результаты сравнения JDK_5.0 и 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. ^ "Хармони использует последние банки Йоко ..." 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 - Дорожная карта проекта" .
  39. ^ «[общие] Выпущен JRockit H27.2.1 для библиотеки классов Harmony» .
  40. ^ "Представляем Jikes RVM 3.0 + Apache Harmony!" .
  41. ^ "Джанет Дев" .
  42. ^ "Subversion Commits" . harmony.apache.org . Проверено 28 мая 2011 года .
  43. ^ "Application_Status" . apache.org. Архивировано из оригинального 10 августа 2007 года . Проверено 4 ноября 2006 года .
  44. ^ "Архивная копия" . Архивировано из оригинала 8 февраля 2007 года . Проверено 4 ноября 2006 года .CS1 maint: заархивированная копия как заголовок ( ссылка )
  45. ^ "Apache_Tomcat" . apache.org. Архивировано из оригинального 10 февраля 2007 года . Проверено 4 ноября 2006 года .
  46. ^ "JUnit" . apache.org.
  47. ^ "Apache_Ant" . apache.org. Архивировано из оригинального 10 февраля 2007 года . Проверено 4 ноября 2006 года .
  48. ^ «Гармония Апачей» . apache.org.

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Часто задаваемые вопросы об Apache Harmony
  • Репозиторий исходного кода Apache Harmony
  • Сессия JavaOne 2006 Online Harmony
  • Сессия JavaOne 2007 Online Harmony
  • Гармония Apache от Гейра Магнуссона-младшего на JavaPolis 2006
  • Дебаты с открытым исходным кодом Java - хорошее резюме дебатов
  • Каково будущее Apache Harmony?
  • Apache Harmony теряет менеджера проекта