Перейти к содержанию

OS2 SOM

Материал из Русский WINE

IBM SOM (System Object Model) — разработанная компанией IBM технология объектно-ориентированного программирования, предназначенная для создания, использования и повторного применения программных компонентов, написанных на разных языках программирования.

SOM стала одной из важных технологий в истории OS/2, поскольку именно на её основе была реализована объектная архитектура графической оболочки Workplace Shell (WPS), появившейся в OS/2 2.0 в 1992 году.

Однако SOM не являлась исключительно компонентом OS/2: IBM задумывала её как универсальную технологию, которую можно было использовать в различных операционных системах и программных продуктах.

1. Для чего была создана SOM?

В начале 1990-х годов одной из проблем разработки программного обеспечения была несовместимость программных компонентов, созданных с использованием разных языков программирования и компиляторов.

Например, библиотека классов, написанная на C++, могла оказаться несовместимой с программой, собранной другим C++-компилятором. Повторное использование готового кода между различными языками и средами разработки также было затруднено.

IBM попыталась решить эту проблему, создав независимую от языка программирования объектную модель.

Основная идея SOM заключалась в следующем:

  • Программный компонент описывает свои возможности и интерфейсы независимо от языка реализации.
  • Интерфейс компонента определяется посредством специального языка IDL (Interface Definition Language).
  • Реализация методов может быть написана на одном языке, а использоваться программами, написанными на другом.
  • Внутреннюю реализацию класса можно изменять, не нарушая совместимость с уже существующими программами, если его внешний интерфейс остаётся совместимым.

Таким образом, SOM позволяла создавать бинарные библиотеки классов, которые можно было повторно использовать без необходимости пересобирать все программы, работающие с ними.

Как устроена SOM?

В основе SOM лежит классическая объектная модель, включающая основные принципы объектно-ориентированного программирования:

  • Инкапсуляция — объединение данных и методов работы с ними в одном объекте.
  • Наследование — создание новых классов на основе существующих.
  • Полиморфизм — возможность использовать объекты разных классов через общий интерфейс.

Центральным элементом является класс SOMObject, от которого строится иерархия объектов.

Для создания SOM-компонентов использовался специальный инструментарий — SOMobjects Developer Toolkit.

В его состав входили:

  • SOM Compiler — компилятор описаний классов на языке IDL.
  • SOM Runtime — среда выполнения, обеспечивающая работу объектов.
  • SOM Class Manager — механизм управления классами.
  • Библиотеки и инструменты для создания и использования SOM-классов.

Разработчик описывал интерфейс класса в IDL, после чего компилятор SOM генерировал необходимые языковые объявления и вспомогательный код. Затем программист реализовывал методы класса на выбранном языке программирования.

SOM и Workplace Shell в OS/2

Наиболее известным практическим применением SOM стала графическая оболочка Workplace Shell, представленная в OS/2 2.0.

В отличие от традиционных графических оболочек, где значки преимущественно представляли собой ссылки на файлы и программы, Workplace Shell строилась вокруг концепции объектов.

В ней объектами являлись:

  • папки и файлы;
  • диски и устройства;
  • принтеры;
  • программы;
  • корзина (Shredder);
  • различные системные и пользовательские элементы.

Каждый такой объект имел собственные свойства, методы и поведение. Например, папку можно было открыть, переместить, скопировать или изменить её настройки через контекстное меню.

Благодаря SOM разработчики могли не только пользоваться существующими классами Workplace Shell, но и создавать собственные классы, наследуя функциональность стандартных объектов.

Например, можно было создать специализированную папку с дополнительными функциями или собственный тип программного объекта.

При этом важно понимать разницу:

  • SOM — программная объектная модель, технология и инструментарий для создания объектов.
  • Workplace Shell — графическая оболочка OS/2, реализованная с использованием SOM.

Не каждый SOM-объект обязательно должен был иметь визуальное представление или вообще относиться к графическому интерфейсу.

Distributed SOM (DSOM)

В дальнейшем IBM расширила SOM технологией Distributed SOM (DSOM).

Её назначением стало обеспечение взаимодействия объектов, находящихся в разных процессах и даже на разных компьютерах.

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

При этом клиентскому приложению не требовалось самостоятельно заниматься сетевым взаимодействием и знать подробности размещения объекта.

DSOM обеспечивала:

  • взаимодействие объектов между процессами;
  • взаимодействие объектов между компьютерами;
  • прозрачное удалённое выполнение методов;
  • сетевую коммуникацию с использованием поддерживаемых транспортных протоколов.

По своей концепции DSOM являлась расширением SOM и одновременно выполняла роль Object Request Broker (ORB), соответствуя архитектуре CORBA (Common Object Request Broker Architecture).

Таким образом, IBM пыталась создать не просто механизм объектно-ориентированного программирования, а инфраструктуру для распределённых объектных приложений.

Значение и историческая роль

SOM была интересной попыткой решить проблему повторного использования программного кода на уровне бинарных компонентов.

Её основное преимущество заключалось в независимости объектной модели от конкретного языка программирования и компилятора. Это позволяло создавать библиотеки, которые могли использоваться различными приложениями без привязки к одной среде разработки.

В контексте OS/2 SOM сыграла особенно важную роль: она стала фундаментом объектной архитектуры Workplace Shell и позволила сторонним разработчикам расширять возможности графической оболочки.

При этом SOM не следует путать с другими технологиями IBM:

  • SOM — объектная модель и инфраструктура для создания программных компонентов.
  • DSOM — расширение SOM для распределённых объектов.
  • CORBA — стандартизированная архитектура взаимодействия распределённых объектов.
  • OpenDoc — отдельная технология компонентных документов, которая могла использовать SOM, но не являлась её частью.
  • Workplace Shell — пользовательская оболочка OS/2, построенная на SOM.

Хотя впоследствии широкого распространения SOM не получила, она представляет значительный исторический интерес как одна из ранних попыток создания универсальной бинарной компонентной архитектуры, предшествовавших многим более поздним компонентным технологиям.

Источники и дополнительная литература

Ниже приведены материалы, на основании которых подготовлена заметка. В первую очередь это документация IBM и технические руководства по OS/2.

  1. IBM — SOMobjects Developer Toolkit: An Overview (Version 2.0, June 1993). Подробное описание назначения SOM, архитектуры, IDL и бинарных библиотек классов.
  2. IBM — OS/2 Version 2.0, Volume 4: Writing Applications (1993). Руководство разработчика по созданию приложений для OS/2, включая SOM и Workplace Shell.
  3. IBM — OS/2 Version 2.0, Volume 3: Presentation Manager and Workplace Shell (1992). Описание архитектуры Workplace Shell и её взаимодействия с SOM.
  4. IBM — What is Distributed SOM? Техническая документация по DSOM, принципам распределённых объектов и CORBA.
  5. IBM — Object-Oriented Programming in OS/2 2.0 Using SOM (1992). Введение в объектно-ориентированное программирование с использованием SOM.
  6. IBM — SOM and COM: A Comparison of Technologies. Сравнение объектных технологий IBM SOM и Microsoft COM.
  7. OS/2 Museum — OS/2 2.0. Исторический обзор OS/2 2.0 и появления Workplace Shell.
  8. Designing High-Powered OS/2 Warp Applications (1995). Книга с отдельным объяснением архитектуры SOM и её связи с Workplace Shell.
OSFree
osFree Архитектура • План работ • Компоненты • Используемые проекты • Связанные проекты • Экраны • FreePM • L4 • Скриншоты
Загрузчик [ Последовательность загрузки: поток выполнения • изменение карты памяти ] • Загрузочный сектор • L4Ka::Kickstart
Personalities OS/2 personality VIO API • FamilyAPI
Win16 personality Win16API
MVM MVM API
Разработка Получение исходных кодов • Сборка • Отладка • Отправка отчетов
API TPCrt
Сообщество IRC • Новости проекта
OS/2 Presentation Manager • IFS • SOM • Петиции к IBM
Статьи Микроядро L4 как основа ядра ОС
Родственные проекты os2host32 • NeptuneOS