OpenStep es una especificación de interfaz de programación de aplicaciones (API) orientada a objetos desarrollada por NeXT . Proporciona un marco para crear interfaces gráficas de usuario (GUI) y desarrollar aplicaciones de software. OpenStep fue diseñado para ser independiente de la plataforma, lo que permite a los desarrolladores escribir código que pueda ejecutarse en múltiples sistemas operativos, incluidos NeXTSTEP, Windows NT y varios sistemas basados en Unix . Ha influido en el desarrollo de otros marcos de GUI, como Cocoa para macOS y GNUstep .
OpenStep fue desarrollado principalmente por NeXT y Sun Microsystems para permitir el desarrollo avanzado de aplicaciones en los sistemas operativos de Sun, específicamente Solaris . NeXT produjo una versión de OpenStep para su propio sistema operativo Unix basado en Mach , estilizado en mayúsculas como OPENSTEP . [1] Las bibliotecas de software que se entregaron con OPENSTEP son un superconjunto de la especificación OpenStep original, que incluye muchas características del NeXTSTEP original.
Las estaciones de trabajo de Sun Microsystems se programaban originalmente a un nivel relativamente bajo, realizando llamadas directamente al sistema operativo Unix subyacente y al conjunto de herramientas del sistema de ventanas SunView , así como a las bibliotecas creadas sobre esas interfaces. Esto condujo a una programación compleja incluso para proyectos simples. A mediados de los años 80 se intentó abordar este problema con un modelo de programación orientada a objetos con el sistema de ventanas NeWS de Sun , pero la combinación de una interfaz de programación de aplicaciones (API) compleja y un rendimiento generalmente deficiente condujo a un uso escaso en el mundo real y el sistema finalmente se abandonó.
Sun comenzó entonces a buscar otras opciones. Taligent se consideraba un competidor en los mercados de sistemas operativos y de objetos, y Cairo de Microsoft era al menos una opción, incluso sin que ninguno de los dos lanzara ningún producto. La novedad teórica de Taligent se comparaba a menudo con la plataforma más antigua pero madura y comercialmente establecida de NeXT. Sun mantuvo reuniones exploratorias con Taligent antes de decidirse por desarrollar su marco de aplicación de objetos OpenStep en asociación con NeXT como una "medida preventiva contra Taligent y Cairo". Bud Tribble , uno de los diseñadores fundadores de Macintosh y de NeXTStep, era ahora el vicepresidente de productos de objetos de SunSoft y lideró esta decisión. La asociación de 1993 incluyó una inversión de 10 millones de dólares de Sun en NeXT. El acuerdo fue descrito como "la primera buena noticia sin adulterar en la comunidad de NeXT en los últimos cuatro años". [2]
El concepto básico era tomar una versión reducida de las capas de objetos del sistema operativo NeXTSTEP y adaptarlas para que se ejecutaran en el sistema operativo Solaris de Sun, más específicamente, Solaris en hardware basado en SPARC . La mayor parte del esfuerzo de OpenStep fue eliminar aquellas partes de NeXTSTEP que dependían de la presencia de Mach o hardware específico de NeXT. Esto dio como resultado un sistema más pequeño que consistía principalmente en Display PostScript , el entorno de ejecución y los compiladores Objective-C y la mayoría de las bibliotecas Objective-C de NeXTSTEP. No se incluyó el sistema operativo básico ni el sistema de visualización de nivel inferior.
Steve Jobs dijo: "Hoy estamos por delante, pero la carrera está lejos de terminar... [En 1996] Cairo estará muy cerca y Taligent muy lejos". El director ejecutivo de Sun, Scott McNealy , dijo: "No tenemos una póliza de seguros. Hemos tomado una decisión firme de una sola empresa y una sola arquitectura, no como si Taligent hubiera conseguido un cónyuge trofeo al fichar a HP". [2] : 13
El primer borrador de la API fue publicado por NeXT a mediados de 1994. Más tarde ese año lanzaron una versión compatible con OpenStep de NeXTSTEP como OPENSTEP, compatible con varias de sus plataformas, así como con los sistemas Sun SPARC. NeXT presentó la especificación OpenStep a los organismos de estándares de objetos de la industria. [2] La API oficial de OpenStep, publicada en septiembre de 1994, fue la primera en dividir la API entre Foundation y Application Kit y la primera en usar el prefijo "NS". [3] Las primeras versiones de NeXTSTEP usan un prefijo "NX" y contienen solo el Application Kit, basándose en los tipos estándar de libc de Unix para estructuras de datos de bajo nivel. OPENSTEP siguió siendo el producto de sistema operativo principal de NeXT hasta que la compañía se fusionó con Apple Computer en 1997. Luego, OPENSTEP se combinó con tecnologías del clásico Mac OS existente para producir Mac OS X. El iOS de iPhone y iPad también es un descendiente de OPENSTEP, pero está dirigido a dispositivos táctiles.
Sun adoptó originalmente el entorno OpenStep con la intención de complementar el sistema de objetos compatible con CORBA de Sun, Solaris NEO (anteriormente conocido como Project DOE), al proporcionar un kit de herramientas de interfaz de usuario orientado a objetos para complementar la infraestructura CORBA orientada a objetos. [2] El puerto implicó la integración de OpenStep AppKit con la capa Display PostScript del servidor Sun X11 , haciendo que AppKit tolerara código multiproceso (ya que Project DOE era inherentemente multiproceso), implementando un demonio Solaris para simular el comportamiento de los puertos Mach, extendiendo el compilador SunPro C++ para soportar Objective-C usando el entorno de ejecución ObjC de NeXT, escribiendo un administrador de ventanas X11 para implementar la apariencia de NeXTSTEP tanto como fuera posible, e integrando las herramientas de desarrollo de NeXT, como Project Builder e Interface Builder, con el compilador SunPro. Para proporcionar un entorno de usuario final completo, Sun también adaptó las versiones NeXTSTEP-3.3 de varias aplicaciones de usuario final, incluidas Mail.app, Preview.app, Edit.app, Workspace Manager y el Dock .
Las partes OpenStep y CORBA de los productos se dividieron más tarde, y NEO se lanzó a fines de 1995 sin el entorno OpenStep. En marzo de 1996, Sun anunció Joe, un producto para integrar NEO con Java . Sun lanzó una versión beta del entorno OpenStep para Solaris el 22 de julio de 1996, [4] y lo puso a disposición de forma gratuita para su descarga en agosto de 1996 para uso no comercial, y para su venta en septiembre de 1996. OpenStep/Solaris se lanzó solo para la arquitectura SPARC.
OpenStep se diferencia de NeXTSTEP en varios aspectos:
La especificación de la API de OpenStep define tres componentes principales: Foundation Kit, el marco de software ; Application Kit , la interfaz gráfica de usuario y el front-end de gráficos; y Display PostScript, un sistema de gráficos 2D (para dibujar ventanas y otros gráficos en la pantalla).
La estandarización de OpenStep también permitió la creación de varios paquetes de bibliotecas nuevos que se entregaron en la plataforma OPENSTEP. A diferencia del sistema operativo en su conjunto, estos paquetes fueron diseñados para ejecutarse de forma independiente en prácticamente cualquier sistema operativo. La idea era utilizar el código OpenStep como base para aplicaciones de red que se ejecutan en diferentes plataformas, en lugar de utilizar CORBA o algún otro sistema.
Entre estos paquetes, el más importante era Portable Distributed Objects (PDO). PDO era, en esencia, una versión aún más "reducida" de OpenStep que contenía únicamente las tecnologías del Foundation Kit, combinadas con nuevas bibliotecas para proporcionar una invocación remota con muy poco código. A diferencia de OpenStep, que definía un sistema operativo en el que se ejecutarían las aplicaciones, con PDO las bibliotecas se compilaban en la propia aplicación, creando una aplicación "nativa" independiente para una plataforma en particular. PDO era lo suficientemente pequeño como para ser fácilmente portable y se lanzaron versiones para todos los principales proveedores de servidores.
A mediados de los años 90, el personal de NeXT comenzó a escribir soluciones para varios artículos de revistas CORBA en unas pocas líneas de código, mientras que el artículo original ocupaba varias páginas. Aunque el uso de PDO requería la instalación de una cantidad considerable de código de apoyo (Objective-C y las bibliotecas), las aplicaciones PDO eran considerablemente más pequeñas que las soluciones CORBA similares, normalmente de entre la mitad y un tercio del tamaño.
El D'OLE, de características similares , proporcionaba los mismos tipos de servicios, pero presentaba los objetos resultantes como objetos COM , con el objetivo de permitir a los programadores crear servicios COM que se ejecutasen en plataformas de alta potencia y que se invocasen desde aplicaciones de Microsoft Windows . Por ejemplo, se podía desarrollar una aplicación de modelado financiero de alta potencia utilizando D'OLE y luego invocarla directamente desde Microsoft Excel . Cuando se lanzó por primera vez D'OLE, OLE por sí solo solo se comunicaba entre aplicaciones que se ejecutaban en una sola máquina. PDO permitió a NeXT demostrar que Excel se comunicaba con otras aplicaciones de Microsoft a través de una red antes de que Microsoft pudiera implementar esta funcionalidad (DCOM).
Otro paquete desarrollado en OpenStep fue Enterprise Objects Framework (EOF), un producto de mapeo relacional de objetos .
El primer sistema operativo de NeXT fue NeXTSTEP , un sofisticado sistema operativo basado en Mach-UNIX que originalmente sólo se ejecutaba en estaciones de trabajo basadas en Motorola 68k de NeXT y que luego fue adaptado para ejecutarse en computadoras personales "compatibles con IBM" basadas en Intel x86 de 32 bits , estaciones de trabajo basadas en PA-RISC de Hewlett-Packard y estaciones de trabajo basadas en SPARC de Sun Microsystems .
NeXT completó una implementación de OpenStep en su sistema operativo existente basado en Mach y lo llamó OPENSTEP para Mach 4.0 (julio de 1996), 4.1 (diciembre de 1996) y 4.2 (enero de 1997). Era, a todos los efectos, NeXTSTEP 4.0, y aún conservaba las tecnologías emblemáticas de NeXTSTEP (como DPS , bases UNIX, características de interfaz de usuario como Dock y Shelf , etc.), y conservaba la interfaz de usuario y los estilos clásicos de NeXTSTEP. OPENSTEP para Mach se mejoró aún más, en comparación con NeXTSTEP 3.3, con un soporte de controladores enormemente mejorado; sin embargo, el entorno para escribir controladores realmente cambió con la introducción del DriverKit orientado a objetos.
OPENSTEP para Mach era compatible con PC basados en Intel x86, estaciones de trabajo SPARC de Sun y las arquitecturas basadas en 68k de NeXT, mientras que la versión HP PA-RISC fue abandonada. Estas versiones continuaron ejecutándose en el sistema operativo basado en Mach subyacente utilizado en NeXTSTEP. OPENSTEP para Mach se convirtió en el sistema operativo principal de NeXT a partir de 1995 y se utilizó principalmente en la plataforma Intel. Además de ser una implementación completa de OpenStep, el sistema se entregó con un conjunto completo de bibliotecas NeXTSTEP para compatibilidad con versiones anteriores. Esto era algo fácil de hacer en OpenStep debido al control de versiones de las bibliotecas, y OPENSTEP no sufrió de sobrepeso por ello.
Además del puerto OPENSTEP para Mach para SPARC, Sun y NeXT desarrollaron un conjunto de marcos compatibles con OpenStep para ejecutarse en el sistema operativo Solaris de Sun. Después de desarrollar Solaris OpenStep, Sun perdió interés en OpenStep y dirigió su atención hacia Java. Como entorno de desarrollo de máquinas virtuales, Java sirvió como competidor directo de OpenStep. A diferencia de otras versiones, Solaris OpenStep tenía Interface Builder y Project Builder vendidos en un paquete separado llamado Workshop OpenStep. [5] [6]
NeXT también entregó una implementación que se ejecutaba sobre Windows NT 4.0 llamada OPENSTEP Enterprise (a menudo abreviado como OSE). Esta fue una demostración involuntaria de la verdadera naturaleza de la portabilidad de los programas creados bajo la especificación OpenStep. Los programas para OPENSTEP para Mach podían ser portados a OSE sin mucha dificultad. Esto permitió que su base de clientes existente continuara usando sus herramientas y aplicaciones, pero ejecutándolas en Windows, al que muchos de ellos estaban en proceso de cambiar. Aunque nunca fue una combinación perfecta desde la perspectiva de la interfaz de usuario, probablemente debido al enrutamiento de los gráficos de ventana de OPENSTEP a través del servidor Display Postscript, que también fue portado a Windows, OSE, sin embargo, logró funcionar bastante bien y extendió la vida comercial de OpenStep.
OPENSTEP y OSE tuvieron dos revisiones (y una importante que nunca se lanzó) antes de que Apple comprara NeXT en 1997.
Después de adquirir NeXT, Apple tenía la intención de distribuir Rhapsody como una versión reelaborada de OPENSTEP para Mach tanto para Mac como para PC estándar. Rhapsody era OPENSTEP para Mach con una apariencia Copland de Mac OS 8 y soporte para Java y las propias tecnologías de Apple, incluyendo ColorSync y QuickTime ; podría considerarse como OPENSTEP 5. Se lanzaron dos versiones para desarrolladores de Rhapsody, conocidas como Developer Preview 1 y 2; estas se ejecutaban en un subconjunto limitado de hardware Intel y PowerPC. Mac OS X Server 1.0 fue la primera versión comercial de este sistema operativo, y se entregó exclusivamente para hardware Mac PowerPC.
Después de reemplazar Display Postscript WindowServer con Quartz , y responder a los desarrolladores incluyendo una mejor compatibilidad con versiones anteriores para las aplicaciones clásicas de Mac OS mediante la incorporación de Carbon , Apple lanzó Mac OS X y Mac OS X Server , a partir de la versión 10.0; Mac OS X ahora se llama macOS.
El entorno de programación principal de macOS es esencialmente OpenStep (con ciertas adiciones como listas de propiedades XML y clases URL para conexiones a Internet) con puertos macOS de las bibliotecas y herramientas de desarrollo, ahora llamadas Cocoa .
Desde entonces, macOS se ha convertido en el sistema operativo tipo Unix de escritorio más popular del mundo, aunque macOS ya no es un sistema operativo compatible con OpenStep. [ cita requerida ]
GNUstep, una implementación de software libre de las bibliotecas NeXT , comenzó en la época de NeXTSTEP, antes de OPENSTEP. Si bien OPENSTEP y OSE fueron adquiridos por Apple, que puso fin de manera efectiva al desarrollo comercial de la implementación de OpenStep para otras plataformas, GNUstep es un proyecto de código abierto en curso cuyo objetivo es crear una implementación de software libre y portátil de las bibliotecas Cocoa/OPENSTEP.
GNUstep también cuenta con un entorno de desarrollo totalmente funcional, reimplementaciones de algunas de las innovaciones más recientes del marco Cocoa de macOS , así como sus propias extensiones a la API.