GNUstep es una implementación de software libre de los marcos de trabajo Cocoa (anteriormente OpenStep ) , el conjunto de herramientas de widgets y las herramientas de desarrollo de aplicaciones Objective-C para sistemas operativos tipo Unix y Microsoft Windows . Es parte del Proyecto GNU .
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 .
- Paradigma modelo-vista-controlador
- Objetivo-acción
- Arrastrar y soltar
- Delegación
- Reenvío de mensajes (a través de NSInvocation)
Otras interfaces
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]
- La biblioteca QuartzCore implementa las API de animación principal . [7] La biblioteca Opal implementa Quartz 2D .
A febrero de 2020 [update], no hay proyectos que creen el lenguaje de programación Swift contra el entorno GNUstep Objective-C.
Aplicaciones
A continuación se muestran algunos ejemplos de aplicaciones escritas o trasladadas a GNUstep. [8]
Escrito desde cero
- Direcciones, un gestor de direcciones/contactos
- Étoilé, un entorno de escritorio
- GNUMail , un cliente de correo electrónico
- Biblioteca de base de datos GNUstep 2, un clon de Enterprise Objects Framework
- 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 .
- GWorkspace, un espacio de trabajo y gestor de archivos
- Grr, un lector de feeds RSS
- Oolite , un clon de Elite , un juego de simulación espacial con componentes comerciales
- PRECIO, aplicación de imágenes
- ProjectCenter, el generador de proyectos o equivalente de Xcode .
- TalkSoup, un cliente de IRC
- Terminal
- Zipper, una herramienta para archivar archivos
Portado desde NeXTSTEP, OPENSTEP o macOS
- Adún
- Biocacao
- Ajedrez
- Cenon
- Condenado
- Matemáticas del Edén
- Berenjena
- Emacs
- Afortunado
- Gomoku
- Siguiente
- PikoPixel
- TextoEditar
- HoraMon
Bifurcaciones de GNUstep
- Plataforma universal de Windows , que incluye una suite WinObjC que consta de varias partes de GNUstep y las propias implementaciones de Microsoft de cosas como la API Cocoa Touch . [9]
Capacidades de la clase
Kit de base
El Foundation Kit proporciona clases básicas como clases contenedoras y clases de estructura de datos.
Kit de aplicación
El kit de aplicación proporciona clases orientadas a las capacidades de la interfaz gráfica de usuario .
Véase también
- Darling (software) , una capa de compatibilidad que se basa en GNUstep
- Paquete pesado de GNUstep
- GNUstep Renaissance , marco para la descripción XML de interfaces de usuario portátiles de GNUstep/Mac OS X
- Columnas de Miller , el método de exploración del árbol de archivos que utiliza el Visor de archivos de GWorkspace
- Lista de propiedades , formato de archivo que se utiliza a menudo para almacenar configuraciones del usuario
- StepTalk , marco de trabajo de scripting
- 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
- 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