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

JacORB

JacORB — это свободно распространяемая реализация спецификации CORBA (Common Object Request Broker Architecture) для языка программирования Java, разработанная в рамках проекта, поддерживаемого компанией Brokat AG (позднее — Brokat Infosystems AG). JacORB предоставляет инфраструктуру для создания распределённых объектно-ориентированных приложений, позволяя Java-объектам взаимодействовать друг с другом через сеть независимо от платформы, языка программирования и местоположения.

История

Разработка JacORB началась в 1997 году в Университете Карлсруэ (Германия) под руководством профессора Герхарда Гёца. Первоначально проект создавался как исследовательская платформа для изучения технологий распределённых вычислений и CORBA. В 1998 году код был опубликован под лицензией LGPL (GNU Lesser General Public License), что сделало его доступным для коммерческого и некоммерческого использования. В 2000 году компания Brokat AG, специализировавшаяся на разработке программного обеспечения для финансового сектора, приобрела права на проект и начала его активное развитие. После банкротства Brokat в 2002 году разработка JacORB была продолжена сообществом энтузиастов и группой разработчиков, включая компанию PrismTech (ныне — часть компании ADLINK Technology). Последняя стабильная версия, 3.9, вышла в 2014 году. С тех пор проект находится в режиме поддержки, без активного добавления новых функций.

Архитектура и принцип работы

JacORB реализует спецификацию CORBA, определённую Object Management Group (OMG). CORBA — это стандарт для создания распределённых систем, в котором объекты могут вызывать методы друг друга через сеть, используя специальный протокол — GIOP (General Inter-ORB Protocol). Основные компоненты архитектуры JacORB:

  • ORB (Object Request Broker) — ядро системы, отвечающее за маршаллизацию (преобразование данных в формат для передачи по сети) и демаршаллизацию, а также за управление соединениями и диспетчеризацию вызовов.
  • IDL (Interface Definition Language) — язык описания интерфейсов, на котором определяются методы, доступные для удалённого вызова. JacORB включает компилятор IDL-to-Java, генерирующий заглушки (stubs) и скелетоны (skeletons) на Java.
  • POA (Portable Object Adapter) — компонент, управляющий жизненным циклом серверных объектов, их активацией и привязкой к конкретным запросам.
  • Naming Service — служба именования, позволяющая клиентам находить серверные объекты по логическим именам.

Процесс взаимодействия в JacORB выглядит следующим образом: клиент вызывает метод на локальной заглушке, которая преобразует вызов в запрос по протоколу GIOP. Запрос передаётся через сеть к серверу, где ORB принимает его, демаршаллизирует и передаёт скелетону, который вызывает реальный метод на серверном объекте. Результат возвращается обратно по тому же пути.

Возможности и характеристики

JacORB поддерживает большинство ключевых спецификаций CORBA, включая:

  • GIOP 1.0, 1.1, 1.2 — версии протокола для передачи данных.
  • IIOP (Internet Inter-ORB Protocol) — реализация GIOP поверх TCP/IP.
  • POA — полная поддержка портативного адаптера объектов, включая стратегии активации (SERVANT_RETAIN, SERVANT_LOCATION, NON_RETAIN).
  • Службы CORBA — Naming Service, Event Service, Notification Service, Trading Service, Interface Repository.
  • Безопасность — поддержка SSL/TLS для шифрования соединений, а также механизмов аутентификации и авторизации.
  • Интероперабельностьсовместимость с другими ORB-реализациями (например, Orbix, VisiBroker, OpenORB) через стандартный протокол IIOP.
  • Многопоточность — поддержка как однопоточных, так и многопоточных серверных приложений.
  • Динамическое управление — динамический вызов методов (DII — Dynamic Invocation Interface) и динамическое создание скелетонов (DSI — Dynamic Skeleton Interface).

Применение

JacORB использовался в различных областях, где требовалась надёжная и масштабируемая распределённая архитектура:

  • Телекоммуникации — для управления сетями и услугами (например, в системах OSS/BSS).
  • Финансовый сектор — в банковских системах для обработки транзакций и управления счетами.
  • Авиация и космонавтика — в системах управления полётами и моделирования.
  • Научные исследования — для построения распределённых вычислительных кластеров и симуляторов.
  • Промышленная автоматизация — в системах управления производственными процессами.

В России JacORB применялся в ряде проектов, связанных с разработкой корпоративных информационных систем, особенно в сфере телекоммуникаций и государственного управления, где требовалась интеграция разнородных систем на основе CORBA.

Преимущества и недостатки

Преимущества

  • Свободное распространение — лицензия LGPL позволяет использовать JacORB в коммерческих проектах без лицензионных отчислений.
  • Кроссплатформенность — работает на любой платформе, поддерживающей Java (Windows, Linux, macOS, Solaris).
  • Полнота реализации — поддерживает большинство стандартов CORBA, включая службы и безопасность.
  • Стабильность — проект прошёл многолетнее тестирование в промышленных условиях.

Недостатки

  • Устаревание — последняя версия выпущена в 2014 году, новые стандарты CORBA (например, CORBA 3.0) не поддерживаются.
  • Сложность конфигурации — требует глубокого понимания CORBA и настройки множества параметров.
  • Производительность — уступает современным альтернативам (например, gRPC, Apache Thrift) из-за накладных расходов на маршаллизацию и GIOP.
  • Снижение популярности — CORBA в целом вытесняется более простыми и эффективными протоколами, такими как REST, SOAP и WebSocket.

Сравнение с альтернативами

ХарактеристикаJacORBgRPCApache ThriftREST (HTTP)
ПротоколIIOP (GIOP)HTTP/2 (Protobuf)Бинарный (Thrift)HTTP/1.1, HTTP/2
Тип данныхСтрогая типизация (IDL)Строгая типизация (Protobuf)Строгая типизация (Thrift IDL)Слабая типизация (JSON/XML)
ПроизводительностьСредняяВысокаяВысокаяНизкая (для JSON)
СложностьВысокаяСредняяСредняяНизкая
ПоддержкаУстаревшаяАктивнаяАктивнаяАктивная
ПрименениеУнаследованные системыМикросервисы, облачные приложенияКроссплатформенные системыВеб-сервисы, API

Интересные факты

  • JacORB был одним из первых полностью свободных ORB для Java, что способствовало его популярности в академической среде.
  • Исходный код JacORB содержит около 200 000 строк Java-кода.
  • Проект использовался в качестве основы для некоторых коммерческих продуктов, таких как реализация CORBA в сервере приложений JBoss (до перехода на собственный ORB).
  • В 2005 году JacORB был включён в состав дистрибутива Red Hat Enterprise Linux как часть пакета для разработки распределённых приложений.

Источники

  • Brokat AG. JacORB 2.0 Documentation. 2000.
  • Object Management Group. CORBA 3.0 Specification. 2002.
  • PrismTech. JacORB 3.9 User Guide. 2014.
  • Henning, M., Vinoski, S. Advanced CORBA Programming with C++. Addison-Wesley, 1999.
  • Официальный сайт проекта JacORB (jacorb.org).

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

На главную BFOmetr →