![]() | Фактическая точность частей этой статьи (тех , которые касаются статей) может быть поставлена под угрозу из - за устарелую информацию . ( Февраль 2013 г. ) |
![]() | |||||
Разработчики) | Фонд программного обеспечения Apache | ||||
---|---|---|---|---|---|
Окончательный релиз |
| ||||
Репозиторий | ![]() | ||||
Написано в | C , Java | ||||
Операционная система | Linux , Windows | ||||
Тип | Виртуальная машина Java, библиотека Java | ||||
Лицензия | Лицензия Apache 2.0 | ||||
Интернет сайт | гармония |
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 состоит из следующих компонентов:
- Ядро виртуальной машины: с его подкомпонентами сосредоточено большинство функций управления JVM.
- Уровень переноса : скрывает специфические для платформы детали от других компонентов виртуальных машин за единым интерфейсом и основан на уровне Apache Portable Runtime .
- Сборщик мусора : выделяет Java объекты в памяти кучи и высвобождает недостижимые объекты , используя различные алгоритмы
- Execution Manager : выбирает механизм выполнения для компиляции метода, обрабатывает профили и логику динамической перекомпиляции.
- Библиотека классов : стандартная библиотека Java.
- Диспетчер потоков, который обрабатывает потоки операционной системы
- Механизм выполнения: состоит из следующего:
- Компилятор просто по времени для компиляции и выполнения метода кода.
- Интерпретатор для облегчения отладки.
Платформа поддержки и операционная система [ править ]
Проект предоставил переносимую реализацию, упрощающую разработку на многих платформах и операционных системах. Основное внимание уделялось операционным системам Windows и Linux на архитектурах x86 и x86-64. [31]
Windows 2000 | Windows XP , Server 2003 , Vista | Linux RHEL , SLES , Debian , Gentoo , Fedora | FreeBSD | AIX | Mac OS X | |
---|---|---|---|---|---|---|
IA-32 (Pentium III или лучше) | Нет | да | да | Нет | N / A | N / A |
x86-64 (Intel 64, AMD64) | N / A | да | да | N / A | N / A | N / A |
Itanium (IA64, IPF) | N / A | Нет | да | N / A | N / A | N / A |
PowerPC 32-разрядный | N / A | N / A | Нет | N / A | N / A | N / A |
PowerPC 64-разрядная | N / A | N / A | Нет | N / A | Нет | N / A |
zСерия 31-бит | N / A | N / A | Нет | N / A | N / A | N / A |
Покрытие библиотеки классов [ править ]
Ожидаемые пожертвования от софтверных компаний были получены. 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; некоторые из них использовались до начала проекта.
Компонент | Описание |
---|---|
ICU | Зрелые библиотеки C / C ++ и Java для поддержки Unicode, интернационализации и глобализации программного обеспечения |
Апач Ксалан | Обработчик таблиц стилей XSLT для Java , C ++, реализующий язык XPath |
Apache Xerces | Библиотека парсера XML для Java, C ++, Perl |
Портативная среда выполнения Apache | Кросс-платформенная библиотека абстракций, обеспечивает независимость от платформы |
Apache CXF | Надежная, высокопроизводительная структура веб-сервисов работает по таким протоколам, как SOAP , XML / HTTP, RESTful HTTP, CORBA |
BCEL | Библиотеки для декомпозиции, изменения и перекомпоновки двоичных классов Java, т. Е. Байт-кода. |
MX4J | Инструменты Java Management Extensions (JMX) для управления и мониторинга приложений, системных объектов, устройств и сервис-ориентированных сетей. |
ВМ Магия | Набор расширений языка Java для облегчения системного программирования на Java путем добавления прямых операций с памятью и т. Д. |
Надувной Замок | Коллекция библиотек облегченной криптографии для Java и C # |
ANTLR | Языковой инструмент, предоставляет основу для создания распознавателей, интерпретаторов, компиляторов и переводчиков из грамматических описаний, содержащих действия на многих целевых языках. |
Документация [ править ]
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
- Чай со льдом
Ссылки [ править ]
- ^ «Оригинальные FAQ Вопросы от запуска проекта» . harmony.apache.org . Проверено 27 февраля 2011 года .
Мы начинаем с Java SE 5, поскольку это первая версия Java SE, для которой лицензирование допускает реализацию с открытым исходным кодом, но мы продолжим работу с Java SE 6 и любыми последующими версиями.
- ^ a b «Статус компонента библиотеки классов» . harmony.apache.org . Проверено 27 февраля 2011 года .
- ^ a b Амадео, Рон (7 января 2016 г.). «Android N переходит на OpenJDK, Google сообщает Oracle, что он защищен лицензией GPL» . Ars Technica . Condé Nast . Проверено 1 июля, 2016 .
- ^ a b Эллисон, Тим (3 ноября 2011 г.). «Переместите Apache Harmony на чердак (обновлено)» . org.apache.harmony.dev. Архивировано из оригинального 14 декабря 2013 года . Альтернативный URL
- ^ a b Эллисон, Тим (16 ноября 2011 г.). «Правление приняло чердачное постановление» . org.apache.harmony.dev. Архивировано из оригинального 14 декабря 2013 года . Проверено 27 ноября 2011 года . Альтернативный URL
- ^ "Конец (Апачей) Гармонии" . Х. 4 ноября 2011 г.
- ^ Марк Wielaard (9 мая 2005). "Гармония!" . Архивировано из оригинального 16 мая 2008 года . Проверено 21 октября 2010 года .
Apache подготовил предложение для обсуждения полной бесплатной реализации j2se.
Который они называют «Гармонией».
Речь идет (на данный момент) не о коде, а о том, как найти путь к такому зверю.
Далибора, Тома, Джеруна и меня попросили помочь им в этом обсуждении и, возможно, показать им, как создать для этого хорошую архитектуру.
- ↑ Гейр Магнуссон младший (24 мая 2006 г.). «Предложение о бесплатной реализации Java» . Apache .
- ^ a b Марк Вилаард (24 мая 2006 г.). «К свободной Яве» . LWN.net .
Все это означает, что, несмотря на то, что сейчас имеется некоторый доступный код, пожертвованный Intel, практического сотрудничества между исходными проектами бесплатного программного обеспечения, поддерживающими Harmony, и проектом, ныне известным как Apache Harmony, не существует.
Все это заставляло некоторых людей думать о Harmony как о консорциуме компаний под видом проекта ASF, а не как о полноценном проекте сообщества.
- ^ "Открытое письмо Sun Microsystems - JCK" . apache.org.
- ^ Согласно ASF, 1) руководитель спецификации не может налагать какие-либо договорные условия или договор, которые ограничивали бы или ограничивали право любого лицензиата на создание или распространение таких независимых реализаций (раздел 5.C.III), и 2) руководитель спецификации должен лицензировать все необходимые IP без лицензионных отчислений на любую совместимую реализацию спецификации (раздел 5.B).
- ^ "На записи" . Архивировано из оригинального 21 апреля 2007 года.
- ^ «Sun to Apache:« Процесс с открытым исходным кодом - это путешествие »- Java IoT» .
- ^ "Молчание от открытого солнца" . Ян Скерретт .
- ^ "Марк Дж. Вилаард" .
- ↑ Гилберт, Дэйв (16 апреля 2007 г.). «Пять причин, по которым Apache пожалеет об этом открытом письме» . Архивировано из оригинала 18 апреля 2007 года . Проверено 8 марта 2008 года .
- ^ «Лицензионное соглашение OpenJDK Community TCK V 1.1» (PDF) . Sun Microsystems . Проверено 8 марта 2008 года .
При условии и при условии, что Реализация Лицензиата в значительной степени является производной от Кода OpenJDK, и, если такая Реализация будет или должна быть передана третьей стороне, она распространяется по Лицензии GPL, Sun настоящим предоставляет Лицензиату в пределах Интеллектуальной Права собственности на TCK, всемирную личную, неисключительную, непередаваемую ограниченную лицензию на использование TCK внутри компании и исключительно в целях разработки и тестирования реализации Лицензиата.
- ^ "ASF уходит из Исполнительного комитета JCP" . Фонд программного обеспечения Apache.
- ^ «Apache покидает группу управления Java в знак протеста против злоупотреблений Oracle» . Ars Technica.
- ^ «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.
- ^ "Указатель пакетов" . Откройте Handset Alliance . Архивировано 27 июня 2009 года . Проверено 31 мая 2009 года .
- ^ «Oracle и IBM сотрудничают, чтобы ускорить развитие Java-инноваций с помощью OpenJDK» . Корпорация Oracle . Архивировано 14 октября 2010 года . Проверено 22 октября 2010 года .
- ^ Райан Пол. «Войны Java: IBM присоединяется к OpenJDK, поскольку Oracle избегает Apache Harmony» . Ars Technica . Архивировано 19 октября 2010 года . Проверено 22 октября 2010 года .
- ^ Боб Сутор. «IBM присоединяется к сообществу OpenJDK, поможет объединить усилия по разработке Java с открытым исходным кодом» . Архивировано из оригинального 18 октября 2010 года . Проверено 22 октября 2010 года .
IBM перенесет свои усилия по разработке с Apache Project Harmony на OpenJDK.
Для тех, кто хочет сделать то же самое, мы будем работать вместе, чтобы сделать переход как можно проще.
IBM по-прежнему будет активно участвовать в других проектах Apache.
- ↑ Тим Эллисон (14 марта 2011 г.). «Перезагрузка проекта Harmony» . Проверено 20 марта 2011 года .
- ^ "Каково будущее Apache Harmony?" . infoq.com. 14 марта 2011 . Проверено 20 марта 2011 года .
- ^ "Архивы списков рассылки: [email protected]" . apache.org . Проверено 11 сентября 2011 года .
- ^ a b «Протокол заседания Совета директоров» . Фонд программного обеспечения Apache. 16 ноября 2011 . Проверено 8 августа 2012 года .
Ларри хотел бы отметить, что он не против увольнения, он просто предпочел бы иметь больше времени для работы над сообщениями.
- ↑ Лео Саймонс (24 июля 2006 г.). «Мы бы хотели, чтобы все разработки происходили прямо здесь» . Архивировано из оригинального 29 сентября 2007 года . Проверено 28 июля 2006 года .
- ^ "Путь Апачей" . Архивировано из оригинального 21 августа 2006 года . Проверено 28 июля 2006 года .
- ^ Команда документации Harmony. «Apache Harmony - Поддерживаемые платформы» . harmony.apache.org.
- ^ "Результаты сравнения JDK_5.0 и Harmony_5.0" .
- ^ http://cvs.savannah.gnu.org/viewcvs/*checkout*/classpath/org/omg/CORBA/ORB.java?rev=1.2.2.12&root=classpath [ постоянная мертвая ссылка ]
- ^ http://cvs.savannah.gnu.org/viewcvs/*checkout*/classpath/gnu/CORBA/OrbFunctional.java?rev=1.6&root=classpath [ постоянная мертвая ссылка ]
- ^ "Хармони использует последние банки Йоко ..." 27 сентября 2006 г.
- ^ http://svn.apache.org/repos/asf/incubator/yoko/trunk/yoko-spec-corba/src/main/java/org/omg/CORBA/ORB.java
- ^ http://svn.apache.org/repos/asf/incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OBCORBA/ORB_impl.java
- ^ "Apache Harmony - Дорожная карта проекта" .
- ^ «[общие] Выпущен JRockit H27.2.1 для библиотеки классов Harmony» .
- ^ "Представляем Jikes RVM 3.0 + Apache Harmony!" .
- ^ "Джанет Дев" .
- ^ "Subversion Commits" . harmony.apache.org . Проверено 28 мая 2011 года .
- ^ "Application_Status" . apache.org. Архивировано из оригинального 10 августа 2007 года . Проверено 4 ноября 2006 года .
- ^ "Архивная копия" . Архивировано из оригинала 8 февраля 2007 года . Проверено 4 ноября 2006 года .CS1 maint: заархивированная копия как заголовок ( ссылка )
- ^ "Apache_Tomcat" . apache.org. Архивировано из оригинального 10 февраля 2007 года . Проверено 4 ноября 2006 года .
- ^ "JUnit" . apache.org.
- ^ "Apache_Ant" . apache.org. Архивировано из оригинального 10 февраля 2007 года . Проверено 4 ноября 2006 года .
- ^ «Гармония Апачей» . apache.org.
Внешние ссылки [ править ]
- Официальный веб-сайт
- Часто задаваемые вопросы об Apache Harmony
- Репозиторий исходного кода Apache Harmony
- Сессия JavaOne 2006 Online Harmony
- Сессия JavaOne 2007 Online Harmony
- Гармония Apache от Гейра Магнуссона-младшего на JavaPolis 2006
- Дебаты с открытым исходным кодом Java - хорошее резюме дебатов
- Каково будущее Apache Harmony?
- Apache Harmony теряет менеджера проекта