Apache Harmony
Apache Harmony — альтернативна вільна реалізація платформи Java SE (J2SE 5 і 6) від Apache Software Foundation і була каменем спотикання в конфлікті з компанією Sun Microsystems і надалі з Oracle.
Тип | Java Virtual Machine |
---|---|
Розробник | Apache Software Foundation |
Стабільний випуск | 6.0 M3 (15 вересня 2010) |
Репозиторій | svn.apache.org/repos/asf/harmony/ |
Платформа | Віртуальна машина Java |
Операційна система | Windows і Linux |
Мова програмування | C++ і Java |
Стан розробки | Закрито |
Ліцензія | Apache License 2.0 |
Вебсайт | harmony.apache.org |
Apache Harmony у Вікісховищі |
Історія
Початковою метою проєкту Harmony була спроба об’єднати всіх розробників вільних реалізацій платформи Java у межах одного проєкту. Багато розробників очікували, що проєкт не буде підконтрольний GNU, Apache чи іншій спільноті, а буде керуватися окремо. Розробники від GNU брали участь у підготовчому плануванні проєкту.
Проте пізніше було вирішено не використовувати код GNU Classpath і що проєкт буде мати несумісну ліцензію, що значно ускладнило співробітництво між Harmony і існуючими вільними реалізаціями Java. Розробники Apache не планували переписування усіх класів з нуля, а очікували на пожертвування коду від великих компаній з розробки ПЗ.
На початковому етапі розробки проєкт Apache Harmony прийняв великі внески коду від декількох компаній. На листопад 2006 року у проєкті брали участь 16 розробників, 12 з яких були співробітниками IBM або Intel.
Закриття проєкту
Проєкт Apache Harmony був заснований за кілька років до відкриття під ліцензією GPLv2 коду JDK і домігся відмінної сумісності з Java SE. Тим не менш, небажання Sun і Oracle піти на скасування обмежень на сферу використання продуктів, протестованих в JCK (Java Compatibility Kit), призвело до неможливості формального визнання проєкту Apache Harmony повністю сумісним з Java SE. Для вільних GPL-проєктів JCK поширюється без обмежень, але реалізація Apache Harmony поширюється під ліцензією Apache 2.0. Компанія Sun пішла на певні поступки і дала можливість безплатно використовувати JCK в проєктах Apache, але за умови дотримання низки обмежень, наприклад, заборонено тестувати в JCK реалізації Java SE, які можуть бути використані для роботи контент-кіосків (платіжні термінали, інформаційні автомати, банкомати тощо).
Таким чином, використання тестового пакета для перевірки сумісності Apache Harmony з Java в певних областях вимагало оплати ліцензійних відрахувань, що на думку представників Apache, порушує угоду JSPA (Java Specification Participation Agreement), в якому обговорено безплатний характер поширення специфікацій. Oracle же вважає, що дотримується заявленої угоди, бо ліцензує JCK на умовах FRAND ("fair, reasonable and non-discriminatory" - "справедливий, прийнятний, неупереджений").
Після того як спроби залагодити конфлікт протягом багатьох років не увінчалися успіхом, фонд Apache закликав учасників комітету JCP голосувати проти прийняття специфікацій для наступної версії Java. У підсумку, бунт не вдався, а фонд Apache демонстративно заявив про вихід зі складу комітету JCP, що приймає рішення про подальший розвиток Java SE/EE. При виході було заявлено про неможливість створення незалежних відкритих реалізацій Java, які могли б гарантувати користувачам захист від можливих позовів, пов'язаних порушенням інтелектуальної власності авторів специфікацій. Також було вказано на те, що Java-технології залишаються власницькими, незважаючи на відкритий код OpenJDK, бо одноосібне втручання компанії Oracle спотворює процес прозорого управління в екосистемі Java. Приблизно в цей же час проєкт Apache Harmony позбувся свого основного союзника і спонсора — компанія IBM заявила про співпрацю з Oracle і підключилася до розвитку OpenJDK.
3 листопада 2011 року більшістю голосів (20 - "за" і 2 - "проти") розробники проголосували за переміщення всіх пов'язаних з проєктом напрацювань в репозиторій застарілих проєктів Apache Attic.[1][2]
Використання в Android
Віртуальна машина Dalvik, що є частиною платформи Google Android, використовує частину проєкту Harmony як основну складову бібліотеки класів. Проте Dalvik не відповідає стандартному API Java SE і Java ME, а взамін використовує власну стандартну бібліотеку, що побудована поверх бібліотеки класів проєкту Harmony.