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.
Сравнение с альтернативами
| Характеристика | JacORB | gRPC | Apache Thrift | REST (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 →