GNUstep cuenta con un IDE orientado a objetos y multiplataforma . Aparte de la interfaz Objective-C predeterminada, GNUstep también tiene enlaces para Java , Ruby , [2] GNU Guile y Scheme . [3] Los desarrolladores de GNUstep rastrean algunas adiciones a Cocoa de Apple para seguir siendo compatibles. Las raíces de la interfaz de aplicación de GNUstep son las mismas que las raíces de Cocoa: NeXTSTEP y OpenStep . Por lo tanto, GNUstep es anterior a Cocoa, que surgió cuando Apple adquirió la tecnología de NeXT y la incorporó al desarrollo del Mac OS X original , mientras que GNUstep fue inicialmente un esfuerzo de los desarrolladores de GNU para replicar las características técnicamente ambiciosas de NeXTSTEP para programadores.
Historia
GNUstep comenzó cuando Paul Kunz y otros en Stanford Linear Accelerator Center querían portar HippoDraw desde NeXTSTEP a otra plataforma. En lugar de reescribir HippoDraw desde cero y reutilizar solo el diseño de la aplicación, decidieron reescribir la capa de objetos NeXTSTEP de la que dependía la aplicación. Esta fue la primera versión de libobjcX . Les permitió portar HippoDraw a sistemas Unix que ejecutaban el sistema X Window sin cambiar una sola línea del código fuente de su aplicación. Después de que la especificación OpenStep se publicara en 1994, decidieron escribir un nuevo objcX que se ajustara a las nuevas API. El software se conocería como "GNUstep". [4]
Arquitectura de software
Representación
GNUstep contiene un conjunto de elementos de control gráfico escritos en el lenguaje de programación Objective-C.
La interfaz gráfica de usuario (GUI) de GNUMail está compuesta por elementos de control gráfico. GNUMail tiene que interactuar con el sistema de ventanas , por ejemplo, X11 o Wayland , y su interfaz gráfica de usuario tiene que ser renderizada . El backend de GNUstep proporciona un pequeño conjunto de funciones utilizadas por la biblioteca de interfaz de usuario para interactuar con el sistema de ventanas real . También tiene un motor de renderizado que emula funciones Postscript comunes . El paquete gnustep-back proporciona los siguientes backends:
Cairo – backend predeterminado que utiliza la biblioteca de gráficos 2D Cairo .
winlib: backend predeterminado en sistemas Microsoft Windows. Variantes de API de Cairo y Windows .
art – backend antiguo (obsoleto) en sistemas tipo Unix. Utiliza la biblioteca de gráficos 2D basada en vectores similar a PostScript Libart .
xlib – antiguo (obsoleto) backend X11.
Paradigmas
GNUstep hereda algunos principios de diseño propuestos en OPENSTEP (GNUstep es anterior a Cocoa, pero Cocoa se basa en OPENSTEP) así como el lenguaje Objective-C .
Además de la interfaz Objective-C, algunos pequeños proyectos bajo el paraguas de GNUstep implementan otras API de Apple:
La biblioteca Boron tiene como objetivo implementar la API Carbon . Es muy incompleta. [5]
La biblioteca CoreBase está diseñada para ser compatible con Core Foundation . No es lo suficientemente completa como para que el componente Base (Foundation Kit) sea simplemente un envoltorio a su alrededor. [6]
GNUstepWeb , un servidor de aplicaciones compatible con WebObjects 4.x
Gorm , una aplicación de creación de interfaces de usuario y parte de las herramientas de desarrollo de GNUstep. Gorm es el equivalente de Interface Builder que se encontró originalmente en NeXTSTEP , luego en OPENSTEP y finalmente en Mac OS X. Admite los antiguos archivos .nib , así como su propio formato de archivo .gorm .
Window Maker , un administrador de ventanas diseñado para emular la GUI de NeXT como parte del proyecto más amplio GNUstep
Referencias
^ Portado desde NeXTSTEP . Las compilaciones recientes, cuando se compilan con libobjc2, pueden usar una versión más nueva portada desde Mac OS X Snow Leopard .
^ "Herramientas para desarrolladores de GNUstep - RIGS". www.gnustep.org . Consultado el 10 de abril de 2018 .
^ GScheme Archivado el 18 de diciembre de 2005 en Wayback Machine.
^ "Historia de GNUstep". gnustep.made-it.com . Consultado el 10 de abril de 2018 .
^ "gnustep/libs-boron: El boro es el átomo que precede al carbono". GitHub . GNUstep. 23 de marzo de 2019.
^ "gnustep/libs-corebase". GNUstep. 19 de noviembre de 2019.
^ "gnustep/libs-quartzcore". GNUstep. 11 de diciembre de 2019.
^ "Categoría:Aplicaciones - GNUstepWiki". wiki.gnustep.org . Archivado desde el original el 23 de marzo de 2021 . Consultado el 10 de abril de 2018 .
^ "GNUstep Objective-C Runtime 2.0". GitHub . Nota: El proyecto WinObjC de Microsoft contiene una versión amigable de esta biblioteca que incluye una solución para el problema de los enlaces incrementales.
Enlaces externos
Wikimedia Commons tiene medios relacionados con GNUstep.
Sitio web oficial
Proyecto de aplicación GNUstep
Entrevista de 2003 con el desarrollador de GNUstep Nicola Pero Archivado el 7 de enero de 2007 en Wayback Machine
Entrevista semanal sobre FLOSS con Gregory Casamento y Riccardo Mottola de GNUstep
GNUstep en Debian, FreeBSD, MacPorts
Entorno de escritorio NEXTSPACE, basado en GNUstep