Разработчик (и) | Apache Software Foundation | ||||
---|---|---|---|---|---|
Окончательный выпуск |
| ||||
Репозиторий | |||||
Написано на | C, Java | ||||
Операционная система | Windows, Linux | ||||
Тип | Виртуальная машина Java, Java Библиотека | ||||
Лицензия | Лицензия Apache 2.0 | ||||
Веб-сайт | harmony.apache.org |
Apache Harmony - это устаревшая с открытым исходным кодом, бесплатная реализация Java, разработанная Фонд программного обеспечения Apache. Об этом было объявлено в начале мая 2005 года, а 25 октября 2006 года Совет директоров проголосовал за превращение Apache Harmony в проект высшего уровня. Проект Harmony достиг (по состоянию на февраль 2011 г.) 99% полноты для J2SE 5.0 и 97% для Java SE 6. Операционная система Android исторически была основным пользователем Harmony, хотя, начиная с Android Nougat, она все больше полагается на библиотеки OpenJDK.
Октябрь 29 ноября 2011 года руководитель проекта Тим Эллисон начал голосование по вопросу о прекращении проекта. Результат был 20 против 2, и проект был закрыт 16 ноября 2011 года.
Проект Harmony изначально задумывался как попытка объединить всех разработчиков бесплатных реализаций Java. Многие разработчики ожидали, что это будет проект выше GNU, Apache и других сообществ. Разработчики GNU были приглашены и участвовали во время начального подготовительного планирования.
Несмотря на впечатление, произведенное подготовительным планированием, было решено не использовать код из GNU Classpath, и что Harmony будет использовать несовместимую лицензию; тем самым блокируя сотрудничество между Harmony и существующими бесплатными проектами Java. Разработчики Apache тогда напишут необходимые классы с нуля и будут ожидать необходимых крупных пожертвований кода от компаний-разработчиков программного обеспечения. Различные недоразумения в начале проекта, а также тот факт, что крупные компании, такие как IBM, предложили предоставить большой объем существующего кода, вызвали некоторую путаницу в сообществе свободной Java в отношении реальных целей проекта.
Одним из основных моментов несовместимости между проектами GNU Classpath и Apache Harmony были несовместимые лицензии: Стандартная общественная лицензия GNU Classpath с исключением связи по сравнению с лицензией Apache от Harmony..
10 апреля 2007 года Apache Software Foundation отправил открытое письмо в Sun Microsystems Генеральный директор, Джонатан Шварц в связи с невозможностью получить приемлемую лицензию на Java SE 5 Technology Compatibility Kit (TCK), тестовый комплект, необходимый для проект для демонстрации совместимости со спецификацией Java SE 5, как того требует лицензия на спецификацию Sun для Java SE 5. Wha t делает лицензию неприемлемой для ASF, потому что она налагает ограничения прав через ограничения на «область использования», доступную для пользователей Harmony, что не соответствует правилам Java Community Process.
Sun ответила в блоге компании, что намеревается создать реализацию платформы Java с открытым исходным кодом под GPL, включая TCK, но их приоритетом было сделать Платформа Java доступна сообществу GNU / Linux под GPL как можно быстрее.
Этот ответ вызвал определенную реакцию: либо критику Sun за то, что он не ответил «достаточно открыто» на открытое письмо, либо, скорее, Apache Software Foundation ; некоторые считают, что ASF поступил неразумно, агрессивно требуя от Sun чего-то, что они могли бы получить с большей дипломатичностью, особенно с учетом временных рамок библиотеки начальных классов.
Sun выпустила OpenJDK в мае 2007 года, вместе с конкретной лицензией, позволяющей запускать TCK в контексте OpenJDK для любой реализации GPL, в значительной степени основанной на OpenJDK. Это не распространяется на Apache Harmony, на который не распространяется GPL. 9 декабря 2010 г. Apache Software Foundation вышла из состава Исполнительного комитета процесса сообщества Java в знак протеста против трудностей с получением лицензии, приемлемой для Apache для использования с проектом Harmony.
Виртуальная машина, которая используется на платформе Google Android (Dalvik до версии 4.4 и его преемнике, Android Runtime (ART)) использует подмножество Harmony в качестве ядра своей Библиотеки классов. Однако Dalvik не выравнивается ни с Java SE, ни с профилями Java ME Class Library (например, J2ME классы, AWT и Swing не поддерживаются).
Android 7.0 "Nougat" заменил Harmony на OpenJDK.
11 октября 2010 г. IBM, безусловно, самый крупный участник в проекте решил присоединиться к Oracle в проекте OpenJDK, эффективно переключив свои усилия с Harmony на эталонную реализацию Oracle. Боб Сутор, глава IBM по Linux и ПО с открытым исходным кодом, написал в блоге, что «IBM перенесет свои усилия по разработке с Apache Project Harmony на OpenJDK». В марте 2011 года Тим Эллисон из IBM объявил, что ушел с поста председателя по управлению проектами в Harmony. После выхода IBM уровень активности проекта значительно снизился.
29 октября 2011 года был проведен опрос был начат в списке рассылки harmony-dev руководителем проекта Тимом Эллисоном о том, следует ли закрыть проект. Результат 3 ноября был 20: 2 в пользу выхода на пенсию. 16 ноября 2011 года совет директоров Apache Software Foundation принял предложение о прекращении проекта. Один директор, Ларри Розен, проголосовал «против», основываясь на времени, а не на достоинствах предложения; в остальном он был единодушен. Проект был закрыт 16 ноября 2011 года.
Вначале Apache Harmony получила несколько крупных взносов кода от нескольких компаний. Обсуждения разработки проходили в открытых списках рассылки. Позже наставники фонда Apache Software приложили много усилий для того, чтобы привести процесс разработки в соответствие с «подходом Apache», и казалось, что их усилия увенчались успехом.
Apache Harmony был принят в число официальных проектов Apache 29 октября 2006 г.
Виртуальная машина Dynamic Runtime Layer состоит из из следующих компонентов:
Проект предоставил переносимую реализацию, упрощающую разработку на многих платформы и операционные системы. Основное внимание уделялось операционным системам Windows и Linux на архитектурах x86 и x86-64.
Windows 2000 | Windows XP, Server 2003, Vista | Linux RHEL, SLES, Debian, Gentoo, Fedora | FreeBSD | AIX | Mac OS X | |
---|---|---|---|---|---|---|
IA-32 (Pentium III или выше) | Нет | Да | Да | Нет | Н / Д | Н / Д |
x86-64 (Intel 64, AMD64) | Н / Д | Да | Да | Н / Д | Н / Д | Н / Д |
Itanium (IA64, IPF) | Н / Д | Нет | Да | Н / Д | Н / Д | Н / Д |
32-битный PowerPC | Н / Д A | Н / Д | Нет | Н / Д | Н / Д | Н / Д |
PowerPC 64- бит | н / д | н / п | н / д | н / д | н / д | н / д |
zSeries 31-бит | Н / Д | Н / Д | Нет | Н / Д | Н / Д | Н / Д |
Ожидаемые пожертвования от компаний-разработчиков программного обеспечения были eived. Apache Harmony теперь содержит рабочий код, включая код Swing, AWT и Java 2D, которые были предоставлены Intel.
по состоянию на февраль. В 2011 году проект Harmony достиг 99% завершенности для JDK 5.0 и 97% для Java SE 6.
. Прогресс проекта Apache Harmony можно отслеживать по J2SE 1.4 и Java SE 5.0. Кроме того, в разработке для Java SE 6.0 находится ветка Harmony v6.0.
Разработчики Apache Harmony объединяют несколько существующих, протестированных на практике проектов с открытым исходным кодом для достижения своей цели (не изобретать колесо ). Многие из этих проектов являются зрелыми и хорошо известными, а другие части библиотеки нужно было писать с нуля.
Это список существующих компонентов с открытым исходным кодом, которые используются в проекте Apache Harmony; некоторые из них использовались до начала проекта.
Компонент | Описание |
---|---|
ICU | Зрелые библиотеки C / C ++ и Java для поддержки Unicode и интернационализации и глобализации программного обеспечения |
Apache Xalan | XSLT обработчик таблиц стилей для Java, C ++, который реализует XPath язык |
Apache Xerces | Библиотека парсера XML для Java, C ++, Perl |
Apache Portable Runtime | Кросс-платформенная библиотека абстракции, обеспечивает независимость от платформы |
Apache CXF | Надежная, высокопроизводительная структура веб-сервисов работает через протоколы такие как SOAP, XML / HTTP, RESTful HTTP, CORBA |
BCEL | Библиотеки для декомпозиции, изменения и перекомпоновки двоичных классов Java, т. е. байт-код |
MX4J | Java Management Extensions (JMX) инструменты для управления и мониторинга приложений, системных объектов, устройств и сервис-ориентированных сетей |
VM Magic | Набор расширений языка Java для облегчения системное программирование на Java путем добавления операций с прямой памятью и т. д. |
Bouncy Castle | Коллекция библиотек облегченной криптографии для Java и C# |
ANTLR | языковой инструмент, предоставляет основу для создания распознавателей, интерпретаторов, компиляторов и переводчиков из грамматических описаний, содержащих действия во многих целевые языки |
Harmony менее документирован, чем альтернативные бесплатные реализации Java. Например, в GNU Classpath каждый метод центрального класса CORBA (ORB) имеет поясняющий комментарий как в стандартном абстрактном классе API, так и в реализации. В проекте Yoko, используемом Harmony, большинство методов как в стандартном объявлении, так и в реализующем классе были недокументированы в конце октября 2006 года. Кроме того, GNU Classpath поддерживал как старые, так и новые функции CORBA (такие же, как реализация Sun). Иначе говоря, Harmony оставила полностью нереализованным центральный метод старого стандарта (ORB.connect (Object)
).
Полная реализация платформы Java также требует компилятора, который переводит исходный код Java в байт-коды, программу, которая управляет JAR-файлы, отладчик и апплет просмотрщик и веб-браузер плагин, и это лишь некоторые из них. Harmony имеет компилятор, appletviewer, jarsigner, javah, javap, keytool, policytool и unpack200.
Harmony имеет семь реализаций виртуальной машины, на которых запущена библиотека классов Harmony, все из которых были пожертвованы внешними группами:
В конце ноября 2006 года языковая поддержка, предоставляемая этой виртуальной машиной, была еще неполной, и инструкции по сборке рекомендовали использовать IBM ' s проприетарный J9 вместо запуска набора тестов библиотеки классов. Однако в этом больше нет необходимости (по состоянию на июль 2007 г.).
Что касается остальной части проекта, разработка виртуальной машины DRLVM остановлена (по состоянию на май 2011 г.).
Концепция, Harmony выросла в своей способности выполнять нетривиальные Java-приложения. По состоянию на июль 2007 г. поддерживаемые приложения включают:
Однако неполная библиотека Harmony не позволяла запускать некоторые другие приложения: