Апач Гармония
Фактическая точность частей этой статьи (относящихся к статье) может быть поставлена под угрозу из-за устаревшей информации . ( февраль 2013 г. ) |
Разработчик(и) | Фонд программного обеспечения Apache | ||||
---|---|---|---|---|---|
Финальный выпуск |
| ||||
Репозиторий | |||||
Написано в | С , Ява | ||||
Операционная система | Линукс , Винда | ||||
Тип | Виртуальная машина Java Java , библиотека | ||||
Лицензия | Лицензия Апач 2.0 | ||||
Веб-сайт | harmony.apache.org |
Apache Harmony — устаревшая открытым исходным кодом с бесплатная реализация Java , разработанная Apache Software Foundation . [1] Об этом было объявлено в начале мая 2005 года, а 25 октября 2006 года совет директоров проголосовал за то, чтобы сделать Apache Harmony проектом высшего уровня. Проект Harmony достиг (по состоянию на февраль 2011 г.) полноты 99% для J2SE 5.0 и 97% для Java SE 6 . [2] Операционная система Android исторически была основным пользователем Harmony, хотя со времен Android Nougat она все больше полагается на OpenJDK . библиотеки [3]
29 октября 2011 года руководитель проекта Тим Эллисон начал голосование по поводу прекращения проекта. Результат был 20:2 в пользу. [4] и проект был закрыт 16 ноября 2011 года. [5] [6]
История
[ редактировать ]Инициация
[ редактировать ]Проект Harmony изначально задумывался как попытка объединить всех разработчиков свободных реализаций Java . Многие разработчики ожидали, что это будет проект выше [ нужны разъяснения ] GNU и другие сообщества , Apache . Разработчики GNU были приглашены и участвовали в первоначальном подготовительном планировании. [7] Затем Apache решил не использовать код из GNU Classpath , поскольку хотел, чтобы Harmony был доступен по лицензии Apache v2. [8] Затем разработчики Apache писали необходимые классы с нуля и ожидали необходимых крупных пожертвований кода от компаний-разработчиков программного обеспечения . Различные недопонимания в начале проекта и предложения крупных компаний, таких как IBM , о пожертвовании большого количества существующего кода, побудили некоторых людей в сообществе свободного Java рассматривать проект как корпоративный консорциум, а не как проект Apache. [9]
Одним из основных моментов несовместимости между проектами GNU Classpath и Apache Harmony были их несовместимые лицензии: Генеральная общественная лицензия GNU Classpath с исключением связывания Harmony и лицензия Apache . [9]
Сложности получения лицензии TCK от Sun
[ редактировать ]10 апреля 2007 года Apache Software Foundation направил открытое письмо генеральному Sun Microsystems директору Джонатану Шварцу относительно невозможности получить приемлемую лицензию для Java SE 5 Technology Compatibility Kit (TCK), тестового набора, необходимого проекту для демонстрации совместимость со спецификацией Java SE 5, как того требует лицензия Sun на спецификацию Java SE 5. [10] Что делает лицензию неприемлемой для ASF, так это тот факт, что она налагает ограничения прав посредством ограничений на «область использования», доступную пользователям Harmony, что не соответствует правилам Java Community Process . [11]
Сан ответил в блоге компании [12] [13] что они намеревались создать реализацию платформы Java с открытым исходным кодом под лицензией GPL , включая TCK, но их приоритетом было сделать платформу Java доступной для сообщества 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 от Android платформе ( Dalvik до версии 4.4 и ее преемник, Android Runtime (ART)) использует подмножество Harmony для ядра своей библиотеки классов . [20] [21] Однако Dalvik не соответствует Java SE и Java ME профилям библиотеки классов (например, 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 состоит из следующих компонентов:
- Ядро VM: с его подкомпонентами концентрируется большая часть функций управления JVM.
- Уровень портирования : скрывает детали, специфичные для платформы, от других компонентов виртуальной машины за единым интерфейсом и основан на слое Apache Portable Runtime .
- Сборщик мусора : выделяет объекты Java в куче памяти и освобождает недоступные объекты, используя различные алгоритмы.
- Диспетчер выполнения : выбирает механизм выполнения для компиляции метода, обрабатывает профили и логику динамической перекомпиляции.
- Библиотека классов : стандартная библиотека Java.
- Менеджер потоков , который управляет потоками операционной системы.
- Механизм выполнения: состоит из следующего:
- JIT -компилятор для компиляции и выполнения кода метода.
- Интерпретатор для облегчения отладки.
Поддержка платформы и операционной системы
[ редактировать ]Проект предоставил портативную реализацию, упрощающую разработку на многих платформах и операционных системах. Основное внимание было уделено операционным системам Windows и Linux на архитектурах x86 и x86-64. [31]
Windows 2000 | Windows XP , Сервер 2003 , Виста | Linux RHEL , SLES , Debian , Gentoo , Fedora | FreeBSD | ЭКС | Мак ОС Х | |
---|---|---|---|---|---|---|
IA-32 (Pentium III или лучше) | Нет | Да | Да | Нет | — | — |
x86-64 (Интел 64, AMD64) | — | Да | Да | — | — | — |
Итан (IA64, IPF) | — | Нет | Да | — | — | — |
PowerPC 32-разрядная версия | — | — | Нет | — | — | — |
PowerPC 64-разрядная версия | — | — | Нет | — | Нет | — |
zSeries 31-разрядная версия | — | — | Нет | — | — | — |
Охват библиотеки классов
[ редактировать ]Ожидаемые пожертвования от компаний-разработчиков программного обеспечения были фактически получены. Apache Harmony теперь содержит рабочий код, включая код Swing , AWT и Java 2D , предоставленный Intel .
По состоянию на февраль 2011 г. [update], проект Harmony достиг 99% полноты для JDK 5.0 и 97% для Java SE 6 . [2]
Прогресс проекта Apache Harmony можно отслеживать по J2SE 1.4 и Java SE 5.0. [32] Кроме того, в разработке находится ветка Harmony v6.0 для Java SE 6.0.
Разработчики Apache Harmony интегрируют несколько существующих, проверенных на практике проектов с открытым исходным кодом для достижения своей цели (не изобретая велосипед ). Многие из этих проектов являются зрелыми и хорошо известными, а другие части библиотеки необходимо было писать с нуля.
Это список существующих компонентов с открытым исходным кодом, которые используются в проекте Apache Harmony; некоторые из них использовались до начала проекта.
Компонент | Описание |
---|---|
отделение интенсивной терапии | Развитые библиотеки C/C++ и Java для Unicode поддержки , а также интернационализации и глобализации программного обеспечения. |
Апач Ксалан | Процессор таблиц стилей XSLT для Java , C++, реализующий XPath. язык |
Апач Ксерцес | Библиотека синтаксического анализатора XML для Java, C++, Perl |
Портативная среда выполнения Apache | Межплатформенная библиотека абстракций, обеспечивающая независимость от платформы. |
Апач CXF | Надежная, высокопроизводительная платформа веб-сервисов, работающая по таким протоколам, как SOAP , XML/HTTP, RESTful HTTP, CORBA. |
БКЭЛ | Библиотеки для декомпозиции, изменения и перекомпоновки двоичных классов Java, т. е. байт-кода. |
MX4J | Инструменты Java Management Extensions (JMX) для управления и мониторинга приложений, системных объектов, устройств и сервис-ориентированных сетей. |
ВМ Магия | Набор расширений языка Java для облегчения системного программирования на Java путем добавления операций с прямой памятью и т. д. |
Надувной замок | Коллекция библиотек облегченной криптографии для Java и C#. |
АНТЛР | Языковой инструмент предоставляет основу для создания распознавателей, интерпретаторов, компиляторов и переводчиков на основе грамматических описаний, содержащих действия на многих целевых языках. |
Документация
[ редактировать ]Harmony менее документирована, чем альтернативные бесплатные реализации Java. Например, в GNU Classpath каждый метод центрального класса CORBA (ORB) имеет поясняющий комментарий как в стандартном абстрактном классе API, так и в стандартном абстрактном классе API. [33] и реализация. [34] В проекте Yoko, используемом Harmony, [35] большинство методов как в стандартном объявлении [36] и реализация класса [37] были недокументированы в конце октября 2006 года. Кроме того, GNU Classpath поддерживал как старые, так и новые функции CORBA (так же, как реализация Sun). Гармония, напротив, оставила центральный метод старого стандарта ( 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 (библиотеки классов, инструменты и т. д.), работающий в среде .NET Framework CLR. Ja.NET SE основан на библиотеках классов Apache Harmony. [41]
В конце ноября 2006 года языковая поддержка, обеспечиваемая этими виртуальными машинами, все еще была неполной, и инструкции по сборке рекомендовали вместо этого использовать IBM J9 от собственный для запуска набора тестов библиотеки классов. Однако в этом больше нет необходимости (по состоянию на июль 2007 г.).
Что касается остальной части проекта, разработка виртуальной машины DRLVM сейчас застопорилась (по состоянию на май 2011 г.). [42]
Статус заявки
[ редактировать ]С момента своего создания Harmony расширила возможности выполнения нетривиальных Java-приложений. [43] По состоянию на июль 2007 г. [update], поддерживаемые приложения включают:
- Eclipse : 99,3% тестов эталонной реализации (RI) 36000 прошли проверку библиотеки классов DRLVM + компании Harmony. [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
- ХолодныйЧай
Ссылки
[ редактировать ]- ^ «Оригинальные часто задаваемые вопросы по запуску проекта» . Harmony.apache.org . Проверено 27 февраля 2011 г.
Мы начинаем с Java SE 5, поскольку это первая версия Java SE, для которой лицензия допускает реализацию с открытым исходным кодом, но мы продолжим с Java SE 6 и всех последующих версий.
- ^ Перейти обратно: а б «Состояние компонента библиотеки классов» . Harmony.apache.org . Проверено 27 февраля 2011 г.
- ^ Перейти обратно: а б Амадео, Рон (7 января 2016 г.). «Android N переключается на OpenJDK, Google сообщает Oracle, что он защищен лицензией GPL» . Арс Техника . Конде Наст . Проверено 1 июля 2016 г.
- ^ Перейти обратно: а б Эллисон, Тим (3 ноября 2011 г.). «Переместить Apache Harmony на чердак (обновлено)» . org.apache.harmony.dev. Архивировано из оригинала 14 декабря 2013 г. Альтернативный URL. Архивировано 7 февраля 2013 г. в Wayback Machine.
- ^ Перейти обратно: а б Эллисон, Тим (16 ноября 2011 г.). «Правление приняло чердачное постановление» . org.apache.harmony.dev. Архивировано из оригинала 14 декабря 2013 года . Проверено 27 ноября 2011 г. Альтернативный URL. Архивировано 14 марта 2013 г. на Wayback Machine.
- ^ «Конец (Apache) гармонии» . Х. 4 ноября 2011 г.
- ^ Марк Вилаард (9 мая 2005 г.). «Гармония!» . Архивировано из оригинала 16 мая 2008 года . Проверено 21 октября 2010 г.
Apache выдвинул предложение для обсуждения полной бесплатной реализации j2se. Который они называют «Гармония». Речь идет (на данный момент) не о коде, а о поиске направления, как добраться до такого зверя. Далибора, Тома, Джеруна и меня попросили помочь им в этом обсуждении и, возможно, показать, как создать для него хорошую архитектуру.
- ^ Гейр Магнуссон-младший (24 мая 2006 г.). «Предложение по бесплатной реализации Java» . Апач .
- ^ Перейти обратно: а б Марк Вилаард (24 мая 2006 г.). «На пути к свободной Java» . LWN.net .
Все это означает, что, несмотря на то, что сейчас имеется некоторый код, подаренный Intel, практического сотрудничества между первоначальными проектами бесплатного программного обеспечения, поддерживающими Harmony, и проектом, теперь известным как Apache Harmony, не существует. Все это заставило некоторых людей думать о Harmony как о консорциуме компаний под видом проекта ASF, а не как о полноценном общественном проекте.
- ^ «Открытое письмо Sun Microsystems — JCK» . apache.org.
- ^ Согласно ASF, 1) руководитель спецификации не может налагать какие-либо договорные условия или обязательства, которые ограничивали бы право любого лицензиата создавать или распространять такие независимые реализации (раздел 5.C.III), и 2) руководитель спецификации должен лицензировать всю необходимую интеллектуальную собственность без лицензионных отчислений для любой совместимой реализации спецификации (раздел 5.B).
- ^ «В записи» . Архивировано из оригинала 21 апреля 2007 года.
- ^ «Sun to Apache: «Процесс с открытым исходным кодом — это путешествие» — Java IoT» . Архивировано из оригинала 9 июля 2008 года . Проверено 14 апреля 2007 г.
- ^ «Тишина открытого солнца» . Ян Скерретт . 16 апреля 2007 г.
- ^ «Марк Дж. Вилаард» Архив блога » OpenJCK» . Проверено 27 августа 2023 г.
- ^ Гилберт, Дэйв (16 апреля 2007 г.). «Пять причин, по которым Apache пожалеет об этом открытом письме» . Архивировано из оригинала 18 апреля 2007 года . Проверено 8 марта 2008 г.
- ^ «Лицензионное соглашение TCK сообщества OpenJDK, версия 1.1» (PDF) . Сан Микросистемс . Проверено 8 марта 2008 г.
При условии, что реализация Лицензиата в значительной степени является производной от кода OpenJDK и, если такая реализация распространяется или будет распространяться третьей стороне, она распространяется по лицензии GPL, Sun настоящим предоставляет Лицензиату в пределах интеллектуальных прав Sun. Права собственности на TCK, глобальная, личная, неисключительная, не подлежащая передаче, ограниченная лицензия на использование TCK для внутренних целей и исключительно с целью разработки и тестирования реализации Лицензиата.
- ^ «АФС выходит из исполнительного комитета JCP» . Фонд программного обеспечения Apache. 9 декабря 2010 г.
- ^ «Apache покидает группу управления Java в знак протеста против злоупотреблений Oracle» . Арс Техника. 9 декабря 2010 г.
- ^ «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.
- ^ «Индекс пакета» . Открытый альянс мобильных телефонов . Архивировано из оригинала 27 июня 2009 года . Проверено 31 мая 2009 г.
- ^ «Oracle и IBM сотрудничают для ускорения инноваций в Java с помощью OpenJDK» . Корпорация Оракл . Архивировано из оригинала 14 октября 2010 года . Проверено 22 октября 2010 г.
- ^ Райан Пол (13 октября 2010 г.). «Java-войны: IBM присоединяется к OpenJDK, в то время как Oracle избегает Apache Harmony» . Арс Техника . Архивировано из оригинала 19 октября 2010 года . Проверено 22 октября 2010 г.
- ^ Боб Сьютор. «IBM присоединяется к сообществу OpenJDK и поможет объединить усилия по разработке Java с открытым исходным кодом» . Архивировано из оригинала 18 октября 2010 года . Проверено 22 октября 2010 г.
IBM перенесет свои усилия по разработке с Apache Project Harmony на OpenJDK. Для тех, кто хочет сделать то же самое, мы будем работать вместе, чтобы сделать переход максимально простым. IBM по-прежнему будет активно участвовать в других проектах Apache.
- ^ Тим Эллисон (14 марта 2011 г.). «Перезагрузка проекта Гармония» . Проверено 20 марта 2011 г.
- ^ «Каково будущее Apache Harmony?» . infoq.com. 14 марта 2011 года . Проверено 20 марта 2011 г.
- ^ «Архив списка рассылки: [адрес электронной почты защищен] » . apache.org . Проверено 11 сентября 2011 г.
- ^ Перейти обратно: а б «Протокол заседания Совета директоров» . Фонд программного обеспечения 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» . People.apache.org . Проверено 27 августа 2023 г.
- ^ Путь к классам [ постоянная мертвая ссылка ]
- ^ Путь к классам [ постоянная мертвая ссылка ]
- ^ «Harmony использует новейшие банки Yoko...» 27 сентября 2006 г.
- ^ «Лицензия» . apache.org . Проверено 27 августа 2023 г.
- ^ «Лицензия» . apache.org . Проверено 27 августа 2023 г.
- ^ «Apache Harmony — дорожная карта проекта» . Harmony.apache.org . Проверено 27 августа 2023 г.
- ^ «[общие] JRockit H27.2.1 для библиотеки классов Harmony выпущен сейчас» .
- ^ «Анонсируем Jikes RVM 3.0 + Apache Harmony!» .
- ^ «Джанет Дев» .
- ^ «Подрывные действия» . Harmony.apache.org . Проверено 28 мая 2011 г.
- ^ «Статус_приложения» . apache.org. Архивировано из оригинала 10 августа 2007 года . Проверено 4 ноября 2006 г.
- ^ «Модульные тесты Eclipse проходят на DRLVM — Harmony Wiki» . Архивировано из оригинала 8 февраля 2007 года . Проверено 4 ноября 2006 г.
- ^ «Апач_Томкат» . apache.org. Архивировано из оригинала 10 февраля 2007 года . Проверено 4 ноября 2006 г.
- ^ «Юнит» . apache.org.
- ^ «Апач_Ант» . apache.org. Архивировано из оригинала 10 февраля 2007 года . Проверено 4 ноября 2006 г.
- ^ «Гармония Апачей» . apache.org.
Внешние ссылки
[ редактировать ]- Официальный сайт
- Часто задаваемые вопросы по Apache Harmony
- Репозиторий исходного кода Apache Harmony
- Онлайн-сессия JavaOne 2006 Harmony
- Онлайн-сессия JavaOne 2007 Harmony
- Apache Harmony , автор Гейр Магнуссон-младший на JavaPolis 2006
- Дебаты об открытом исходном коде Java – хорошее резюме дебатов
- Каково будущее Apache Harmony?
- Apache Harmony теряет менеджера проекта