Введение
Устаревшая спецификация объектно-ориентированного интерфейса программирования приложений
OpenStep — это спецификация объектно-ориентированного интерфейса программирования приложений (API), разработанная компанией NeXT. Она предоставляет основу для создания графических пользовательских интерфейсов (GUI) и разработки программных приложений. OpenStep был разработан как платформенно-независимый, что позволяло разработчикам писать код, который мог работать на различных операционных системах, включая NeXTSTEP, Windows NT и различные Unix-подобные системы. Он оказал влияние на разработку других GUI-фреймворков, таких как Cocoa для macOS и GNUstep. OpenStep разрабатывался в основном компаниями NeXT и Sun Microsystems для обеспечения расширенной разработки приложений для операционных систем Sun, в частности Solaris. NeXT выпустила версию OpenStep для своей собственной Unix-системы на базе Mach, оформленную полностью заглавными буквами как OPENSTEP. Программные библиотеки, поставляемые с OPENSTEP, являются расширением оригинальной спецификации OpenStep, включая множество функций из оригинальной NeXTSTEP.
История
Рабочие станции Sun Microsystems первоначально программировались на относительно низком уровне, осуществляя непосредственный вызов базовой операционной системы Unix, инструментария оконной системы SunView, а также библиотек, построенных на этих интерфейсах. Это приводило к сложной разработке даже для простых проектов. Попытка решить эту проблему с помощью объектно-ориентированной модели программирования была предпринята в середине 1980-х годов с использованием оконной системы NeWS от Sun, но сочетание сложного интерфейса прикладного программирования (API) и в целом низкой производительности привело к незначительному распространению в реальных условиях, и система в конечном итоге была заброшена. После этого Sun начала искать другие варианты. Taligent рассматривался как конкурент на рынках операционных систем и объектов, а Microsoft Cairo, по крайней мере, принимался во внимание, даже несмотря на отсутствие каких-либо релизов от обеих компаний. Теоретическая новизна Taligent часто сравнивалась со зрелой и коммерчески устоявшейся платформой NeXT, несмотря на её более раннюю разработку. Sun провела предварительные встречи с Taligent, прежде чем принять решение о создании собственной объектной платформы приложений OpenStep в партнерстве с NeXT как "превентивный шаг против Taligent и Cairo". Бад Триббл, один из основателей Macintosh и NeXTStep, стал вице-президентом SunSoft по объектным продуктам и возглавил это решение. Партнерство 1993 года включало инвестиции Sun в NeXT в размере 10 миллионов долларов. Сделка была названа "первой безусловно хорошей новостью для сообщества NeXT за последние четыре года". Основная идея заключалась в использовании урезанной версии объектных слоев операционной системы NeXTSTEP и адаптации их для работы на операционной системе Sun Solaris, в частности, на Solaris для оборудования на базе SPARC. Большая часть работы над OpenStep была направлена на удаление из NeXTSTEP тех компонентов, которые зависели от наличия Mach или специфического оборудования NeXT. В результате получилась более компактная система, состоящая в основном из Display PostScript, среды выполнения и компиляторов Objective-C, а также большей части библиотек Objective-C NeXTSTEP. Основная операционная система и система отображения нижнего уровня не были включены. Стив Джобс сказал: "Мы впереди сегодня, но гонка еще далека от завершения. [В 1996 году] Cairo будет очень близко, а Taligent – очень далеко позади". Генеральный директор Sun Скотт Макнили заявил: "У нас нет страховки. Мы приняли твердое решение – одна компания, одна архитектура, в отличие от Taligent, который получил 'трофейную жену', подписав контракт с HP". Ранние версии NeXTSTEP использовали префикс "NX" и содержали только Application Kit, полагаясь на стандартные типы Unix libc для низкоуровневых структур данных. OPENSTEP оставался основной операционной системой NeXT до приобретения компании Apple Computer в 1997 году. Затем OPENSTEP был объединен с технологиями существующей классической Mac OS для создания Mac OS X. iOS для iPhone и iPad также является потомком OPENSTEP, но ориентирован на сенсорные устройства. Sun изначально приняла среду OpenStep с целью дополнения объектной системы Sun, соответствующей стандарту CORBA, Solaris NEO (ранее известной как Project DOE), предоставив объектно-ориентированный инструментарий пользовательского интерфейса для дополнения объектно-ориентированной инфраструктуры CORBA. Она была сделана свободно доступной для загрузки в августе 1996 года для некоммерческого использования и поступила в продажу в сентябре 1996 года. OpenStep/Solaris поставлялся только для архитектуры SPARC.
Построение на OpenStep
Стандартизация на OpenStep также позволила создать несколько новых пакетов библиотек, которые поставлялись вместе с платформой OPENSTEP. В отличие от операционной системы в целом, эти пакеты были разработаны для автономной работы практически на любой операционной системе. Идея заключалась в использовании кода OpenStep в качестве основы для сетевых приложений, работающих на различных платформах, в отличие от использования CORBA или других подобных систем. Ключевым из этих пакетов был Portable Distributed Objects (PDO). PDO по сути представлял собой еще более "упрощенную" версию OpenStep, содержащую только технологии Foundation Kit в сочетании с новыми библиотеками для обеспечения удаленного вызова с минимальным объемом кода. В отличие от OpenStep, который определял операционную систему для запуска приложений, в PDO библиотеки компилировались непосредственно в приложение, создавая автономное "нативное" приложение для конкретной платформы. PDO был достаточно компактным для легкой переносимости, и версии были выпущены для всех основных производителей серверов. В середине 1990-х годов сотрудники NeXT стали предлагать решения задач из статей журнала CORBA всего в несколько строк кода, в то время как оригинальные статьи занимали несколько страниц. Несмотря на то, что использование PDO требовало установки значительного объема вспомогательного кода (Objective-C и библиотеки), приложения PDO все равно были значительно меньше, чем аналогичные решения на CORBA, обычно в полтора-три раза. Аналогичный пакет D'OLE предоставлял те же типы сервисов, но представлял результирующие объекты как COM-объекты, с целью позволить программистам создавать COM-сервисы, работающие на высокопроизводительных платформах и вызываемые из приложений Microsoft Windows. Например, можно было разработать мощное приложение для финансового моделирования с использованием D'OLE, а затем вызывать его непосредственно из Microsoft Excel. Когда D'OLE был впервые выпущен, OLE сам по себе обеспечивал связь только между приложениями, работающими на одном компьютере. PDO позволил NeXT продемонстрировать взаимодействие Excel с другими приложениями Microsoft по сети до того, как Microsoft смогла реализовать эту функциональность (DCOM). Еще одним пакетом, разработанным на OpenStep, был Enterprise Objects Framework (EOF) – продукт объектно-реляционного отображения.
OPENSTEP для Маха
Первой операционной системой NeXT был NeXTSTEP – сложная операционная система на базе Mach UNIX, которая изначально работала только на рабочих станциях NeXT с процессорами Motorola 68k, а затем была портирована для работы на 32-битных персональных компьютерах Intel x86, совместимых с IBM, на рабочих станциях PA RISC от Hewlett Packard и на рабочих станциях SPARC от Sun Microsystems. NeXT завершила реализацию OpenStep на своей существующей ОС на базе Mach и назвала ее OPENSTEP для Mach 4.0 (июль 1996 года), 4.1 (декабрь 1996 года) и 4.2 (январь 1997 года). По сути, это был NeXTSTEP 4.0, сохранивший ключевые технологии NeXTSTEP (такие как DPS, UNIX-ядро, элементы пользовательского интерфейса, такие как Dock и Shelf, и т.д.) и классический пользовательский интерфейс и стиль NeXTSTEP. OPENSTEP для Mach был значительно улучшен по сравнению с NeXTSTEP 3.3, в частности, за счет расширенной поддержки драйверов, однако среда разработки драйверов изменилась с появлением объектно-ориентированного DriverKit. OPENSTEP для Mach поддерживал ПК на базе Intel x86, рабочие станции Sun SPARC и собственные архитектуры NeXT на базе 68k, в то время как версия для HP PA RISC была исключена. Эти версии продолжали работать на базовой ОС Mach, используемой в NeXTSTEP. OPENSTEP для Mach стал основной ОС NeXT с 1995 года и в основном использовался на платформе Intel. Помимо полной реализации OpenStep, система поставлялась с полным набором библиотек NeXTSTEP для обеспечения обратной совместимости. Это было легко реализовать в OpenStep благодаря версионности библиотек, что предотвратило разрастание системы.
Solaris OpenStep (по умолчанию)
В дополнение к порту OPENSTEP для Mach на SPARC, Sun и NeXT разработали набор фреймворков, соответствующих OpenStep, для работы в операционной системе Sun Solaris. После разработки Solaris OpenStep, Sun утратил интерес к OpenStep и переключил внимание на Java. Java, как среда разработки виртуальных машин, являлась прямым конкурентом OpenStep. В отличие от других версий, Solaris OpenStep поставлялся с Interface Builder и Project Builder в отдельном пакете под названием Workshop OpenStep.
OPENSTEP Предприятие
NeXT также выпустила реализацию, работающую на базе Windows NT 4.0 под названием OPENSTEP Enterprise (обычно сокращаемая как OSE). Это стало непреднамеренной демонстрацией истинной переносимости программ, созданных в соответствии со спецификацией OpenStep. Программы для OPENSTEP для Mach можно было портировать на OSE без особых затруднений. Это позволило существующим клиентам продолжать использовать свои инструменты и приложения, но уже на платформе Windows, на которую многие из них в то время переходили. Интерфейс никогда не был полностью идентичным, вероятно, из-за того, что OPENSTEP направлял графику окон через сервер Display Postscript, который также был портирован на Windows. Тем не менее, OSE достаточно хорошо функционировал и продлил коммерческое существование OpenStep. OPENSTEP и OSE прошли через два выпуска (и один крупный выпуск, который так и не был опубликован), прежде чем NeXT была приобретена Apple в 1997 году.
Darwin, Mac OS X 10.0 и более поздние
После замены Display Postscript WindowServer на Quartz и откликаясь на запросы разработчиков, Apple выпустила Mac OS X и Mac OS X Server, начиная с версии 10.0; Mac OS X теперь называется macOS. Основной средой программирования macOS фактически является OpenStep (с некоторыми дополнениями, такими как XML-списки свойств и классы URL для интернет-соединений) с портами MacOS библиотек и инструментов разработки, теперь известных как Cocoa. С тех пор macOS стала самой популярной в мире настольной операционной системой, подобной Unix, хотя macOS больше не соответствует стандартам OpenStep.
GNUstep
GNUstep, свободная реализация библиотек NeXT, началась во времена NeXTSTEP, ещё до появления OPENSTEP. В то время как OPENSTEP и OSE были приобретены Apple, которая фактически прекратила коммерческую разработку OpenStep для других платформ, GNUstep — это продолжающийся проект с открытым исходным кодом, направленный на создание переносимой, свободной реализации библиотек Cocoa/OPENSTEP. GNUstep также включает в себя полностью функциональную среду разработки, повторные реализации некоторых новых разработок из фреймворка Cocoa macOS, а также собственные расширения API.