Введение

Distributed Objects Everywhere (DOE) был долгосрочным проектом Sun Microsystems по созданию распределенной вычислительной среды, использующей систему CORBA на серверной стороне и OpenStep в качестве пользовательского интерфейса. Проект был начат в 1990 году и вскоре объявлен, но оставался нереализованным в течение многих лет, пока наконец не был выпущен под названием NEO в 1995 году. Он продавался лишь короткое время, прежде чем был прекращен (вместе с OpenStep) в 1996 году. На смену ему пришли технологии, известные сегодня как Enterprise JavaBeans.

Предыстория

В начале 1990-х годов "следующей большой вещью" в вычислительной технике было использование настольных микрокомпьютеров для отображения и редактирования данных, предоставляемых мейнфреймами и миникомпьютерами. Хотя уже существовало несколько методов для подобного доступа, разделение труда было далеко не равномерным. Например, SQL требовал от рабочей станции загружать огромные наборы данных и затем обрабатывать их локально, в то время как использование терминальных эмуляторов оставляло всю работу на сервере и не предоставляло графического интерфейса. Казалось, что оптимальное разделение обязанностей заключалось бы в использовании кооперативного набора объектов, где рабочая станция отвечала бы за отображение и взаимодействие с пользователем, а обработка выполнялась бы на сервере. Препятствием на пути к такому решению были существенные различия в операционных системах и языках программирования между платформами. Хотя теоретически можно было создать систему, работающую на любой комбинации рабочей станции и сервера, то же самое решение не работало бы на другой системе. Удивительно, но различия между любыми двумя языками программирования на одной платформе были почти столь же велики. Каждый язык имел свой формат передачи параметров в процедурные вызовы, а форматы генерируемых ими файлов часто существенно отличались. В целом, не всегда было возможно писать различные части программы на разных языках, хотя это часто было полезно. Проблема была менее острой на миникомпьютерах и мейнфреймах, где поставщик часто определял стандарты для своих библиотек, но на микрокомпьютерах системы программирования обычно поставлялись различными сторонними компаниями, не заинтересованными в стандартизации. Тем не менее, эта проблема решалась в начале 1990-х годов благодаря внедрению различных систем общих библиотек. Изначально они предназначались для оптимизации использования ресурсов на небольших платформах, позволяя нескольким программам, использующим общий ресурс, например, графический интерфейс, совместно использовать одну копию кода вместо загрузки каждой программой собственной копии в память. Как побочный эффект возможности вызова из множества программ, эти системы также определяли стандартный способ вызова, используя язык описания интерфейсов (IDL), чтобы любой язык на платформе мог понимать код внутри библиотеки. Расширение этих систем для поддержки удаленных вызовов процедур "под капотом" рассматривалось как естественная эволюция, предоставляющая решение проблемы клиент-серверного программирования. В то время существовало несколько крупных проектов по созданию подобной системы, включая System Object Model (SOM/DSOM) от IBM, Portable Distributed Objects от NeXT, Component Object Model (COM/DCOM) от Microsoft и множество вариантов CORBA. Sun, стремясь позиционировать себя как будущего IBM в области поддержки серверной части, считала необходимым выйти и на этот рынок.

Спринг, DOE, OpenStep, NEO

Решение Sun было основано на разработке в их операционной системе Spring, которая использовала взаимодействующие объекты для выполнения почти всех задач программирования. Адаптировать это для работы под «традиционным» Unix, таким как Solaris, оказалось не так сложно, хотя Unix исходит из предположения, что все программы выполняются локально, и потребовалось добавить интерфейс для удаленного доступа. Для этого DOE добавил брокер запросов объектов (ORB), который работал на серверных серверах, прослушивал запросы DOE и передавал их соответствующей программе для обработки. В процессе разработки CORBA стало ключевым словом в индустрии. Это привело к задержке, пока ORB был переработан для поддержки CORBA. В рамках модели CORBA различные объекты, такие как объекты DOE или SOM, могли бы взаимодействовать, используя общий интерфейс. Более серьезной проблемой для Sun стало отсутствие интегрированного решения для объектного программирования на рабочих станциях. Хотя объектные библиотеки C++ становились распространенными на некоторых платформах, их собственная операционная система SunOS (позже известная как Solaris) и связанные с ней системы SunView и X были основаны на «простом C», в то время как их новая оконная среда NeWS базировалась на сетевом расширяемом объектно-ориентированном диалекте PostScript. Чтобы предоставить комплексное и гибкое решение для объектного программирования, Sun обратилась к NeXT, и они совместно разработали OpenStep. Идея заключалась в том, чтобы программы OpenStep вызывали объекты DOE на серверах Sun, обеспечивая решение для серверной и клиентской части на машинах Sun. OpenStep был выпущен только в 1993 году, что еще больше задержало проект. К тому времени, когда DOE, теперь известный как NEO, был выпущен в 1995 году, Sun уже переключилась на Java как на следующую важную разработку. Java стал графическим интерфейсом пользователя по умолчанию для клиентских приложений, и планы Sun по OpenStep были тихо свернуты (см. Lighthouse Design). NEO был перепозиционирован как Java-система с внедрением фреймворка "Joe", но он не получил широкого распространения. Компоненты NEO и Joe в конечном итоге были включены в Enterprise JavaBeans. Хотя распределенные объекты, и особенно CORBA, были «следующей большой вещью» в начале 1990-х годов, ко второй половине десятилетия интерес к ним практически исчез. Веб-приложения, работающие полностью на сервере, стали новой «большой вещью», и потребность в мощной системе отображения на стороне клиента уменьшилась, в основном замененная легковесными графическими интерфейсами пользователя на основе HTML и JavaScript («пользовательские интерфейсы браузера»).