Открыть сервис

Java Community Process

Java Community Process (JCP) — это формализованный механизм, созданный компанией Sun Microsystems (ныне под управлением Oracle Corporation) для разработки и стандартизации технических спецификаций технологии Java. JCP представляет собой открытый процесс, в котором участвуют заинтересованные стороны, включая компании, организации и индивидуальных разработчиков, с целью обеспечения эволюции платформы Java в контролируемом, прозрачном и консенсусном порядке.

История

Предпосылки создания

В середине 1990-х годов, после выхода Java 1.0 (1995 год), язык и платформа Java быстро набрали популярность. Sun Microsystems, как создатель технологии, контролировала её развитие, что вызывало опасения у сообщества и потенциальных партнёров относительно возможной монополизации и закрытости. Для решения этой проблемы и привлечения сторонних участников к разработке будущих версий Java, в 1998 году был запущен Java Community Process.

Основание и первые годы

JCP был официально объявлен в декабре 1998 года. Первым проектом, прошедшим через этот процесс, стала спецификация Java 2 Platform, Enterprise Edition (J2EE). В 2000 году была сформирована первая версия документа, регламентирующего правила JCP — Java Community Process 1.0. В 2002 году вышла версия 2.0, которая ввела более строгие требования к голосованию и публикации спецификаций.

Переход под управление Oracle

В 2010 году Oracle Corporation завершила приобретение Sun Microsystems. Это вызвало обеспокоенность в сообществе Java относительно будущего JCP, так как Oracle известна своей агрессивной политикой в области интеллектуальной собственности. В 2011 году Oracle предложила реформу JCP, направленную на ускорение процесса и повышение прозрачности. В 2012 году была принята версия JCP 2.8, которая, в частности, разрешила использование альтернативных реализаций спецификаций (так называемых «совместимых реализаций»).

Организационная структура

Управляющий совет (Executive Committee, EC)

Высшим органом управления JCP является Управляющий совет. Он состоит из двух палат:

  • Палата компании (SE/EE): Включает представителей корпораций, таких как Oracle, IBM, Red Hat, SAP, а также крупных пользователей Java.
  • Палата сообщества (SE/EE): Включает представителей открытых проектов, некоммерческих организаций и индивидуальных участников (например, Apache Software Foundation, Eclipse Foundation, Google).

EC принимает решения о принятии новых спецификаций, изменении правил JCP, а также разрешает споры между участниками. Голосование проводится по принципу «один участник — один голос» в каждой палате.

Спецификация-лидер (Spec Lead)

Каждый проект JCP (Java Specification Request, JSR) имеет одного или нескольких спецификация-лидеров. Это лица или организации, ответственные за разработку черновика спецификации, управление процессом обсуждения и координацию работы экспертной группы.

Экспертная группа (Expert Group)

Для каждого JSR формируется экспертная группа из добровольцев, представляющих различные заинтересованные стороны. Группа обсуждает технические детали спецификации, голосует по изменениям и готовит финальный документ.

Процесс разработки спецификации (JSR)

Этапы JSR

Процесс создания новой спецификации Java (Java Specification Request, JSR) состоит из нескольких стадий:

  1. Инициирование (JSR Initiation): Любой участник JCP может подать заявку на создание нового JSR. Заявка должна содержать описание проблемы, предлагаемое решение и обоснование необходимости.
  2. Обсуждение (JSR Review): Заявка публикуется для общественного обсуждения. Управляющий совет голосует за принятие JSR в разработку.
  3. Разработка (Drafting): Спецификация-лидер и экспертная группа создают черновик спецификации, включая техническое описание, API, тесты совместимости (TCK — Technology Compatibility Kit) и эталонную реализацию (RI — Reference Implementation).
  4. Публичное обсуждение (Public Review): Черновик спецификации публикуется для всеобщего ознакомления. Любой желающий может оставить комментарии и предложения.
  5. Финальное голосование (Final Vote): После доработки черновика с учётом комментариев, Управляющий совет проводит финальное голосование. Для принятия JSR требуется большинство голосов в обеих палатах.
  6. Завершение (Final Release): После утверждения спецификация публикуется как окончательная. Она становится частью платформы Java, и все реализации Java должны быть с ней совместимы.

Типы JSR

JSR могут быть разных типов:

  • Core JSR: Спецификации, входящие в ядро платформы Java (например, Java SE, Java EE).
  • Community JSR: Спецификации, разрабатываемые сообществом, но не входящие в ядро.
  • Maintenance JSR: Спецификации, вносящие исправления и улучшения в уже существующие JSR.

Критика и ограничения

Медлительность и бюрократизация

Одной из основных критик JCP является его медлительность. Процесс разработки спецификации может занимать от нескольких месяцев до нескольких лет, что затрудняет быстрое реагирование на изменения в технологиях. Кроме того, процедуры голосования и согласования часто воспринимаются как излишне бюрократизированные.

Доминирование Oracle

После приобретения Sun Microsystems, Oracle получила значительное влияние на JCP. Критики утверждают, что Oracle использует JCP для продвижения собственных интересов, блокируя или затягивая принятие спецификаций, которые могут навредить её бизнесу. Например, в 2010-2011 годах возник конфликт вокруг JSR 310 (Date and Time API), когда Oracle долгое время не разрешала публикацию спецификации, разработанной сообществом.

Проблемы с открытостью

Несмотря на заявленную открытость, JCP имеет ограничения. Участие в экспертных группах часто требует подписания соглашений о неразглашении (NDA), что ограничивает прозрачность. Кроме того, для участия в голосовании в Управляющем совете необходимо быть членом JCP, что требует уплаты членских взносов (для организаций). Это создаёт барьер для малых компаний и индивидуальных разработчиков.

Альтернативы и уход сообщества

В ответ на критику JCP, некоторые проекты Java начали развиваться вне его рамок. Например, проект Eclipse MicroProfile (создан Eclipse Foundation) предлагает альтернативные спецификации для микросервисной архитектуры, которые не проходят через JCP. Также существует проект OpenJDK, который является эталонной реализацией Java SE, но его развитие не полностью контролируется JCP.

Значение и влияние

Стандартизация экосистемы Java

Несмотря на критику, JCP сыграл ключевую роль в стандартизации Java. Благодаря JCP, Java стала одной из немногих платформ, где существует формальный механизм для создания и принятия спецификаций, что обеспечивает совместимость между различными реализациями (например, от Oracle, IBM, Red Hat).

Развитие ключевых технологий

Через JCP были разработаны многие фундаментальные технологии Java, включая:

  • Java SE (Standard Edition): Основная платформа для настольных и серверных приложений.
  • Java EE (Enterprise Edition): Платформа для корпоративных приложений (ныне Jakarta EE под управлением Eclipse Foundation).
  • Java ME (Micro Edition): Платформа для мобильных и встраиваемых устройств.
  • JavaFX: Платформа для создания графических интерфейсов.
  • JPA (Java Persistence API): Спецификация для работы с базами данных.
  • JAX-RS (Java API for RESTful Web Services): Спецификация для создания REST-сервисов.

Влияние на другие сообщества

Модель JCP, несмотря на свои недостатки, послужила примером для других сообществ, стремящихся к формализованной стандартизации открытых технологий. Например, процесс разработки спецификаций в Eclipse Foundation (Eclipse Development Process) во многом основан на принципах JCP.

Источники

  • Официальный сайт Java Community Process (jcp.org)
  • Документация Java Community Process 2.8 (2012)
  • Статья «Java Community Process: A Critical Review» (2011) в журнале «IEEE Software»
  • Материалы конференции JavaOne (2000-2015)
  • Книга «Java: The Complete Reference» (Herbert Schildt)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →