[LinuxFocus-icon]
Hogar  |  Mapa  |  Indice  |  Busqueda

Noticias | Arca | Enlaces | Sobre LF
Este documento está disponible en los siguientes idiomas: English  Castellano  ChineseGB  Deutsch  Francais  Nederlands  Turkce  

convert to palmConvert to GutenPalm
or to PalmDoc

Georges Tarbouriech
por Georges Tarbouriech
<georges.t(at)linuxfocus.org>

Sobre el autor:

Georges es un viejo usuario UNIX. El adora GNUstep y las herramientas que esta gran infraestructura proporciona.



Taducido al español por:
Leo Trujillo (homepage)

Contenidos:

 

Gorm y ProjectCenter, las herramientas RAD de GNUstep

ProjectCenter y Gorm

Resumen:

RAD significa Desarrollo Rápido de Aplicaciones (Rapid Application Development). A finales de los 80's, cuando NeXTstep fue liberado, venia con una herramienta increible, llamada InterfaceBuilder. Usada en conjunto con otra herramienta, llamada ProjectBuilder, permitían construir aplicaciones gráficas en un instante. GNUstep ofrece una versión Libre de estas herramientas, llamadas Gorm.app y ProjectCenter.app.


_________________ _________________ _________________

 

Érase que se era...

Desde la prehistoria de las computadoras, el desarrollo de software ha tenido un gran cambio. Las computadora eran bastantes grandes en tamaño comparadas con su bajo poder. Eran demasiado caras, no habia demasiadas y los desarrolladores no tenian la capacidad de usarlas tan frecuentemente como ellos desearían, ya que tenian que compartirlas con otras personas. Entonces, los investigadores trataron de encontrar una forma de hacer que las computadoras ejecutaran más de una tarea a la vez para mejorar la eficiencia. Obviamente, tuvieron que diseñar y crear lenguajes de programación desde cero, tomando en cuenta los pobres recursos de las máquinas disponibles.
De este modo, durante los 60's nuevos lenguajes de programación aparecieron: LISP, FORTRAN, BASIC, Algol68, BCPL, etc. Luego vino el lenguaje B derivado de BCPL que mencionamos más arriba, el cual muy pronto dió origen al lenguaje C. Este último cambió el mundo de la programación.
Los Lenguajes Orientados a Objetos (SmallTalk, Objective C, C++, etc) aparecieron más tarde, en la "Era Gráfica".
En los 80's algunas máquinas proporcionaron Sistemas Operativos gráficos (Apple Macintosh, Commodore Amiga, Atari ST, etc) y el X Window System estaba ya en funcionamiento. Al mismo tiempo, una compañía estaba trabajando en una GUI (Interface Gráfica de Usuario) para el OS2 de IBM, llamada Presentation Manager. Antes de terminar este trabajo, esta compañía liberó su "propia" GUI para el DOS, llamado... Windos. Las dos primeras versiones fueron apenas usables, pero... con la tercera dió inicio todo. ¡ La MvAI (Microsoft very Artificial Intelligence) había nacido !
Esto es, cada usuario vino a convertirse en un científico de la computación. Ya que nosotros hemos estado escribiendo "grandiosas" aplicaciones usando Excel o Word y Visual Basic:-(
¡ No se preocupe !
Afortunadamente, mucho antes que llegaramos a la situación mencionada, NeXTstep habia nacido y con él, llegó Interface Buider. Esta herramienta le permite crear una GUI para su aplicación en un breve lapso de tiempo y de manera muy fácil. De allí, esta clase de herramientas se ha extendido. Entre otros, podemos mencionar Omnis, 4D, Delphi, Kylix, etc. Algunas de ellas son multiplataforma mientras que la vasta mayoría están dedicadas a Windos. También mencionaremos que existen herramientas libres usando semejante filosofía, Gtk (Gimp Tool Kit) por ejemplo. Los Unixes propietarios también proporcionan esta clase de herramientas.
La más importante característica de dichas herramientas es que usted no tiene que escribir código para las 200 ventanas de su aplicación, sino solo administrar los datos.
Que le gusten o no esta clase de herramientas, no es el punto. El tiempo de desarrollo es corto: eso es un echo (de allí el nombre, "Desarrollo Rápido de Aplicaciones" - ["Rapid Application Development"]).
GNUstep nos proporciona herramientas RAD libres. Estas son llamadas Gorm y ProjectCenter. Naturalmente, estas herramientas son muy "jóvenes" pero funcionan. Pasemos a ver cada una de ellas.

 

GNUstep

Para ser capaz de usar tanto Gorm como ProjectCenter, necesita instalar GNUstep. El cómo hacerlo esta lejos del alcance de este artículo. Encontrará todo lo que necesita en el sitio web de GNUstep. Este incluye código fuente, HOWTOs, tutoriales, etc.
También puede revisar estos artículos: GNUstep, el OpenStep open source y GNUMail.app, la evidencia de la portabilidad.
La prueba del presente artículo ha sido realizada bajo FreeBSD 4.7 con Window Maker 0.80.1, usando gnustep-make-1.5.0, gnustep-base-1.5.0, gnustep-gui-0.8.2 y gnustep-back-0.8.2. Estos últimos son de la más reciente versión no estable de GNUstep. Pueden, si lo desean, usar las versiones estables. Por último, pero no menos importante, se uso el compilador gcc 3.0.4.

 

Gorm.app

Gorm viene de Graphic Object Relationship Modeler (o tal vez de GNUstep Object Relationship Modeler, como se indica en el archivo README). Este es un clon de NeXTstep Interface Builder, mencionado más arriba (o lo que hoy es MacOS X).
Gorm es el trabajo de Richard Frith-Macdonald que ha arrancado el proyecto. Hoy Gregory Casamento lo mantiene y hace la mayor parte del trabajo con Pierre-Yves Rivaille. La presente versión es la 0.1.9. Los más recientes CVS snapshot (que contiene periodicamente cambios) están disponibles desde http://savannah.gnu.org/projects/gnustep.
Puede descargar la más reciente versión estable desde el sitio web de GNUstep.
La filosofía detrás de Gorm (y de Interface Builder) es proporcionar al usuario objetos que se encuentran en paletas y arrastrar estos objetos en ventanas vacias para diseñar los componentes gráficos de su aplicación.
Los objetos pueden ser botones, cuadros de texto, cuadros de verificación, paneles, etc. Esto es, todo lo que usted puede agregar a una ventana para hacerla amigable al usuario. A continuación, puede modificarlos usando los inspectors. Desde los inspectors, puede cambiar los atributos, definir conexiones, tamaño, ayuda y manipulación de clases para los objetos seleccionados. Después creando una clase, usted puede agregar salidas y acciones a los objectos.
Luego que inicializa la clase, el cual crea un nuevo objeto (la instancia) en la ventana principal de Gorm, conecta las salidas y acciones a los componentes correspondientes. Usted solo arrastra el mouse desde la instancia al objeto seleccionado para conectar las salidas y desde el objeto a la instancia para conectar las acciones. Por último, crea el esqueleto de la clase de los archivos fuente, y habrá terminado. Más sobre esto más tarde.

 

ProjectCenter.app

ProjectCenter, como su nombre lo indica, es el "corazón" del proyecto. Es un clon de Project Builder que se encuentra bajo NeXTstep y Mac OS X.
ProjectCenter es el trabajo de Philippe C.D.Robert y la presente versión es la 0.3.0. Al igual que Gorm, puede descargarla desde el sitio web de GNUstep dirigiéndose a la sección Developer apps. Naturalmente, puede obtener una snapshot de CVS: para este artículo usamos la versión 0.3.1.
Desde ProjectCenter puede crear un proyecto, su interface (usando Gorm), escribir su código fuente; puede construir este proyecto y ejecutarlo (la depuración aún no esta disponible). En breve, puede administrar todos los recursos requeridos por el proyecto: código fuente, documentación, librerías, subproyectos, interfaces, etc.
Cuando usted crea un nuevo proyecto, puede elegir su tipo. Puede seleccionar entre una aplicación, bundle, herramienta, librería y una aplicación Gorm.
Entre otras cosas, ProjectCenter le proporciona un editor con el cual será capaz de completar el código del esqueleto Gorm.
¿ Cómo se hace que Gorm y ProjectCenter trabajen juntos ? Muy bien, ¡ Gracias !
Hablando ya seriamente, usaremos dos ejemplos para ilustrarlo.

 

Algunas notas previas

Este artículo NO es un Tutorial. La idea es mostrar lo fácil que es usar estas herramientas mientras insistimos en el echo de que usted será capaz de usar el mismo codigo tanto para GNUstep (esto es, para muchas plataformas Unix... y, si le gustan los "conflictos" también bajo Windos) y MacOS X. La única cosa que tiene que hacer es diseñar la interface en cada plataforma, dado que los archivos nib (InterfaceBuilder o Gorm) no son portables (al menos por ahora).
El artículo mencionado más arriba sobre GNUMail.app mostraba la portabilidad desde un punto de vista del usuario. Este artículo se enfocará desde el punto de vista del desarrollador, aún manteniendo la portabilidad en mente. Esto es, en GNUMail.app usamos el trabajo de Ludovic y amigos y aquí crearemos una GUI de aplicación tanto para GNUstep como para MacOS X.
Existen muchos tutoriales disponibles, ya sea para MacOS X o GNUstep. Puede investigar más sobre GNUstep desde el sitio web de GNUstep o bien desde http://www.gnustep.net, aunque aquí mencionaremos algunos de ellos.
- Una aplicación usando Gorm y ProjectCenter por Pierre-Yves Rivaille.
- La página de tutoriales de Nicola Pero
- Un viejo tutorial de cómo crear un HTMLEditor: http://stepwise.com/Articles/Technical/HTMLEditor/
Para aprender más, puede revisar el codigo fuente, los archivos nib, etc, de las aplicaciones existentes de GNUstep (Gorm, ProjectCenter, GNUMail, GWorkspace, etc) y obviamente, de los ejemplos gnustep.

 

Sólo llamelo "VerySimpleEditor"

Entre los numerosos tutoriales de MacOS X para InterfaceBuilder disponibles en la red, usaremos el siguiente como un primer modelo: http://www.macdevcenter.com/pub/a/mac/2001/05/18/cocoa.html. El autor Mike Beam, escribió muchos tutoriales más sofisticados disponibles desde http://www.macdevcenter.com/pub/ct/37.
¿ Por qué usaremos este ? Porque le proporciona el funcionamiento de un editor de texto sin escribir una sola línea de código. Esto muestra el poder de estas herramientas de desarrollo, ya sea que esté trabajando bajo MacOS X o bajo GNUstep.
Usando ProjectCenter.app y Gorm.app bajo GNUstep crearemos un editor de texto muy simple capáz de cortar, copiar, y pegar. Obviamente, no será capaz de guardar su trabajo: recuerde, nosotros no escribimos una sola línea de código. Usando ProjectBuilder y InterfaceBuilder bajo MacOS X haremos exactamente lo mismo. Queda claro que, no hay mucho que mejorar a este editor y se dejará esto como un ejercicio para el lector. Una vez más, ¡ este artículo no es un tutorial !
Aquí vamos.

 

Bajo GNUstep

Abrir ProjectCenter.app y crear un nuevo proyecto llamado Editor. Seleccione un proyecto de Aplicación Gorm en la parte inferior antes de guardar su nombre. Esto le proporcionará una partida de interfaces en la columna izquierda de ProjectCenter.
Haciendo clic en las Interfaces mostrará Editor.gorm. Hacer doble clic en Editor.gorm abre Gorm.app. Seleccione la ventana por defecto (MyWindow) y usando la herramienta de inspector cambie el nombre a Editor en los Atributos.
Desde la paleta, arrastre un TextView a la ventana de Editor. El TextView es el mayor objeto que se encuentra en la paleta seleccionada, usando el ícono más a la derecha en lo alto de la ventana de Paletas (Palettes). Redimencione este objeto para hacer que llene la ventana, y habrá terminado.
De nuevo, usando el inspector GormInternalViewEditor (mientras el TextView está seleccionado), elija Size y cambie los valores para hacer que coincidan con los valores de tamaño de la ventana Editor. Estos últimos son obtenidos de la misma forma, es decir, seleccionando la ventana y revisando el tamaño en el inspector GormNSWindow. Si no cambia los valores de X y de Y, por ejemplo, no será capáz de usar el ancho total del editor, ya sea que redimencione la ventana o no.
Guarde todo desde el menú Document de Gorm y salga para regresar a ProjectCenter. Seleccione el ícono Build y de clic en el nuevo ícono en la segunda mitad horizontal de la ventana. Todo debería ir bien si definió correctamente las preferencias de su compilador, depurador, etc. Por ejemplo, usando FreeBSD, debe cambiar de make a gmake (incluyendo la ruta) dando clic en el ícono Settings (Configuración) de ProjectCenter. Revise también las rutas del menú de Preferences (Preferencias) en ProjectCenter.
Si la construcción (built) ha sido todo un éxito (¡ Que así debería ser !), haga los mismo con Run y verá entonces la aplicación Editor. Juegue un poco con él, escriba algo, corte, pegue, etc. Naturalmente, puede reiniciarlo más tarde usando el comando openapp.
¿ Cuánto toma hacer todo esto ? Bueno, yo diría que unos pocos minutos.

Aquí tenemos como debería verse durante la fase de desarrollo:

EdDev

y la aplicación resultante:

Editor

 

Bajo MacOS X

No hay mucho que decir dado que se hará lo mismo que lo mostrado más arriba. Así es como se ve mientras se diseña la GUI:

EdDev

Y aquí el editor "Trabajando":

Editor

 

Y ahora... una verdadera aplicación en funcionamiento

Ahora seleccionaremos otro ejemplo de Mike Beam. En esta ocasión es una aplicación completa en funcionamiento, capaz de administrar datos: un libro de direcciones. Es recomendado leer el tutorial de Mike acerca del libro de direcciones (asi como muchos otros) para entender como es que la "cosa" trabaja. También revise el listado del tutorial dado que Mike proporciona diferentes pasos en el proceso de desarrollo para la misma aplicación que permitirán mejorarla.
Volveremos a crear y ejecutar la aplicación tanto para GNUstep como MacOS X.

 

Bajo GNUstep

Así como lo hizo para el Editor simple, inicie ProjectCenter.app. Seleccione una aplicación Gorm y llámelo AddressBook. Desde ProjectCenter lance Gorm dando doble clic en Interfaces -> AddressBook.gorm. Arrastre un TableView desde la paleta a la ventana por defecto. En otras palabras, siga el tutorial de Mike como lo haría estando bajo MacOS X. Tendrá que adaptar algunas cosas dado que estas funcionan diferente en Gorm y en InterfaceBuilder.
Por ejemplo, el número de columnas en la TableView no puede ser definido desde los atributos del inspector en Gorm. Mantengamos las cosas simples, solo copie una columna y a continuación obtendrá el número requerido (4 en nuestro caso). Debería obtener algo como esto:

ABdev


Cuando ha terminado con esto, guarde todo y regrese al ProjectCenter para escribir o modificar el código. En caso que cometa un error, Mike proporciona el código fuente completo de la aplicación. Si lo descarga, basta copiar y pegar el código en sus propios archivos Controller.m y Controller.h generados por Gorm. No incluir (importar en la terminología de Objective C) Cocoa.h dado que esta reservado para MacOS X. Por otro lado, debería mantener el esqueleto "escrito" por Gorm y cambiar algunas cosas. Por ejemplo, reemplace el void por IBAction en Controller.h y Controller.m. Agregue IBOutlet después del id en Controller.h.
De cualquier modo, si así lo desea, puede mantener el código proporcionado por completo: solo reemplace la inclusión en cocoa con #import <AppKit/AppKit.h>. Ahora, Puede contruir y ejecutar la aplicación.
Llegado a este punto: puede iniciar a jugar con su nuevo libro de direcciones.
Esto es lo que usted verá:

AddressBook

 

Bajo MacOS X

Mike Beam hizo el trabajo completo: ¿ Qué más podría yo agregar ?

Aqui tenemos una captura de pantalla del proceso de desarrollo bajo MacOS X:

ABdev

Y aquí la aplicación resultante:

AddressBook


¿ Y luego ? Bueno, tomará unos minutos diseñar la GUI y el código en su totalidad representa un poco más de 2000 bytes. Nada mal, ¿Cierto?
De nuevo, se pueden hacer muchas mejoras ¡ pero tal como esta trabaja bien ! Ahora, usted puede jugar con el código para obtener un mejor libro de direcciones...

 

GNUstep y MacOS X

Obviamente, las herramientas de desarrollo GNUstep no pueden ir más allá que las de Apple. Apple y NeXT representan 15 años de experiencias con cientos de desarrolladores. GNUstep es el trabajo (sin renumeración) de unos cuantos individuos que tienen que hacer algo para vivir. Por ende, no será soprendente encontrar, por ejemplo, muchas más clases disponibles en InterfaceBuilder que en Gorm. Recuerde, Gorm esta en su versión 0.1.9 (o 0.2.0).
Además, hicimos las pruebas de la forma "dura". Esto es, nosotros "portamos" desde OS X hacia GNUstep. La otra forma debería de ser mucho más fácil poque que como se mencionó más arriba existen diferencias entre las herramientas.
Por ejemplo, portar aplicaciones de desarrollo bajo MacOS X 10.2 debería ser mucho más difícil dado que las nuevas herramientas de desarrollo de Apple tiene muchas mejoras. Como ya lo mencionamos, existen muchas clases nuevas disponibles y mucho más elaboradas.
Sin embargo, las herramientas cuentan con la misma filosofía ya sea que funcionen bajo GNUstep o MacOS X... y GNUstep mejora cada día. Una cosa que se ve muy agradable para mí: la gente de GNUstep realmente trabaja en conjunto. Ellos se ayudan entre sí cuando proyectos individuales están comprometidos y también contribuyen en mejorar el núcleo de GNUstep. Esta es la manera de trabajar del Software Libre que me gusta. Felicitaciones por este comportamiento a Mr.Fedor y amigos.

 

Imaginando...

La meta de este artículo era mostrar el poder de las herramientas "RAD" de GNUstep, Gorm.app y ProjectCenter.app. A pesar de su "juventud" estos pueden ayudarle a desarrollar aplicaciones agradables de una manera muy sencilla.
Además, estas herramientas proveen una grata forma de trabajo y por el momento muy eficiente. Objective C es un lenguaje muy compacto y, en mi opinión, mucho más fácil de aprender que C++ para aquellos que tengan conocimientos de C (Lo sé, ¡ Ya lo he dicho !). Esto permite diseñar aplicaciones con buen aspecto (bueno, esto es cuestión de gustos, pero a mi me gusta este aspecto y comportamiento) mientras las mantiene en un tamaño realmente reducido.
Debo admitir que nunca me he recuperado del shock que recibí cuando me encontré por primera vez con la máquina NeXT. El echo de que Apple liberara una moderna versión de NeXTstep me complació. Esto es también porque yo soy muy aficionado a proyectos tales como GNUstep o Window Maker. Sin embargo, amo el software libre pero no soy un "fundamentalista" y por ende, no estoy en contra del software propietario (bueno, tal vez un poco en contra de un editor específico... pero, ¡ sólo un poco !).
GNUstep puede beneficiarse de Apple... pero Apple puede beneficiarse de GNUstep también. GNUstep no es un competidor de Apple, es software libre. Hasta donde yo sé, el software libre es ampliamente usado en OS X. Esto indica que brindar aún más software libre a Apple no puede ser una cosa mala. Lo que Ludovic y amigos hicieron con GNUMail.app es un buen ejemplo de lo que podría suceder.
"Yo tuve un sueño"... Apple estaba proporcionando muchas de sus herramientas de desarrollo con código fuente a GNUstep. Los desarrolladores de GNUstep y Apple estaban trabajando juntos para brindar grandiosas aplicaciones a los usuarios de Unix. Y lentamente, la gente estaba comprendiendo que ellos podrían vivir sin Windos...
Desafortunadamente, era solo un sueño ;-)
De cualquier manera, si usted no conoce GNUstep y sus aplicaciones, siéntase libre de conseguirlos y probarlos. Recuerde que, GNUstep es una infraestuctura, y herramientas tales como Gorm y ProjectCenter le proporcionan todo para crear, para inventar. En otras palabras, con un poco de imaginación, puede desarrollar "productos" muy diferentes que se pueden ver hoy en día : ¡ como clones de aplicaciones Windos !
¡ Vivimos una época maravillosa !

 

Gracias...

A la gente de GNUstep: A.Fedor, N.Pero, G.Casamento, P.Y.Rivaille, N.Roard, L.Marcotte, R.Frith-Macdonald, P. C.D.Robert, E.Sersale, A.Froloff, F.Kiefer, M.Viviani, M.Guesdon y todos aquellos que pudiese olvidar por el gran trabajo tanto para el entorno de trabajo o las aplicaciones.
A la gente de Window Maker: A.Kojima, D.Pascu y amigos por brindarnos una interface libre de NeXTstep para X.
A J.M.Hullot y B.Serlet por inventar InterfaceBuilder.
A "Steve Jobs INC." por brindarnos NeXT, NeXTstep y MacOS X.
A toda la gente no mencionada aquí que ha contribuido para hacernos una vida profesional mucho menos triste.  

Formulario de "talkback" para este artículo

Cada artículo tiene su propia página de "talkback". A través de esa página puedes enviar un comentario o consultar los comentarios de otros lectores
 Ir a la página de "talkback" 

Contactar con el equipo de LinuFocus
© Georges Tarbouriech , FDL
LinuxFocus.org
Información sobre la traducción:
en --> -- : Georges Tarbouriech <georges.t(at)linuxfocus.org>
en --> es: Leo Trujillo (homepage)

2002-12-19, generated by lfparser version 2.34