You are on page 1of 44

INFORMACIÓN TÉCNICA Y DE GESTIÓN PARA i5 e iSeries

Programación en CGI
Desarrollo con CGIDEV2
Consideraciones sobre Java

Interfaces de usuario
en el iSeries
Mejor portabilidad:
Enterprise
Generation Language

Suplemento HELP400
RPG e IFS:
Obtener información
sobre los archivos

156 ERS
15
NI V
ARI

O A
editorial

¿Quién dijo vacaciones?


A
trás quedan los días de vacaciones y comenzamos de nuevo, después de
haber recargado energías, la labor profesional que dejamos aparcada
durante el mes de agosto. Ponerse al día puede resultar algo duro para
todos pero en la Redacción, tras dos meses de “ausencia”, tenemos la
ilusión de reencontrarnos con nuestros lectores y retomar la labor
diaria con más fuerza para encarar unos meses que, desde el punto de vista del
sector, se presentan llenos de contenidos, presentaciones y novedades.
Para la industria de las Tecnologías de la Información no existen las vacaciones,
ni siquiera durante el mes de agosto. Recordemos que ahora hace diez años, con-
cretamente el 24 de agosto de 1995, Microsoft lanzó su Windows 95 que, en pocos
meses, se convirtió en el entorno gráfico de los PC de todo el mundo. Para celebrar-
lo, desde el 2 de agosto de este año su último descendiente, hasta ahora conocido
como Longhorn, ya tiene nombre: Windows Vista, el que será, a partir de 2006, el
nuevo sistema operativo de escritorio de Microsoft.
Recordemos también que Bill Joy, cofundador de Sun Microsystems y uno de los
desarrolladores del Unix de Berkeley, juzgó que Internet podría ser el campo de
batalla más adecuado para disputar a Microsoft su primacía casi absoluta en el
terreno del software, y vió en un lenguaje interno de Sun, Oak, el instrumento
idóneo para llevar a cabo estos planes. Tras un cambio de nombre y modificaciones
de diseño, el lenguaje Java fue presentado al mundo también en agosto de 1995.
IBM, tras dos años de vacilaciones, en Java encontró la respuesta definitiva a
sus dudas sobre qué lenguaje utilizar, C++ o SmallTalk, para su nueva generación
de AS/400, los llamados “AS/400e Series”, presentada el 19 de agosto de 1997,
Imagen de la portada: Mike Friehauf
junto con la V4 del OS/400 y todos sus planes y herramientas para que las empre-
Suscripción: Anual (10 números sas pudieran beneficiarse de inmediato de las oportunidades del denominado e-
al año, no en Julio y Agosto).
España: 96 euros (IVA incluido). business, “el comercio electrónico del siglo XXI”, según rezaba la publicidad de
Extranjero: 180 $ USA (incluido el IBM de aquellas fechas...
envío por Correo Aéreo). Se
distribuye a final de mes.
Mucho hemos hablado de Java en la revista, tanto que hasta hemos publicado
un libro, “Java para programadores RPG”. Así que, para iniciar la nueva tempora-
© Publicaciones HELP400, S.L.
Se prohibe la reproducción total o parcial
da como se merece, proseguimos con un tema que puede parecer polémico: la de-
de los artículos aparecidos en este fensa del ILE RPG del iSeries como lenguaje práctico y polivalente. Como se indica
número sin la autorización expresa por
escrito de la empresa editora, titular del en uno de los artículos de este número “Hoy, más que nunca, las empresas están
Copyright. Todos los derechos reservados
en cualquier idioma.
interesadas en encontrar la mejor forma de ofrecer aplicaciones web interactivas a
ServerNEWS es una publicación sus clientes y usuarios. Con tantas opciones disponibles... solemos pasar por alto la
independiente de grupos de usuarios y/o
de distribuidores de marcas. De las ideas mejor solución y la más sencilla”. Si sabemos aprovechar las ventajas de Internet
expuestas en los artículos firmados son
responsables sus autores. Corresponde al
y confiamos en la profesionalidad y experiencia de nuestro equipo informático,
lector el asegurar que las noticias, expandir el negocio, reducir costes o responder a las demandas de los clientes más
técnicas y procedimientos descritos son
adecuados para su instalación. exigentes será una tarea sencilla.
Publicaciones HELP400 S.L. no
asume ninguna garantía ni implícita ni
explicitamente.
La empresa editora no se responsabiliza de
la asiduidad en la distribución gratuita a
las empresas españolas equipadas con
S/3X o AS/400.

IBM y AS/400 son marcas registradas


Antonio Montía
por International Business Machines. a.montia@help400.com

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 3


sumario
ANTES HELP400, LA REVISTA PARA EL PROFESIONAL DE LOS S/3X Y AS/400

equipo editorial
Director: Antonio Montía
en portada
Redacción: Carlos Bell, Alberto C. Blanch,
Equipo internacional de iSeries NEWS RPG: un puente entre dos mundos
Colaboradores habituales: Jaime Gustavo
Estany, José Mª Martín, Lluís Peiret
Traducciones: Pere J. Francisco Brumós
10 por Carlos Bell
Al margen de que en su día IBM eligiera Java para el desarro-
producción llo web en el iSeries, en el mercado existen tantas soluciones
Realización: Media Limits S.L. que puede darnos la sensación de que para este tipo de aplica-
Maquetación: Ramiro Esteve Coll ciones es necesario “utilizar otra cosa” en lugar de profundizar
Impresión: G2B gràfic S.L. en lo que ya conocemos, el RPG, y aprovechar la experiencia
Distribución: Unipost S.A.
que con él hemos adquirido.
administración
Suscripciones : Nuria Navarro
Publicidad: Tel. 34- 932 310 049
Fax: 34-932 310 309
CGIDEV facilita la vida a los programadores
12
Servicio HelpNet: www.help400.es
edita de RPG
PUBLICACIONES por Jef Sutherland
CGIDEV2 es un kit de herramientas de desarrollo de páginas
Deposito legal: B-2757-90 web gratuito suministrado por IBM que enmascara la
I.S.S.N. 1698-4501 complegidad de la programación CGI. Como veremos, CGIDEV2
APTDO. DE CORREOS 8003 - 08080 Barcelona ofrece un medio de incluir páginas HTML en programas escri-
Gran Vía Corts Catalanes, 715, Entlo. 3ª
tos en RPG como si fueran plantillas, llevar a cabo sustitucio-
08013 - Barcelona
Tel.: 932 310 049 Fax: 932 310 309
nes de variables y devolver páginas HTML al navegador.
E-mail: help400@help400.com

Director General: Alberto C. Blanch Llangostera

Programación en CGI y el iSeries


18
Publicado con la participación de

por Bradley V. Stone


- iSeries NEWS
www.pentontech.com En el artículo se analizan las posibilidades del CGI. La progra-
mación en CGI existe en el iSeries desde hace muchos años.
Group Publisher/Editor: Wayne Madden
Group Editorial Director: Dale Agger
Desde la V3R2 del OS/400, IBM ha proporcionado APIs que
Penton Technology Media
permiten a los programadores crear páginas web totalmente
Darrell C. Denny, President funcionales sin necesidad de utilizar soluciones caras y que con-
Penton Media, Inc. sumen muchos recursos.
David Nussbaum, Chief Executive Officer

LATINOAMERICA

distribuidores
Belice, El Salvador, Guatemala y Honduras
VIACOMP
6ª Avenida. "A" 2-83 Zona 10
Ciudad de Guatemala, GUATEMALA 01010
Telf. 502-360-0358 y 360-0350
Fax 502-332-33694
email: viacomp@guate.net
www.viacomp.net
Perú
COMMON PERU
Bajada Balta 131, Of. 10, 2º Piso
Miraflores Lima 18, PERU
Telf. y Fax: 46 31 32
Paraguay
ANGEL LIERNUR E HIJO
P.O. BOX 2448
ASUNCION - PARAGUAY
427661@telesurf.com.py
e-mail: aliernur@yahoo.com

4 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


Nº 156 AGOSTO-SEPTIEMBRE 2005 www.help400.es
opinión

8 RPG ha muerto... ¡viva RPG!


por Carson A. Soule
El autor se pregunta si el RPG puede evolucionar o acabará extinguiéndose.
El soporte dado a RPG por parte de la comunidad de usuarios de iSeries
sigue siendo firme, pero al igual que le ocurre a la generación del baby boom,
un linaje de expertos en RPG está aproximándose a la jubilación. ¿Quién
será luego su abanderado?

management

24 Sobre las interfaces de usuario


por Jef Sutherland
La flexibilidad del iSeries es ventajosa a la hora de desarrollar interfaces de
usuario y trabajar con ellas. Podemos tener la mejor lógica y las mejores
rutinas de proceso bajo la interfaz de usuario, pero si ésta no obtiene la
información correcta o no se presenta en forma inteligible, habremos despil-
farrado la inversión realizada en la aplicación.

26 Mejor portabilidad: introducción al “Enterprise


Generation Language”
por George Farr, Phil Coulthard y Kushal Munir
Un nuevo artículo de la serie sobre el trayecto que lleva del RPG a J2EE
para desarrolladores del iSeries. En esta ocasión, y siguiendo la explicación
del cuarto paso del itinerario, que trata sobre una mejor portabilidad, se
presenta otra tecnología llamada “Enterprise Generation Language” que
puede ayudarnos a desarrollar aplicaciones portables.

programación y sistemas forum.help400


F orum.help400 es una lista de correos

34 Aplicaciones Java basadas en web


por Don Denoncourt
Antes de que su empresa se embarque en el desarrollo de una aplicación
puesta a disposición de los lectores de
ServerNEWS en la que cada día se solu-
cionan numerosos problemas entre todos
escrita en Java para la web, debería tener en cuenta una serie de considera- los participantes. Hallará más información
ciones tecnológicas. En este artículo encontrará la información necesaria en http://www.help400.es
para seleccionar la combinación tecnológica más apropiada para sus aplica-
ciones.

HELP400 Suplemento Técnico i

1 Obtener información sobre los archivos


por Scott Klement
En los artículos anteriores sobre el RPG y el IFS hemos visto cómo leer y
SECCIONES
HABITUALES
grabar archivos continuos en el sistema de archivos integrado (IFS). IBM
también nos ofrece algunas API para obtener información sobre los ar-
chivos del IFS. En esta ocasión nos centraremos en cómo recuperar esta 3 Editorial
información y cómo modificar los atributos de esos archivos. 6 Novedades
40 Guia
www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 5
AGOSTO-SEPTIEMBRE 2005 ServerNEWS 5
novedades
■ Reunion Nacional
de Common 2005 en
La consola de rendimiento de Tango/04 Granada

ahora también para Windows Los próximos días 20 y 21 de Oc-


tubre tendrá lugar en el Hotel
Carmen de Granada la reunión
Gestión flexible de rendimiento en múltiples plataformas anual de Common Europe Espa-
ña. Durante el encuentro se tra-

A hora, las empresas que buscan optimizar la disponibilidad y el tiempo de respuesta de sus siste-
mas y aplicaciones de informática pueden consolidar la monitorización de los signos vitales de sus
tarán, entre otros, temas de Busi-
ness Inteligence y Soluciones de
servidores Windows y iSeries (CPU, disco, memoria, trabajos, etc.) en una consola única de Gestión de continuidad; y, en el apartado de
Niveles de Servicio. Experiencias de Usuario, se pre-
El nuevo VISUAL Control for Windows 9, lanzado por Tango/04 Computing Group, lo hace posible sentará la conexión de cajeros
capturando e integrando en su consola de gestión de rendimiento métricas procedentes de servidores autómaticos a un iSeries, en base
con Windows Management Instrumentation (WMI) y Simple Network Management Protocol (SNMP). a la experiencia real de la empre-
Desde hace diez años, cientos de compañías han utilizado VISUAL Control for Windows para asegu- sa EMASAGRA.
rar la disponibilidad de sus sistemas, gestionar sus Acuerdos de Nivel de Servicio (SLA) y potenciar sus Para más información,
procesos de negocio en infraestructuras basadas en servidores iSeries. Ahora, con la versión 9, los depar- Telf.: 912.116.114
tamentos de informática pueden controlar simultáneamente, desde una sola interfaz gráfica e intuitiva, www.common-es.org
cualquier cantidad y combinación de servidores iSeries y Windows, además de aquellos basados en
SNMP.
“VISUAL Control for Windows ha evolucionado hasta ser una solución de gestión de rendimiento muy flexi- ■ VII Reunión anual
ble,” dice Raúl Cristián Aguirre, Gerente de Tango/04 Computing Group. “Las poderosas herramientas de de usuarios de ASNA
programación de la versión 9 permiten alinear fácilmente la gestión de niveles de servicio con los objetivos de Visual RPG
negocio de cada empresa, lo cual se traduce en una mejora inmediata en la cuenta de resultados”.
Además de servidores iSeries y Windows, VISUAL Control for Windows 9 puede monitorizar sistemas CaCovai 400, anuncia la “VII re-
Linux, UNIX y AIX gracias a la tecnología ALEV de Tango/04, que permite aprovechar al máximo el unión anual de usuarios de AVR”,
protocolo SNMP. Los operadores pueden además desarrollar scripts, definir variables y especificar um- que se celebrará los días 6 y 7 de
brales propios y condiciones de alerta con el editor de expresiones lógicas ALEV. Octubre en el Hotel Bodega Real,
“A veces es necesario recibir una alarma de rendimiento cuando el umbral de utilización de memoria de en el Puerto de Santa María.
un trabajo ha sido sobrepasado, pero sólo si es procesado en un servidor específico durante un período de Como en anteriores ocasiones,
tiempo preciso y si lo ejecuta un determinado usuario. Este es un ejemplo del nivel de personalización que este año se presentarán las nue-
un director de informática puede necesitar en su trabajo diario, y que con Tango/04 puede conseguir muy vas versiones de AVR Clásico,
fácilmente,” agrega Raúl Cristián Aguirre. AVR. Net y Monarch. Y se mostra-
Más de dos mil parámetros de rendimiento pueden ser monitorizados y controlados para ejecutar rán potentes aplicaciones desarro-
ajustes en forma automática antes de que los procesos de negocio sean afectados. Los usuarios pueden lladas con AVR.
personalizar en cualquier vista qué parámetros mostrar, filtrando la información irrelevante. Para más información,
Los indicadores claves de actividad de sistema incluyen: utilización de CPU por tipo de trabajo, los 10 Telf.: 902.365.787
usuarios y trabajos más abusivos, utilización de disco, tiempos de respuesta, trabajos (por tipo de traba- www.cacovai.com
jo, usuario, subsistema, colas de trabajo y colas de salida), utilización de particiones lógicas (LPAR),
datos de pool de memoria, tráfico de red y muchos más. ■ Storage Forum
Cuando se sobrepasa un umbral de rendimiento importante en un sistema, VISUAL Control for Barcelona 2005
Windows puede ejecutar una alarma de acuerdo con reglas y variables especificados por el usuario. Los
administradores pueden programar acciones automáticas tales como modificar las prioridades de los Tras el éxito de las ediciones de
procesos, ejecutar comandos locales o remotos y alterar los atributos de trabajos para corregir un pro- Storage Forum en Madrid, este
blema. Si se requiere la intervención de un operador, la consola puede año Barcelona acoge el Storage
emitir una alerta por email o SMS y escalarla a diferentes personas Forum 2005, el salón profesional
hasta que el problema sea resuelto. por excelencia dedicado a las tec-
Para más información, Telf.: 932.740.051 - www.tango04.es nologías de almacenamiento de
datos que se presentará los días
25 y 26 de octubre, en el Barceló
■ Adélia: 4GL para Adélia Studio. La compañía ubi- desarrollo de las siguientes arqui- Hotel Sants.
desarrollos en cada en Figueres (Girona) acumu- tecturas: entornos gráficos C/S Se estructurará en dos ciclos de
plataformas iSeries, la una experiencia en el mercado multi-plataforma y multi-BDs – conferencias temáticas. El prime-
Gráficas C/S y Web informático de más de 14 años DB2/400, SQL, etc.- (Adélia Visual ro orientado a casos prácticos,
gestionando diversos sectores in- Studio) que genera Java y/o C; nuevas tendencias y estrategias
Innova Estudi Soft, especialis- dustriales y especialmente el sec- Web en entornos JAVA-J2EE del sector del Almacenamiento y
tas en programación a medida, en tor eléctrico. (Adélia Web Studio); y 5250 nati- Seguridad de datos. El segundo
Gestión Documental, en solucio- Adélia Studio consta de una vas sobre iSeries (Adélia iSeries dará la palabra a los actores del
nes Internet para empresas y Bu- gama de herramientas de desarro- Studio) que genera RPG. mercado para presentar sus nue-
siness Partner Advanced de IBM, llo articuladas alrededor de un Para más información, vos productos y tecnología.
es el nuevo distribuidor para Es- modelo conceptual y de un 4GL Telf.: 972.673.367 Para más información,
paña de la herramienta CASE que permiten la concepción y el www.innova-soft.com www.storage-it.com

6 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


■ Seminario de tions y se presentarán ejemplos do por Tango/04 Computing La experiencia de los ponentes
optimización de la prácticos de ahorros significativos Group, y que se celebrará el día en proyectos de monitorización
gestión de iSeries de recursos y casos reales de clien- 5 de Octubre en Barcelona, el día multiplataforma aportará a los
tes con cifras de mejoras de ren- 6 de Octubre en Madrid y el día asistentes conocimientos y técni-
¡Descubra cuánto puede ahorrar dimientos y utilización de iSeries. 14 de Octubre en Buenos Aires, cas útiles para conseguir objetivos
su instalación al optimizar la ges- responderá de modo ameno y demostrables. Se podrán conocer
tión de recursos de su iSeries! Al práctico a estas y muchas otras de primera mano las mejores prác-
detectar las posibilidades, imple- ■ Redbook de IBM preguntas fundamentales para ticas de la industria y sacarles
mentar políticas de monitoriza- sobre Integración de que las empresas sean más com- provecho, tanto si se necesita me-
ción, descubrir las reservas y efec- .Net con el iSeries petitivas y exitosas. dir el rendimiento de los servido-
tuar las operaciones necesarias Business Service Management res, como si debe cumplirse una
–todo sin interrumpir el trabajo Carlos Carminati, Director del (BSM) puede ayudar a mejorar ley (LOPD, SOX) o alcanzar estric-
de los usuarios– la mayoría de las área de tecnología de d2B Net- los niveles de servicio, reducir tos niveles de servicio (SLA).
instalaciones pueden liberar en- work, de Montevideo (Uruguay), costes, prevenir problemas y ga- Para más información,
tre 20% - 40% de los recursos com- empresa formada por expertos en rantizar la satisfacción de los Telf.: 932.740.051
prometidos de su iSeries. el desarrollo de soluciones basa- usuarios. www.tango04.es/eventos
Software Greenhouse pre- das en las tecnologías .Net de
senta, el día 15 de Noviembre en Microsoft, fue invitado especial-
Madrid y el 16 en Barcelona, sen- mente ha realizar una residencia
dos seminarios de gestión de re- en IBM Rochester, con el objetivo
cursos de iSeries, con el lanza- de escribir junto a un equipo de
miento del producto OS Director especialistas, el libro “IBM Red-
de Vision Solutions. Este nuevo book 2005” sobre integración de
producto ha sido incorporado a la
línea de productos del conocido
Microsoft.Net Framework con los
sistemas iSeries (AS/400 e i5) de iSeries Developers Roadmap:
proveedor de Alta Disponibilidad, IBM.
al ser adquirida por parte de Esta experiencia posiciona al Bienvenida de IBM a ASNA
Vision Solutions la empresa bri- equipo de desarrollo tecnológico on la inclusión de ASNA en el “iSeries Developers Roadmap”,
tánica OS Solutions. OS Director
es una excelente herramienta
de d2B Network como experto en
integración de desarrollos .NET
C se unen las estrategias de IBM y Microsoft para los servicios
Web y la implementación de arquitecturas orientadas a servicios
para la optimización de rendi- sobre la plataforma iSeries, espe- (SOA).
mientos y de utilización de recur- cialmente con bases de datos DB2 ASNA anuncia que IBM oficialmente ha añadido sus soluciones
sos de iSeries que suministra un Universal DataBase. El libro ha de desarrollo basadas en Windows y .NET, en el denominado
amplio rango de funcionalidades sido editado por IBM y, si está in- “iSeries Developers Roadmap”, un componente crítico del progra-
de monitorización, gestión y opti- teresado, puede descargarse una ma de soporte y ayuda a terceros de IBM, conocido como “Iniciati-
mización. versión en PDF desde la dirección: va para la Innovación del iSeries”.
El CEO de Vision Solutions, www.d2bnetwork.com/ La inclusión de las soluciones para el iSeries de ASNA en la
Nicolaas Vlok, comenta respecto download/ “Hoja de ruta” de IBM, junto con el apoyo de Microsoft a través de
a la reciente adquisición: “El RedBook_IBM-2005.zip la “Midrange Alliance Program” (de la cual ASNA es cofundadora),
mercado de Alta Disponibilidad si- proporciona a los usuarios de iSeries la única solución .NET com-
gue evolucionando y han surgido pleta para la modernización de aplicaciones avalada por ambas
nuevos requerimientos, tales como ■ Seminario de empresas, IBM y Microsoft. Los usuarios de iSeries que busquen
reducir el volumen de discos utili- Gestión de Servicios las mejores soluciones para modernizar sus sistemas midrange,
zado, mejorar rendimientos y apro- de Negocio (BSM) ahora pueden estar seguros de que cuentan con el apoyo tanto de
vechar al máximo todos los recur- IBM como de Microsoft en sus esfuerzos de migración a .NET
sos del sistema, al mismo tiempo ¿Qué es BSM? ¿Cómo estructurar
Las herramientas de terceros incluidas en el “iSeries Developers
que se mantiene alta disponibili- un proyecto de monitorización?
Roadmap”, son consideradas como los primeros productos que cum-
dad. Vision Solutions ha estado ¿Cómo mejorar el rendimiento y
plen con los rigurosos criterios de la iniciativa para la “Innovación
trabajando en esta dirección y esta la disponibilidad de las aplica-
del iSeries” de IBM. Una iniciativa diseñada por IBM para incre-
adquisición significa un rápido ciones? ¿Por qué el control de los
mentar su apoyo a los miles de ISVs y proveedores de herramien-
avance y permite una integración servicios de negocio es la mayor
tas para que éstos amplíen sus capacidades a través de nuevas e
inmediata de optimización de sis- prioridad para los directivos infor-
innovadoras soluciones eServer.
temas con alta disponibilidad.” máticos?
El contar con los productos Windows y .NET de ASNA, es un
En el seminario actuará como El seminario gratuito “BSM
reflejo del reconocimiento de IBM a la heterogeneidad de los
invitado principal (con traducción 2005: De la monitorización de in-
entornos, y del importante papel que actualmente juega .NET en
simultánea) Mike Ryan, director fraestructura a la monitorización
las estrategias de muchas empresas. “IBM reconoce claramente el
de la división OS de Vision Solu- de servicios de negocio”, organiza-
éxito y adopción de .NET entre las empresas con sistemas iSeries, a
menudo a expensas de WebSphere y JAVA” comentó Anne Ferguson,
presidenta de ASNA, añadiendo: “Y es correcto, porque añadiendo
Si como proveedor posee alguna novedad relacionada con el iSeries - AS/400 de IBM,
recuerde que en esta sección dispone de un espacio gratuito para darla a conocer a los productos de ASNA, IBM cubre todas las posibilidades en inte-
todos nuestros lectores. Puede enviar sus notas de prensa a ServerNEWS, Gran Vía Corts rés de sus clientes...”. El distribuidor de ASNA para España y Por-
Catalanes, 715, Entlo 3ª 08013 - Barcelona. Para la inclusión de fotografías, agradecería- tugal es la empresa CaCovai 400.
mos que las remitieran en formato electrónico.
Para más información, Telf.: 902 365 787 - www.cacovai.com

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 7


opinion por Carson A. Soule

RPG ha muerto... ¡viva RPG!


omo fui uno de los primeros (re- bajar con la base de datos y utilizar HTML para la definición de

C lativamente) en usar RPG a


principios de los años 70, tuve
que aprender a programar yo
solo. En aquel entonces no ha-
bía ni clases de programación, ni departamentos de informática
la interfaz. Significa sustituir RPG por un lenguaje nuevo.
En estos tiempos de sistemas abiertos y código libre, ¿debería
IBM seguir invirtiendo en un lenguaje que probablemente nun-
ca sea totalmente “moderno”? ¿Debería invertir en un nuevo len-
guaje de formato libre que conquiste tanto los corazones como
en las universidades... sólo algunos chicos que utilizaban las mentes de la comunidad de usuarios de RPG? Ninguna op-
mainframes y trabajaban en Cobol, algo de ensamblador y ción parece lo bastante convincente. Con la desaparición del HP
un poco de Basic para los servicios tiempo compartido. La 3000 se ha perdido la única implantación importante que no era
programación estructurada no se había inventado. Había des- de IBM. El iSeries está solo. No es difícil prever en última ins-
tellos de cosas venideras en trabajos de Parnas y Dijkstra, tancia el fallecimiento de RPG independientemente de los in-
pero no teníamos ni idea de cómo aplicarlas a RPG II. tentos que haga IBM para salvarle la vida con el formato libre.
RPG era único tanto conceptualmente como en la forma en RPG y el iSeries tienen algunos problemas graves. La au-
que se ejecutaba. Tocábamos el cielo y al mismo tiempo su- sencia de una interfaz gráfica coherente restringe sus posibi-
fríamos tormento con maravillas como su ciclo lógico, sus ni- lidades. Estamos siendo obligados a dejar atrás a nuestro es-
veles de control y el MR, la consulta anticipada o montones timado RPG por WebSphere y Java para comunicarnos con
de formularios para cada tipo de especificación y diseño de los navegadores. O si no, debemos utilizar CGIDEV y HTML
listados. Los indicadores gobernaban nuestras vidas. Nues- o alguna clase de conexión .NET modificada.
tra idea de modularización era leer datos de un archivo, pro- Me pregunto durante cuánto tiempo se seguirán utilizan-
cesarlos, grabar los resultados intermedios en otro archivo y do RPG como el componente modelo de la arquitectura MVC
repetir la operación hasta obtener el resultado final. No ha- (Modelo/Vista/Controlador). Sin soporte para interfaces
bía base de datos... sólo archivos indexados. No había llama- XML y SOA, RPG sólo puede realizar parte del trabajo en las
das entre programas ni parámetros. arquitecturas que no están centradas en la interfaz de usua-
rio. El soporte dado a RPG por parte de la comunidad de usua-
Un largo reinado rios de iSeries sigue siendo firme, pero igual que le ocurre a
Una situación tan primitiva no podía durado mucho, pero lo hizo. la generación del baby boom, un linaje de expertos en RPG
Perduró durante casi toda la vida útil de los S/3x, sin mejorar está a punto de jubilarse. ¿Quién será el abanderado?
hasta la llegada del AS/400: un periodo de casi 20 años. Sí, se
mejoraron cuestiones puntuales. Con el S/34 llegaron los termi- El incierto futuro
nales en línea y los formularios de programación fueron desapa- Tal vez los lenguajes de aplicación general han pasado de
reciendo lentamente. Es cierto que RPG III llegó con el S/38, moda. Es difícil defender que los actuales lenguajes de for-
incluyendo nuevas y atrevidas funciones como llamadas entre mato libre sean dechados de claridad. Son difíciles de apren-
programas y códigos de operación estructurados, pero no se adop- der, difíciles de leer y tienen numerosas deficiencias en áreas
taron de manera general hasta el advenimiento del AS/400. relacionadas con la programación. La opción de lenguajes de
A pesar de los espectaculares avances que se dieron con aplicación específica, como SQL, HTML y XML es mucho más
RPG III y luego con RPG/400, el formato fijo siguió mandan- seria. La arquitectura y los lenguajes dirigidos por modelos
do. De hecho, el formato fijo está tan profundamente imbricado son prometedores pero están lejos de la madurez.
en el RPG que hasta los conceptos de formato libre se aplican RPG y los lenguajes de formato fijo tiene mucho que ense-
sólo a una parte del lenguaje. No se trata únicamente de RPG. ñarnos de su evolución a lo largo de estos últimos cuarenta
DDS también es de formato fijo. El formato fijo está tan arrai- años. A falta de estudios formales en informática, una gene-
gado en la mentalidad y en las herramientas de programa- ración que entendía cómo funcionaban las empresas, creó apli-
ción que los defensores del formato libre se han dado cuenta caciones que condujeron a la revolución de los ordenadores.
de que incluso después de atravesar con una estaca el cora- Estos programadores y los lenguajes que utilizan nos mostra-
zón de las especificaciones C, ese formato se niega a morir. ron de qué eran capaces con herramientas de programación sen-
cillas y pensadas para ejecutar una función concreta.
¿Evolución o extinción? El camino que hay por delante no está claro. Espero que no
Me pregunto si el RPG puede evolucionar hacia un formato no se pierda el lenguaje que amamos ni que olvidemos las
libre o es algo antinatural. ¿Tiene sentido hablar de formato lecciones que nos enseñó, independientemente del debate acer-
parcialmente libre? Puede que el formato libre sólo tenga sen- ca del formato libre. RPG ha muerto. ¡Viva RPG! ■
tido si se implementa totalmente. Esto implicaría eliminar
los tipos de especificación, sustituir DDS por SQL para tra- Carson A. Soule es el director general de Computer Application Specialists.

8 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 9
DE LAS APLICACIONES CLÁSICAS A LA WEB Y AL COMERCIO ELECTRÓNICO

por Carlos Bell

n la redacción, aceptando como muy


razonable la afirmación de que “las
empresas equipadas con iSeries dis-
ponen de dos de los más valiosos re-
cursos: sus datos y unos programadores RPG
muy competentes” y con la que me identifico ple-
namente, al preparar el número anterior (el co-
rrespondiente a Junio/Julio) nos quedó claro que
en éste, para complementar la defensa del RPG como
lenguaje polivalente, debíamos mostrar sus posibilidades
reales en un mundo tan interconectado como el actual, donde
las aplicaciones Web han pasado a ser el “pan nuestro” de cada día.

Opciones disponibles mos que decidir entre tecnología Microsoft o tecnología abier-
Ante el desarrollo de un nuevo proyecto de comercio electró- ta; es decir, entre ASP.NET, ODBC y desarrollo de aplicacio-
nico o de una aplicación basada en Web para la intranet cor- nes en VisualBasic, o JSP, Java Beans, JDBC y desarrollo de
porativa o Internet, nos encontramos con varias premisas que aplicaciones en Java. Dentro de las tecnologías abiertas po-
debemos tener en cuenta si queremos alcanzar el éxito: mini- dríamos incluir otras que están basadas en lenguajes de
mizar el tiempo de desarrollo, ofrecer un entorno consistente scripts como PHP o Perl, junto con MySQL como base de da-
que no dé lugar a transacciones erróneas, poder comunicar- tos y la utilización del CGI (Common Gateway Interface) de
nos fácilmente con otras aplicaciones y con otras empresas, y los servidores de aplicaciones Web, como Apache.
ser capaces de mantener el contenido con el mínimo esfuerzo De hecho, y al margen de que en su día IBM eligiera Java
posible. Como es lógico, buena parte del éxito dependerá de para el desarrollo Web en el iSeries, en el mercado existen
la estrategia de desarrollo que adoptemos. tantas soluciones para una u otra tecnología que puede dar-
Aparentemente y simplificando, si el entorno del que estu- nos la sensación de que para este tipo de aplicaciones es ne-
viéramos hablando no fuera el del iSeries, a la hora de tomar cesario “utilizar otra cosa” en lugar de profundizar en lo que
una decisión sobre la arquitectura a implementar tendría- ya conocemos, el RPG, y aprovechar la experiencia que con él

10 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


hemos adquirido desarrollando todo tipo de aplicaciones em- La rebelión de los disidentes
presariales. Si uno pregunta en cualquier centro de IBM cómo puede de-
sarrollar aplicaciones Web, la respuesta unánime será que
Sea pragmático y utilice el RPG con tecnología Java y a través de WebSphere. Como conse-
Aunque el marketing y los intereses creados sean muy agre- cuencia de este “pensamiento único”, en IBM nadie ha oído
sivos, en Febrero de 1997 y con el título de “Acceder a los hablar de otras posibilidades y alternativas.
datos del AS/400 desde Internet” presentábamos por pri- La utilidad CGIDEV2 fue desarrollada entre 1996 y 1999
mera vez las APIs del CGI incluidas en el OS/400 que permi- por Mel Rothman (jubilado de IBM desde 2002) para ser uti-
ten combinar la potencia de nuestras bases de datos con la lizada por el personal de IBM Global Services. En 1997,
simplicidad de la Web mediante los lenguajes más clásicos Giovanni B. Perotti, de IBM Italia, convenció al responsable
del iSeries (RPG y Cobol). del CTC (Client Technology Center) de IBM en Rochester para
Como parte de DB2/400 el OS/400 también incluye “de se- que se distribuyera gratuitamente a través de una página
rie” un producto llamado Net.Data. En realidad Net.Data es web (www-922.ibm.com). Más de 17.000 descargas de 126
un lenguaje de filosofía similar a la de PHP, es decir, uno o paises distintos avalan su popularidad. Según Perotti, al me-
varios scripts de servidor que a través de CGI procesan for- nos tres mil webs iSeries han sido construidas utilizándola.
mularios HTML. Detrás, Net.Data puede acceder a DB2/400 Perotti se retiró de IBM a finales del pasado mes de Junio,
vía SQL así como llamar a cualquier ejecutable que esté en el y pidió permiso a IBM para redistribuir CGIDEV2 en su pá-
sistema (y que no sea interactivo, claro). Por ejemplo, pode- gina web personal, www.easy400.net, con el fin de ofrecer so-
mos tener una pantalla HTML de petición de un informe, por porte y actualizaciones a la comunidad que la utiliza. La res-
detrás llamar a un programa RPG que mediante parámetros puesta de IBM fue negativa. Sin renunciar a su idea, el día
o un archivo de trabajo devuelva unos resultados mediante 19 de Julio mediante e-mail Perotti solicitó el apoyo de los
una página HTML que los presente al navegador del usuario usuarios de CGIDEV2 para pedir a IBM que otorgara a la
o que mediante SQL los añada al archivo de trabajo o a la aplicación el status de código abierto.
Base de Datos. Como es lógico, con Net.Data (o con cualquier En pocos días todos los foros del entorno (incluido el nues-
“otra cosa” relacionada con la Web) también es necesario sa- tro, forum.help400) y las webs especializadas se hicieron eco
ber algo de HTML, XML, Hojas de estilo y JavaScript. de la petición. Como consecuencia, más de 350 mensajes fue-
Si se sabe RPG, la manera más fácil para desarrollar apli- ron remitidos a las direcciones e-mail de Peter Bingaman,
caciones Web es usar tecnología CGI aunque en sí misma di- (actual World Wide iSeries Marketing de IBM) y del respon-
cha tecnología no sea nada fácil de utilizar. Sin embargo, entre sable del CTC en Rochester, tal y como refleja el documento
otras utilidades de terceros que enmascaran su complejidad, Pleadings.doc (accesible en easy400.net) y donde se puede ver
existe una gratuita, la CGIDEV2, basada en un programa de que 10 de esos mensajes proceden de España.
servicio, que permite desarrollar páginas Web muy fácilmen- Conste que CGIDEV2 se sigue distribuyendo libremente
te utilizando programación RPG CGI. desde la web de IBM y desde www.easy400.net con acceso a
IBM. A mediados de Agosto, IBM había pasado del NO más
rotundo al inicio de una valoración de las posibles implica-
Otros artículos relacionados ciones de cederlo a la comunidad Open Source.
Afortunadamente, parece que ese famoso “pensamiento úni-
Desarrollo de una aplicación CGI con RPG (1ª parte) co” del iSeries tiene los días contados: En Agosto IBM ha ad-
Marzo 1997 - número 72 mitido el VisualRPG.Net de ASNA como parte de su “iSeries
Desarrollo de una aplicación CGI con RPG (2ª parte) Developer Roadmap” y pronto, muy pronto, PHP podrá co-
Octubre 1997 - número 79 rrer en el iSeries en modo nativo. Por la misma razón, espe-
Utilización del RPG con Net.Data remos que el producto Net.Data no sea discontinuado.
Mayo 1999 - número 94
Formularios HTML con Net.Data A modo de resumen
Octubre 1999 - número 97 Como muestra el recuadro adjunto (“Otros artículos rela-
Utilizar un archivo de registro de la web con Net.Data cionados”) no es la primera vez que tratamos este tema en
Junio/Julio 2000 - número 105 la revista. Durante años, Java ha recibido buena parte de la
HTML y RPG-CGI para gestionar listas de validación atención de la prensa especializada por lo que se refiere al
Junio/Julio 2002 - número 125 (Suplemento HELP400) desarrollo de aplicaciones en el iSeries pero... ¿por qué apren-
RPG y CGI te invitan a la web der otro lenguaje si utilizando las APIs disponibles en el
Diciembre 2002 - número 129 iSeries, bien directamente o bien mediante programas de ter-
Simplifique el desarrollo web con Net.Data ceros, el RPG ya hace lo que quiero y en menos tiempo que
Febrero 2003 - número 131 con otras soluciones? ■
RPG para aplicaciones web
Febrero 2003 - número 131
Carlos Bell es colaborador habitual de esta revista.

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 11


por Jef Sutherland

Cree páginas web dinámicas sin tener que


programar a mano código HTML en los
programas escritos en RPG

GIDEV (en realidad, CGIDEV2, que es la versión no está totalmente seguro de saber qué es CGI, consulte el re-
más reciente) forma parte de Easy400 (www- cuadro “CGI: qué es y cómo funciona”, en la página 15.
922.ibm.com), un kit de herramientas de desarro-
llo de páginas web gratuito suministrado por IBM. Cómo desarrollamos en KOA nuestras
CGIDEV2 es un programa de servicios que pro- aplicaciones web
porciona un sencilla envoltura (wrapper) para las API de IBM, En KOA utilizamos dos herramientas para el desarrollo de
además de otros procedimientos que facilita el trabajo a los aplicaciones web. Empezamos con iSeries Net.Data de IBM y
desarrolladores de RPG. CGIDEV2 ofrece un medio de in- seguimos usándola. Para nosotros, Net.Data es el CL del
cluir páginas HTML en progra- desarrollo web en el iSeries.
mas escritos en RPG como si Net.Data es fácil de aprender y
fueran plantillas, llevar a cabo CGIDEV2 ofrece un medio de de utilizar, tiene acceso completo
sustituciones de variables y devol- a los archivos de DB/400 median-
ver páginas HTML. La inclusión incluir páginas HTML en te sentencias de SQL y ofrece una
de plantillas de HTML significa programas escritos en RPG forma de enviar y recibir datos
que no es necesario crear el códi- desde aplicaciones del iSeries.
go HTML escribiendo manual- como si fueran plantillas, Las macros de Net.Data (es de-
mente instrucciones en el progra- cir, los archivos de código fuente)
ma de RPG. Utilizar CGIDEV2 y llevar a cabo sustituciones de no se compilan. En vez de ello, el
HTML es tan sencillo como utili- variables y devolver páginas servidor HTTP interpreta el ar-
zar DDS para las aplicaciones de chivo de macro, lo que facilita
pantalla verde. HTML. cambiar su código fuente para
IBM diseñó específicamente el kit hace pruebas. Naturalmente, el
de herramientas para los programadores de RPG que deseen inconveniente de las aplicaciones que no se compilan es que
desarrollar aplicaciones web. CGIDEV2 es ILE, de manera que los problemas del código, como por ejemplo las sentencias que
también funciona con Cobol. La herramienta no sólo es fácil de no son válidas, no se descubren hasta que se ejecuta la apli-
utilizar, sino que en el kit también pueden encontrarse varios cación. Y el código interpretado generalmente no se ejecuta
ejemplos que le ayudarán a empezar a utilizarlo enseguida. Si tan deprisa como el código compilado.

12 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 13
■ EN PORTADA

No obstante, para algunas de nuestras necesidades rela-


cionadas con las aplicaciones web, Net.Data es engorroso. Por
ejemplo, si una aplicación necesita acceder a varios archivos
para obtener un registro (o unos pocos) de cada archivo, la
sentencia de SQL puede ser inmanejable. Sin duda, para ac-
ceder a los datos no hay nada más fácil que una secuencia
CHAIN o SETLL/READ de RPG, y aquí es donde CGIDEV2
entra en acción. Las excelentes funciones integradas (BIF)
de manejo de series y de fechas de RPG también son difíciles
de batir. En KOA, todavía utilizamos ambas herramientas.
Si necesitamos una aplicación web sencilla para obtener una FIGURA 1
determinada entrada y responder con una lista de datos fáci- Solicitud para que el usuario escriba el número de artículo
les de obtener con una sola sentencia de SQL, utilizamos que buscar
Net.Data. Si necesitamos una base de datos o una interfaz de
usuario más compleja, por ejemplo algo que implique una
tabla (comparable a un subarchivo de DDS) que proporciona
entrada y salida, utilizamos CGIDEV2.

Ejemplo de CGIDEV2
Veamos un ejemplo sencillo de cómo utilizar RPG, un poco de
HTML y CGIDEV2 para hacer una búsqueda de un artículo,
además de usar el navegador como Interface de Usuario (IU).
Generalmente, cuando me enfrento a un proyecto, empiezo
primero por la IU. Prefiero diseñar la forma en que el usuario
interactúa con la aplicación y luego llevar a cabo el desarro-
llo del programa. Durante el diseño la IU, todavía no se utili-
zan RPG, HTML ni CGIDEV2.
Para la aplicación de ejemplo necesito tres páginas de IU.
La primera muestra la solicitud para que el usuario escriba
el número de artículo (Figura 1). La segunda muestra el re-
sultado si se encuentra el artículo (Figura 2). La tercera
muestra la página de error que recibe el usuario si no se en-
cuentra el artículo (Figura 3).
En esta aplicación he utilizado la herramienta de diseño
de páginas web de WDSc, Page Designer, que me encanta
desde hace mucho tiempo, pero usted puede utilizar la herra-
mienta de diseño web que desee. En la Figura 4 puede verse
la solicitud de la búsqueda de artículos y las páginas de re-
sultados dentro de la herramienta de diseño WYSIWYG de
WDSc. El diseño del código HTML es sencillo. En una aplica-
ción real, probablemente utilizaría hojas de estilo en cascada
(CSS), más colores y otros elementos de diseño. Pero, como
puede verse en las Figuras 1, 2 y 3, para la interfaz de usua- FIGURA 2
rio utilizaré pocos colores e imágenes. Página de resultados de la búsqueda de artículos
En la Figura 5 se muestra el archivo itemlookup.html,
que contiene el código HTML de la solicitud de búsqueda
de artículos y de los formularios de resultados. En la Fi-
gura 6 se ve el archivo errorforms.html, que contiene el
código HTML del formulario de error. CGIDEV2 permite Fíjese en los marcadores /%nombre_variable%/, como /
poner cualquier número de páginas web en un solo archi- %price%/. CGIDEV2 utiliza espacios reservados, de modo que
vo fuente gracias a que utiliza el marcador /$ para sepa- en RPG puedo incluir valores para los nombres de variables.
rar cada formulario o página. Por ejemplo, como puede Los espacios reservados pueden considerarse como campos
verse en la Figura 5, he diseñado dos plantillas de formu- de un archivo de pantalla.
lario, initialform y resultform, en el archivo HTML. Más Después de diseñar la interfaz de usuario, ya puede desa-
adelante veremos cómo incluir los formularios en un pro- rrollarse el programa en RPG. La lógica del programa es sen-
grama escrito en RPG. cilla:

14 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


FIGURA 3
Página de error que el usuario recibe si el artículo no se
encuentra

1. Mostrar el formulario de solicitud (Figura 1). FIGURA 4


2. Esperar a que el usuario escriba un número de artículo y Páginas de solicitud de búsqueda de artículo y de resultados
pulsar el botón Find It! (Buscar). en la herramienta de diseño WYSIWYG de WDSc
3. Obtener el número de artículo del formulario HTML.
4. Buscar el número de artículo en el archivo maestro de la
base de datos de artículos.
5. Devolver los resultados: b. Si no se encuentra, devolver un mensaje de error en el
formulario. Éste tiene un botón Try Again (Intentarlo otra
a. Si se encuentra el artículo, mostrar la información de vez), que el usuario puede pulsar para volver al paso 1 y
éste (Figura 2). hacer otra búsqueda (Figura 3).

CGI: qué es y cómo funciona

C
GI significa Interfaz común de pasarela y es un su vez, la aplicación CGI llamaría al programa MIAPLICWEB
medio estándar para un navegador de interactuar especificado en el URL y le pasaría dos variables, parm1 y
con un servidor web que se esté ejecutando en parm2.
cualquier plataforma, como Apache en el i5 o Microsoft IIS en La aplicación de la que estamos hablando puede estar
Windows. CGI permite ejecutar páginas web dinámicas en las escrita en cualquier lenguaje del i5 y, sin duda, RPG sería un
que el usuario hace una petición y se le devuelve un resulta- buen candidato. La aplicación se ejecutaría en el servidor i5 y
do. Las páginas dinámicas difieren de las páginas web estáticas tendría acceso a las variables parm1 y parm2. La variable
en que las páginas estáticas son iguales cada vez que se parm1 se enviaría con el valor “12345”, mientras que la
muestran. variable parm2 se enviaría con el valor “codigopostal”. En la
Así es como funciona CGI: en el servidor web, una o más aplicación, se utilizarían las API suministradas por IBM para
aplicaciones CGI (es decir, programas) permiten que se le acceder a las variables enviadas a la aplicación y luego se
hagan peticiones. Cuando las aplicaciones CGI del lado del prepararía una página de resultados que se devolvería al
servidor reciben la petición, la ejecutan y muestran una navegador web.
página de resultados. Normalmente, cuando un servidor La aplicación que acabo de describir requeriría varias API
utiliza una aplicación CGI, el URL contiene referencias a “cgi” relativamente complejas. Para que se haga una idea de esa
o “cgi-bin”, como en el ejemplo siguiente: complejidad, devolver la salida al navegador con esas API
sería parecido a preparar una salida de pantalla verde sin
http://www.miservidorweb.com/cgi- DDS y que esa salida estuviera formada por una serie de
bin/miaplicweb?parm1?12345&parm2=codigopostal. caracteres larguísima. Puede hacerse, pero sería una tarea
imponente. Esa es la causa de que la primera vez que oímos
Si el URL anterior se utilizara en un servidor web de un i5, hablar de CGIDEV en KOA, nos sintiéramos muy interesados
la parte “cgi-bin” dirigiría la solicitud a las aplicaciones cgi-bin por saber más cosas sobre este kit de herramientas.
de lado del servidor. En el servidor web, cgi-bin se correlacio-
naría con una biblioteca en que residen los programas CGI. A —J.S.

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 15


■ EN PORTADA
FIGURA 5
En la Figura 7 se muestra el código Código HTML de las páginas de solicitud de búsqueda de artículos y de
fuente escrito en RPG del programa resultados
ITEMLOOKUP. ITEMLOOKUP está
compilado en el iSeries y se llama siem-
/$initialform
pre que el servidor web necesite solici- <html>
tar al usuario un número de artículo, <head>
<title>Item Lookup</title>
mostrar información sobre el artículo o </head>
una pagina de error, en caso de que no <body topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">
<table>
se encuentre. El parámetro action del <tr>
formulario (en el punto A de la Figura <td><IMG SRC="/xyzlogo.jpg" ALIGN="BOTTOM" BORDER="0" NATURALSIZEFLAG="1"></td>
<td><h1>Item lookup</h1></td>
5) especifica el programa del servidor </tr>
al que hay que llamar. </table>

Examinemos paso a paso el código A <form action="/itemlookup.pgm" method="POST" name="form1">


fuente (las letras utilizadas como se- &nbsp;&nbsp;Item number <INPUT MAXLENGTH="24" NAME="number" SIZE="24" TYPE="text">
<INPUT TYPE="submit" VALUE="Find It!">
cuencia se corresponden con las seccio-
nes de la Figura 7): B <INPUT type="hidden" name="request" value="lookup">
</form>

A. Sin duda, CGIDEV2 y RPG permiten </body>


</html>
acceder de forma sencilla a todos los
archivos de DB2/400. He especificado la /$resultform
<html>
ubicación del archivo. Generalmente, los <head>
programadores que empiezan a traba- <title>Item Lookup - Result Page</title>
</head>
jar con CGI o aplicaciones web tiene
problemas con las listas de bibliote- <body topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">

cas. Si los archivos no están en la bi- <table>


blioteca CGI, habrá que utilizar la <tr>
<td><IMG SRC="/xyzlogo.jpg" ALIGN="BOTTOM" BORDER="0" NATURALSIZEFLAG="1"></td>
palabra clave EXTFILE o actualizar <td><h1>Item lookup</h1></td>
manualmente la lista de bibliotecas </tr>
</table>
del trabajo del servidor web para ase-
gurarnos de encontrar los archivos. <table border="1">
<tr><td bgcolor="#ece9d8">Item number</td><td>/%number%/</td></tr>
B. Los prototipos y variables de CGI- <tr><td bgcolor="#ece9d8">Description</td><td>/%desc%/</td></tr>
DEV2 se incluyen con uno o varios <tr><td bgcolor="#ece9d8">Sales price</td><td align="center">$/%price%/</td></tr>
<tr><td bgcolor="#ece9d8">Picture</td><td><IMG SRC="/%image%/" WIDTH="150" HEIGHT="250"></td></
miembros de copia. tr>
C. Estas dos variables de trabajo son las </table>

únicas que hay que definir para la


aplicación.
D. Este código borra el buffer de CGI-
DEV2 e incluye los formularios HTML
que hemos creado. Piense en la llama- FIGURA 6
da a GetHtmlifsMult como una ope- Código HTML de la página de error
ración de apertura de varios archivos
de pantalla. El subprocedimiento
GetHtmlifsMult carga en memoria /$notfound
<html>
(con una sola llamada) varios archi- <head>
vos IFS (es decir, continuos) de HTML <title>Item Lookup - Item not found</title>
</head>
definidos externamente. <body>
E. Este es un paso importante. Si el ser-
<table>
vidor web tiene que devolver algo al <tr>
programa en el campo del formulario <td><IMG SRC="/js/xyzlogo.jpg" ALIGN="BOTTOM" BORDER="0" NATURALSIZEFLAG="1"></td>
<td><h1>Item lookup</h1></td>
de la solicitud, podemos recuperar el </tr>
valor. Si en la solicitud no se ha de </table>
Sorry, Dude. The item number you requested, <strong> /%number%/ </strong>, could not be found.
recuperar nada, sabremos que es la Click the Try Again button.
primera solicitud realizada por la apli- <FORM><INPUT TYPE="BUTTON" VALUE="Try Again" ONCLICK="history.go(-1)"></FORM>
</body>
cación y que debe mostrar el formu- </html>
lario inicial que se ha presentado en
la Figura 1. Después de mostrar el for-
mulario en el navegador, observe que

16 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


hay un campo oculto llamado Request F. En esta parte de la lógica de SELECT G. Si se ha encontrado el número de ar-
(Solicitud) cuyo valor es “lookup” (bús- es cuando averiguamos, basándonos tículo, se utiliza el procedimiento
queda; punto B en la Figura 5). Cuan- en el valor del campo Request, lo que updHTMLVar para devolver el valor
do el usuario introduce un valor para se necesita para hacer la búsqueda. de la variable de HTML al navegador.
el número del artículo y pulsa Find Para ello, se llama a ZhbGetVar para Por ejemplo, updHTMLVar(‘desc’ :
It!, el campo del formulario Request poder recuperar lo que el usuario ha descript ); toma el valor de descript
contiene el valor “lookup”, que la apli- escrito en la entrada del número de y actualiza (es decir, sustituye) cual-
cación recupera en este paso, de ma- artículo del formulario web. El resul- quier referencia a /%desc%/ en el for-
nera que ya sabe que tiene que bus- tado se guarda en el campo Number mulario de salida. Al final del pro-
car un número en el archivo ITEMS1, de ITEMS1. Se concatena con el ar- ceso, se utiliza el procedimiento
el archivo maestro de artículos de la chivo y se decide qué hacer dependien- WrtSection con el nombre del formu-
base de datos. do de si se ha encontrado algo o no. lario desde el fuente HTML para de-
volver el formulario al navegador. ¡Fá-
cil!
H. Si no se ha encontrado el número
FIGURA 7
de artículo, se utiliza el procedi-
Código fuente en RPG del programa ITEMLOOKUP
miento updHTMLVar para actuali-
*=====================================================================
zar /%number%/ en el formulario del
A FITEMS1 IF E K DISK EXTFILE('MYLIB/ITEMS1') mensaje de error y luego se copia el
formulario de error con el procedi-
B *=====================================================================
* Includes to be used in CGIs miento WrtSection.
*=====================================================================
/copy mysource/CGIDEV2
I. Si el campo Request tiene otro valor
distinto de lookup, se mostrará el for-
C D imagelink S 100
D request S 10
mulario inicial de la entrada del nú-
mero de artículo (Figura 1).
/free
clrhtmlBuffer();
J. Hemos acabado. En CGIDEV2 se uti-
D IfsMultIndicators = liza WrtSection(‘*fini’) para indicar
GetHtmlifsMult('/itemlookup.html /errorforms.html');
que se ha acabado todo el trabajo y
E // The variable request holds the result of ZhbGetVar, que debe devolverse la salida al
// which determines whether the program was sent a value
// for the HTML form field called Request.
navegador. Finalmente, un poco de
request = ZhbGetVar('request'); mantenimiento: se cierran todos los
select;
archivos.
// Determine the action requested.
when request = 'lookup';
Cuando repase el código fuente verá
que no tiene mucho en cuenta si la apli-
// Get the requested item number from the HTML form.
F number=ZhbGetVar('number');
cación utiliza la IU de un navegador. Y
aunque este ejemplo es bastante senci-
// Get item record.
chain number itemsr;
llo, en KOA hemos utilizado CGIDEV2
para desarrollar aplicaciones pareci-
// If found, update variables and write out a new HTML page.
G if %found(items1);
das a una aplicación de entrada/sali-
updHTMLvar('number': number ); da de un subarchivo. Estoy seguro de
updHTMLvar('desc' : descript );
updHTMLvar('price' : %editc(salesprice : '3');
que después de poner en funcionamien-
imagelink = '/js/' + image; to su primera aplicación CGIDEV2,
updHTMLvar('image' : imagelink );
WrtSection('resultform');
descubrirá otros usos para esta herra-
mienta tan útil (y gratuita). Asegúre-
H // If not found, display error page.
se de echar un vistazo a los ejemplos
else;
updHTMLvar('number': number ); del sitio web sobre CGIDEV2 de IBM
WrtSection('notfound');
endif;
(www-922.ibm.com/easy400p/fra-
mer1.html?url=/cgidev2/start). Así es
I // No request was sent, so write the initial request page.
other;
cómo nosotros aprendimos a utilizar
//Write the initial form that asks for an item number. CGIDEV2. ■
WrtSection('initialform');
endsl;

J //Write the end of the form (required with CGIDEV)


WrtSection('*fini'); Jef Sutherland es redactor técnico de iSeries
*INLR = *ON;
NEWS y vicepresidente de los servicios de
/end-free información de Kampgrounds of America, Inc.,
Billings, Montana.

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 17


por Bradley V. Stone

La programación en CGI permite ofrecer


información actualizada a los usuarios
finales a través de la Web

a programación de la Interfaz común de pasa- Tomemos por ejemplo la industria de los componentes de
rela (CGI) existe en el iSeries desde hace unos automoción. En el pasado, si necesitaba determinada pieza,
cuantos años. Desde por lo menos el release digamos, por ejemplo, un faro original de un Ford Focus de
V3R2, IBM ha proporcionado APIs que permi- 1998, visitaría un concesionario oficial de la marca y compra-
ten a los programadores crear páginas web to- ría allí la pieza.
talmente funcionales sin necesidad de utilizar Hoy en día hay literalmente cientos de empresas que ofrecen
soluciones caras y que consumen muchos recursos. piezas originales y de segunda mano para casi cualquier marca
Hoy, más que nunca, las empresas están interesadas en y modelo de vehículo. Algunas de esas empresas son concesio-
encontrar la mejor forma de ofre- narios locales que han ampliado su
cer aplicaciones web interactivas a La programación en CGI es lo negocio de venta de componentes a
sus clientes y usuarios. Con tantas Internet, aumentando su base de
opciones disponibles y algunas que permite a las empresas clientes exponencialmente.
mucho más comerciales que otras, Localizarlos utilizando un motor
solemos pasar por alto la mejor so- crear aplicaciones dinámicas, de búsqueda es fácil y el resultado
lución y la más sencilla. funcionales e interactivas para final es que recibiremos directa-
Utilizando las APIs disponibles mente la pieza en nuestro domici-
en el iSeries, directamente o me- ayudarlas a crecer o para lio. Además, nos ahorraremos un
diante un programa de utilidad de montón de dinero comparándolo
terceros, los programadores que facilitar el trabajo de sus con lo que nos habría costado si la
trabajan con iSeries descubrirán empleados. hubiéramos comprado en nuestro
que la tecnología que IBM parece concesionario local.
estar intentando eliminar es la úni- Gracias a Internet, ahora las
ca que realmente tiene sentido utilizar. empresas pueden llegar a clientes a los que normalmente nun-
ca hubieran podido acceder. Este es sólo un ejemplo entre mil
La importancia del contacto con la Web del papel crucial que tiene Internet en el juego empresarial
Si no está familiarizado con las aplicaciones web, es bastante de la “supervivencia de los más aptos”.
probable que acabe varado en una isla desierta. Las empre-
sas están utilizando con gran éxito la web en su propio bene- ¿Qué es la programación en CGI?
ficio para llegar a clientes a los que normalmente no ten- La programación en CGI es lo que permite a las empresas
drían acceso. crear aplicaciones dinámicas, funcionales e interactivas para

18 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 19
■ EN PORTADA

ayudarlas a crecer o para facilitar el trabajo de sus emplea- más funcionales o más “atractivas”. Lo que determina esos
dos. La programación en CGI permite a empresas como eBay atributos es la destreza de la persona que cree el código
tener entornos cambiantes sin necesidad de tener que crear HTML.
páginas web manualmente. En vez de ello, igual que hace- Estos lenguajes de programación en CGI también dispo-
mos con las pantallas verdes y los informes, escribimos pro- nen de herramientas que les permiten leer la información de
gramas en CGI que crean contenido web dinámicamente con- una página web. Si alguna vez ha estado en una página web
forme cambian los datos. donde se le solicitaba introducir determinada información,
Antes de tomar una decisión como la de qué juego de he- seleccionar artículos para añadirlos a un carrito de la com-
rramientas utilizar para crear aplicaciones web dinámicas, pra o hacer algo que sea “interactivo”, quiere decir que ha
deberá tener claro qué es exactamente lo que desea llevar a visto CGI en acción. Para que un programa pueda responder
cabo, cuáles son sus conocimientos actuales y, por último, a su interacción o leer la información de un formulario en
cuántas herramientas de aplicaciones web le ofrecen el mis- línea, ese programa debe ser capaz de leer los datos para po-
mo resultado. Esto significa com- der reaccionar en consecuencia.
prender qué es exactamente la pro- De modo que, en resumidas cuen-
gramación web o en CGI. tas, las aplicaciones web no hacen
En el nivel más bajo, casi todas Los programas en CGI más que lo que hemos hecho todos
las páginas web (por no decir todas) antes utilizando pantallas verdes o
se crean utilizando HTML. También pueden escribirse en muchos informes. La única cosa que ha
pueden utilizarse otras formas de lenguajes de programación cambiado es que ahora debemos
lenguajes de marcado (como XML o interactuar con un navegador web
los lenguajes de códigos de disposi- distintos, incluyendo RPG, en lugar de con una pantalla ver-
tivos inalámbricos), pero en general de. Seguimos leyendo información
utilizaremos páginas web, lo que Cobol, Java y C. de la interfaz y devolviendo infor-
significa que estaremos creando có- mación a esa interfaz.
digo HTML dinámico utilizando pro-
gramas escritos en CGI. Aplicaciones web y comunicación
HTML es lo que permite que un programador muestre de- La siguiente pieza del rompecabezas que hemos de tener en
terminado contenido en el navegador web de un usuario. Este cuenta es la interacción entre el navegador web del usuario y
contenido pueden ser imágenes, formularios de entrada e in- el iSeries.
formación detallada (como la lista de un inventario o toda Esta interacción se realiza utilizando un servidor web, tam-
una tienda) para vender prácticamente cualquier producto. bién conocido como servidor HTTP. Un servidor web no es
Casi todo lo que vemos en una página web se ha creado utili- nada más que un trabajo o un grupo de trabajos que se ejecu-
zando HTML. tan en segundo plano en el iSeries esperando peticiones y
En el nivel siguiente, los programadores pueden escribir luego respondiéndolas. Las peticiones hechas al servidor web
programas que creen código HTML dinámicamente para que se hacen cuando un usuario escribe (o pulsa en) un enlace
lo vea un usuario final en tiempo real. De la misma forma que contiene un URL que apunta al iSeries.
que utilizamos DDS para crear informes y subarchivos a par- Esta conexión se hace porque en todo URL hay un nombre
tir de los datos del iSeries, podemos crear una salida pareci- de dominio (o dirección IP). Por ejemplo, “miempresa.com” es
da utilizando HTML y páginas web. Lo importante es recor- un nombre de dominio. Este nombre de dominio apunta a
dar que gracias a ello podemos proporcionar a nuestros una dirección IP. La dirección IP se asigna al iSeries (o a un
usuarios finales información actualizada a través de la web. cortafuegos o a un router instalados antes que el iSeries). Así
La programación en CGI es lo que nos permite hacerlo. es como se hace la conexión entre el navegador y el iSeries.
Es importante entender que CGI no es un lenguaje de pro- Una vez que el servidor web recibe una petición, la inter-
gramación concreto. No hay ningún lenguaje de programa- preta y devuelve información al usuario. Esta información
ción llamado “CGI”. CGI es un método de programación. Los puede ser en forma de una página web estática o el resultado
programas en CGI pueden escribirse en muchos lenguajes de de ejecutar un programa CGI, que crea la información de la
programación distintos, incluyendo RPG, Cobol, Java y C. página web en tiempo real. En el iSeries tenemos dos opcio-
Cada uno de esos lenguajes dispone de herramientas que nes para un servidor web. La primera posibilidad, que ya no
les permiten enviar contenido creado dinámicamente a un es una opción viable en las máquinas con el release V5R3 o
navegador web. Así que, en cierto sentido, toda la progra- posterior instalado, es lo que se conoce como el servidor HTTP
mación en CGI consiste en crear series de datos (en este “clásico”. La segunda posibilidad y la más viable es el servi-
caso, código HTML) y luego en introducir esos datos en una dor HTTP Powered by Apache. Este servidor se basa en el
página web para que los vea el usuario que los ha solicita- famoso servidor web Apache que utilizan la mayoría de las
do. Eso es todo. Una vez entienda esto, debería quedar cla- máquinas en Internet en la actualidad.
ro porqué ningún lenguaje o juego de herramientas de pro- Con el servidor web se pueden establecer configuraciones
gramación en particular hará mejores sus aplicaciones web, para que el servidor web sepa qué hacer con determinadas

20 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


peticiones, qué programas CGI se están ejecutando y en qué gación). Los datos que se ven allí son la variable de entorno
directorios (por ejemplo, HTML, imágenes, JavaScript u ho- QUERY_STRING.
jas de estilos) el usuario puede acceder a archivos. No es totalmente necesario entender estas dos formas de
entrada, pero sí que es importante entender qué método se
Entrada y salida está utilizando para poder determinar qué API usar para leer
Los programas en CGI funcionan con un entorno que es bas- los datos que se envían con una página web.
tante nuevo para casi todos los programadores que trabajan
con iSeries. Pero si aprende cómo funcionan esos programas GET o POST
en CGI, será capaz de crear mejores aplicaciones. En la sección anterior hemos explicado dos métodos de leer
Cuando los programas en CGI crean y copian contenido datos de una página web, casi siempre mediante el uso de un
dinámico, lo hacen en lo que se conoce como salida estándar. formulario de página web. La forma en que un formulario
Técnicamente, la salida estándar es la ubicación a la que se envía estos datos al programa CGI, a través de la entrada
envían los datos si no se especifica estándar o de la variable de en-
otra salida (por ejemplo, una im- torno QUERY_STRING, la deter-
presora). En la terminología de la mina el método que se especifique
programación en CGI, escribir da- al crear un formulario de página
tos en una salida estándar signifi- Una vez conocido el método web o incluso un hiperenlace.
ca que los datos se guardan en una Cuando se crea un formulario de
ubicación a la que el navegador
de petición, ejecutar la API página web, normalmente se espe-
web del usuario visitante puede adecuada para leer los datos cifica un identificador de método
acceder y que luego puede utilizar para ese formulario. Con ese
para visualizar una página web. no es ningún problema. identificador de método se especi-
Cuando un usuario solicita un fica un método GET o POST.
archivo HTML estático (creado El método GET indica al formu-
previamente) al servidor web, no lario que pase los datos desde el
hay una interacción directa de ningún programa. Esto quie- formulario hasta el programa que los procesará utilizando la
re decir que el usuario solicita el archivo HTML, el servi- variable de entorno QUERY_STRING. Los datos también
dor web copia el contenido de ese archivo estático en la pueden pasársele a un programa CGI mediante la variable
salida estándar y los datos aparecen en el navegador web de entorno QUERY_STRING simplemente incluyendo datos
del usuario. a continuación de un hiperenlace en una página web.
Cuando un usuario hace una petición a un programa CGI, El método POST especifica que los datos del formulario
el servidor web ejecuta ese determinado programa CGI. Éste deben pasarse al programa que los procesará mediante la
crea el código HTML dinámicamente en tiempo real y graba entrada estándar.
esos datos en la salida estándar donde, a continuación, el Esta es la razón por la que es importante que el programa
navegador web del usuario visualizará los datos como una que procesa los datos sepa qué método -GET o POST- se está
página web. utilizando. El programa debe saber qué API utilizar para leer
La entrada que se lee de una página web, por otro lado, se los datos y cada método requiere utilizar una API distinta.
obtiene de dos formas distintas. La entrada normalmente son Para determinar qué método se está utilizando, un progra-
datos que se leen de lo que se conoce como un formulario de ma puede recuperar el valor de la variable de entorno
página web. Seguramente todos hemos utilizado uno antes. REQUEST_METHOD. El valor obtenido será GET o POST.
Si alguna vez ha rellenado información en una página web, Una vez conocido el método de petición, ejecutar la API ade-
ya sabe lo que es. cuada para leer los datos no es ningún problema.
La primera forma de leer la entrada es mediante lo que se Como el método GET pasa los datos como parte del URL,
conoce como entrada estándar. Cuando se leen los datos de la no es recomendable utilizar este método si los datos pueden
entrada estándar se hace desde el cuerpo de la solicitud. No ser confidenciales o si su tamaño es de unos pocos kilobytes.
es importante entender completamente esto. Lo que sí es En estas situaciones, deberá utilizar el método POST. Como
importante es entender la diferencia entre entrada estándar utilizando el método POST los datos que se pasan forman
y el otro método de entrada. parte de las cabeceras de la petición HTTP, éstos no son
La segunda forma en que se leen los datos es desde lo que visibles inmediatamente por el navegador web del usuario.
llamamos variables de entorno. En el caso concreto de los datos Pero seguirán estando a disposición del programa que los
de un formulario, se utiliza una variable de entorno conocida procesará.
como QUERY_STRING. Esto significa que los datos se pasan
con el URL de la petición. Si alguna vez se ha fijado en la Las API disponibles de CGI
barra de situación del navegador web, habrá visto una serie El iSeries incluye de serie un conjunto de API gratuitas
de datos que se incluyen en el URL después del nombre de que pueden utilizarse para crear páginas web e interactuar
dominio (generalmente precedidos por un signo de interro- con ellas. Si está familiarizado con el uso de las API, no

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 21


■ EN PORTADA

tendrá problemas con ellas. Si no lo está, piense en ellas (“e-RPG”). La documentación en línea de IBM también pue-
como si fueran programas suministrados por IBM a los de serle de ayuda para dar sus primeros pasos.
que basta con “llamar” desde el programa para que ejecu- Pero, antes de sumergirse profundamente en las API que
ten una función. son necesarias, deberá entender (sea cual sea la plataforma,
Estas API se incluyen en un programa de servicio llamado solución o kit de herramientas de aplicaciones web que elija)
QZHBCGI, que se encuentra en la biblioteca QHTTPSVR. Si los conceptos básicos de HTML, JavaScript, Hojas de estilo e
utiliza el mandato DSPSRVPGM (Visualizar programa de inclusiones del lado del servidor (SSI). La mayoría de progra-
servicio) en el programa de servicio QZHBCGI, verá la ex- madores pasan por alto estas cuestiones, pero yo no lo reco-
tensa lista de subprocedimientos de que se dispone. La docu- miendo. Casi todos nosotros ya sabemos cómo funciona RPG,
mentación en línea de IBM puede ayudarle a entender más pero no entendemos las herramientas que utilizaremos con
cosas acerca de las API, puesto que aquí sólo le daremos una RPG para crear aplicaciones web. Saltarnos estos temas es
breve explicación. como intentar conducir un coche sin saber cómo se utiliza el
La primera API (y la más utilizada) es QtmhWrStout (Gra- volante.
bar a salida estándar). Se llama a esta API cuando se desea Una vez conozca los conceptos básicos, tal vez desee echar-
grabar datos a una página web. Basta con crear una serie de le un vistazo al kit de herramientas CGIDEV2 de IBM (www-
caracteres HTML y pasársela a esta API y los datos se gra- 922.ibm.com) comentado en el artículo precedente, aunque
barán en la salida estándar y se mostrarán en un navegador existen otros en el mercado. Estos kits de herramientas per-
web. Esta API puede llamarse muchas veces sucesivamente, miten externalizar el código HTML y hacen que actualizar
por lo que no hay que preocuparse por tener que crear una las aplicaciones sea coser y cantar.
página web completa de una sola vez. Por el contrario, puede Espero que este artículo haya despertado su interés por
crearla por secciones, llamando a la API QtmhWrStout tan- una posible solución para que el equipo empiece a escribir
tas veces como sea necesario. aplicaciones web en el iSeries. Como hablo con cientos de
Otra API muy utilizada es QtmhGetEnv (Obtener variable personas cada semana sobre esta cuestión, sé que está empe-
de entorno). Esta API recupera el valor de una variable de zando a hacerse popular.
entorno. Esta API puede utilizarse para recuperar el valor La razón principal por la que sé que la programación web
de los campos de un formulario web enviado utilizando el en RPG se está haciendo popular es porque hay algunos que
método GET. Los datos estarán disponibles en la variable de se ponen en contacto conmigo y me dice que “nuestro socio
entorno QUERY_STRING, en pares campo/datos, donde cada nos ha dicho que las aplicaciones escritas en RPG se ejecuta-
par campo/datos está separado por el símbolo &. rán más lentamente y/o utilizarán más recursos que las apli-
Para leer datos de un formulario que utiliza el método POST caciones WebSphere”. Naturalmente, se trata de un mentira
debería utilizar la API QtmhRdStin (Leer entrada estándar). descarada (o de un malentendido, concedámosles el beneficio
De nuevo, los datos se devolverán utilizando los pares cam- de la duda). Cualquiera que tenga el mínimo conocimiento
po/datos con el delimitador & separando cada par. del uso de los recursos que hace RPG y de lo que se tarda
Después de leer datos de la página web, puede utilizarse la únicamente en ejecutar WebSphere (sin incluir las aplicacio-
API QtmhCvtDB (Convertir a base de datos) para convertir nes escritas en Java que también son necesarias) debería ser
los pares campo/datos leídos de una de las API descritas an- capaz de imaginarse que se trata de un simple sensacionalis-
tes en un formato que puedan utilizar las aplicaciones. Evi- mo comercial.
dentemente, puede analizar los datos usted mismo, pero uti- Como digo siempre, si una máquina ejecuta las aplicacio-
lizando la API QtmhCvtDB podrá convertir los datos en nes escritas en Java deprisa, imagínese lo deprisa que se eje-
estructuras de datos fáciles de usar que no sólo dan acceso cutaría la aplicación desarrollada en RPG. ■
directo a todos los campos y a su contenido, sino que también
llevan a cabo las conversiones de tipos de datos necesarias.
Estas conversiones de tipos de datos son necesarias porque
todos los datos leídos en una página web están en formato de
tipo carácter.
Otra API útil es QzhbCGIParse (Analizar datos de CGI).
Esta API permite leer los datos de un campo de un formula-
rio simplemente especificando el nombre del campo del que
se desean recibir los datos. Esta API hace que la programa-
ción en CGI en el iSeries sea mucho más sencilla.

Primeros pasos Bradley V. Stone es autor de varios manuales de formación sobre CGI y de la
La mejor forma de empezar a escribir aplicaciones web para exitosa serie de libros “e-RPG”, que puede verse en bvstools.com/erpg. También
es el creador del kit de desarrollo de software eRPG (eRPG SDK), que puede
RPG es haciéndose con uno de los muchos recursos dispo- obtenerse en erpgsdk.com. Bradley es propietario de BVSTools.com, donde
nibles. Personalmente, he escrito varios libros y manuales ofrece software alternativo de bajo coste así como cursos de formación y
sobre el tema, agrupándolos bajo una denominación genérica servicios de consultoría para el iSeries desde hace más de diez años.

22 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 23
Sobre las interfaces de usuario
La flexibilidad y fiabilidad del iSeries son ventajosas a la hora de desarrollar interfaces
de usuario y trabajar con ellas

por Jef Sutherland

¿ A cuántas interfaces de usuario (IU) se enfrenta cada basadas en texto o gráficas, si una presentación no es intuitiva,
día? Despertadores, relojes, cafeteras, hornos la aplicación será mala y los resultados también.
microondas, teléfonos, contestadores, teclados para in-
troducir códigos de seguridad, coches... son sólo unos La progresión de las IU
cuantos aparatos que presentan interfaces que utili- Para los desarrolladores que trabajan con el iSeries que tie-
zamos casi a diario. Y en la mayoría de los casos, antes si- nen más experiencia (yo no he dicho “viejos”), las decisiones
quiera de sentarnos en nuestra mesa, encender el ordenador de diseño sobre la interfaz de usuario solían ser más fáciles
y mirar a la pantalla. porque había un solo dispositivo con el que interactuar. El
La forma en que los aparatos eléctricos suelen presentar la método de la IU era una terminal, que tenía un número de-
información a los humanos a menudo decide el destino y la terminado de filas y columnas. Más aún, los amigos de IBM
utilidad del dispositivo. Por supesto, lo mismo ocurre con las les habían suministrado un maravilloso juego de estándares
aplicaciones. llamado SAA (Arquitectura para aplicaciones de sistemas)
Como desarrolladores, podemos que especificaba desde cuál debía
tener la mejor lógica y las mejo- ser la apariencia que debía tener
res rutinas de proceso bajo la Tanto si se trata de interfaces la IU basada en texto hasta el nú-
interfaz de usuario, pero si ésta mero de puntos iniciales que de-
no obtiene la información correc- de usuario basadas en texto o bía haber después de la descrip-
ta de los usuarios o no se la pre- ción pero antes de la entrada.
senta de forma inteligible, habre- gráficas, si una presentación no Cuando los PC hicieron su apa-
mos despilfarrado la inversión es intuitiva, la aplicación será rición, los desarrolladores del
realizada en la aplicación. La iSeries básicamente siguieron
interfaz de usuario es vital y no mala y los resultados también. trabajando con las mismas filas
debe tomarse a la ligera. y columnas, pero ahora maneja-
das mediante la emulación de
Las dos partes de una IU terminales. Apenas había que hacer cambios, aunque hubie-
Si descomponemos una IU, veremos que se compone de dos ra que subir o bajar información de esa nueva y extraña he-
partes. La primera es el dispositivo o aplicación utilizado para rramienta llamada Lotus 1-2-3.
presentar la información. Suelo pensar en ellos como los mé- A medida que el PC tomaba posesión de los escritorios con
todos. Tanto si se trata del teléfono móvil como de Netscape Microsoft Windows y se ponía a disposición de los
Navigator, la información se obtiene y se recopila a través de desarrolladores interesantes herramientas de desarrollo para
esos métodos. La segunda parte es la forma en que se le pre- PC (como Visual Basic de Microsoft), a éstos se les ofreció un
senta la información al usuario. Coja dos teléfonos móviles nuevo conjunto de herramientas gráficas para la interfaz de
▲ distintos y verá dos presentaciones diferentes de la informa- usuario, como ventanas múltiples, botones, recuadros de se-
▲ ción. Utilice Navigator para ir a Google y Yahoo! Y verá dos lección, menús desplegables, recuadros de listas, botones de
▲ presentaciones distintas de la información utilizando el mis- selección y hasta fotos. El método de la interfaz fue más allá
mo método. de la emulación de terminales; convirtió todo el escritorio del
Muchos desarrolladores del iSeries pueden sentir que es- PC en una opción. Se desarrollaron aplicaciones cliente-ser-
tán atrapados en una interfaz de usuario basada en texto. vidor que permitían una nueva forma de presentación para
Management

¡Pero no es cierto! Su experiencia con una de las plataformas la misma información que antes se había mostrado en una
más flexibles y fiables para almacenar y recuperar informa- IU basada en texto.
ción es una gran ventaja. El siguiente método de IU, y puede que el más reciente, es
En los artículos de este número descubrirá que como el navegador. Hoy en día, el navegador no es meramente el
desarrollador del iSeries tiene ventajas cuando hablamos de método para acceder a Internet... es el método de IU más
métodos de interfaces de usuario y opciones de presentación. utilizado. Los navegadores han proliferado y ahora se pue-
Pero recuerde que tanto si se trata de interfaces de usuario den encontrar fuera del escritorio del PC, en los teléfonos

24 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


móviles y hasta en las neveras. Los navegadores generalmente beneficiarán de una interfaz “bonita”. Los hoteles, las empre-
usan lenguajes de códigos, como HTML, para crear la parte sas de alquiler de coches, las tiendas de comestibles, los su-
de la presentación, o son una fuente en la que copiar un applet permercados y los servicios de atención telefónica son ejem-
desde un servidor para ofrecer la interfaz. plos de organizaciones en las que sigo viendo montones de IU
Una pregunta que se hacen muchos desarrolladores de basadas en texto, incluso aunque la aplicación esté basada
iSeries es si sus IU basadas en texto son arcaicas e inútiles en PC.
comparadas con los navegadores y sus GUI. La respuesta es Ahora, volviendo a la idea de que los desarrolladores que
que sí. Bueno, espere... Una vez más, la respuesta podría ser trabajan con iSeries tienen ventajas, si ha estado desarro-
que no. llando IU basadas en texto, conocerá perfectamente un mé-
Si sus aplicaciones pueden salir ganando si usa una GUI todo. En este número le mostraremos algunos métodos (pue-
que utiliza fuentes diferentes, fotografías, ventanas múlti- de que sean nuevos para usted) de desarrollar o visualizar
ples o efectos multimedia para hacer la IU más eficaz de modo una IU gráfica. Como se explica en el artículo “Programación
que represente un ahorro en los costes finales para la empre- en CGI y el iSeries” (página 18), si decide utiliza CGI, podrá
sa, entonces la respuesta es sí, la interfaz basada en texto es seguir trabajando con RPG como lenguaje de desarrollo para
arcaica. Sin duda, un sitio web es mucho más atractivo para las IU. Y en caso de que desarrolle aplicaciones en Java, el
los clientes cuando pueden ver una foto –no sólo una descrip- artículo “Aplicaciones Java basadas en web: consideraciones
ción– del producto. tecnológicas”, que encontrará en la página 34, muestra cómo
Pero si las necesidades de sus aplicaciones son la entrada utilizar JSP y servlets.
de datos, entonces una IU basada en texto tiene sus ventajas, Explore estos métodos para el desarrollo de interfaces de
mientras se presente correctamente. Nunca cambie una apli- usuario. Y la próxima vez que se le pida una “aplicación web”
cación de una IU basada en texto a una IU gráfica sólo por- al grupo de desarrollo, no se le dejará fuera. ■
que le apetezca tener una interfaz “bonita” si no pretende
vendérsela a nadie. Al final, puede que tenga una apariencia
agradable a la vista, pero si no funciona mejor habrá derro-
chado el dinero de su empresa. La entrada de registros hora- Jef Sutherland es redactor técnico de iSeries NEWS y vicepresidente de los
rios, la de pedidos y las aplicaciones contables raramente se servicios de información de Kampgrounds of America, Inc., Billings (Montana).

Suscríbase a

Management

y recibirá
gratuitamente
el suplemento ▲

técnico ▲

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 25


Mejor portabilidad: introducción al
“Enterprise Generation Language”
por George Farr, Phil Coulthard y Kushal Munir

U
na vez más, bienvenidos a nuestra serie de ar- Después de crear un programa de EGL se genera el código
tículos sobre el trayecto que lleva de RPG a fuente en Java o en Cobol a partir de él. Como lenguaje, EGL
J2EE para desarrolladores de iSeries (véase es un cruce entre Cobol y Java. Aunque es procedural, tiene
ibm.com/iseries/roadmap). En el artículo an- elementos de constructores del lenguaje Java. Es un lengua-
terior (Mejor portabilidad: las herramientas de je sencillo pero potente que oculta muchos detalles de la
desarrollo de Java, de mayo de 2005) describimos el desarrollo implementación para permitir que el desarrollador se con-
de aplicaciones portables utilizando las herramientas de desa- centre en resolver el problema y que llegue rápidamente a
rrollo para Java proporcionadas por WebSphere Development una solución que funcione. También puede utilizarse para el
Studio Client (WDSc). En artículos anteriores nos hemos cen- desarrollo rápido de aplicaciones (por ejemplo, para crear un
trado en las herramientas de WDSc prototipo de una aplicación de gran ta-
para desarrollar aplicaciones de maño). El propio lenguaje no es nada
interfaz de usuario para la web. restrictivo y puede usarse para desa-
En este artículo seguiremos con
Desarrollo en J2EE rrollar aplicaciones completas.
nuestra explicación del cuarto paso de Mejor
este itinerario, el que trata sobre una escalabilidad ¿Cuán portable es EGL?
mejor portabilidad. Además de Java, EGL permite escribir aplicaciones
Mejor
otra tecnología llamada Enterprise portabilidad portables porque oculta los siguientes
Generation Language (EGL) puede detalles de la implementación:
Mejor
ayudarnos a desarrollar aplicaciones Plataforma. EGL es un lenguaje de
arquitectura
portables. Empezaremos viendo qué alto nivel y proporciona API indepen-
es EGL. Después, pensaremos cómo Mejor dientes de la plataforma de manera que
interfaz
permite que las aplicaciones sean el programador no tiene que preocupar-
portables y valoraremos cuáles son sus Mejores se de las dependencias específicas de
ventajas. También examinaremos algu- herramientas cada plataforma o de las diferencias
nas de las herramientas específicas entre ellas. El código en Java generado
para trabajar con EGL que existen en se puede ejecutar en una plataforma
WDSc y cómo pueden utilizarse para iSeries, Windows, Linux o Unix, y el
desarrollar aplicaciones en Java. código en Cobol únicamente en el
iSeries.
¿Qué es EGL? Nivel de especificación. Los desarrolladores no tienen que
EGL es una tecnología de desarrollo y un lenguaje de progra- preocuparse del nivel del código generado. Por ejemplo, si se
mación que permite escribir rápidamente aplicaciones em- está generando código de un EJB, se basará en el último ni-
presariales totalmente funcionales. Ha evolucionado a partir vel de EJB soportado, sea el que sea, de modo que no es nece-
de un lenguaje procedural que se utilizaba en VisualAge sario preocuparse por las especificaciones de EJB para los
▲ Generator, un antiguo producto de IBM. La versión actual de niveles 1.1, 2.0, etcétera, por ejemplo. Si desea utilizar otro
▲ EGL permite utilizar un sencillo lenguaje procedural para nivel de especificación, simplemente especifíquelo y vuelva a
▲ crear programas en Cobol no interactivos que pueden ejecu- generar el código.
tarse en el iSeries y programas en Java que pueden ejecutar- Almacenamientos de datos. Puede concentrarse en el pro-
se en cualquier plataforma, incluyendo el iSeries, Windows, blema de la empresa que está intentando resolver en vez de
Linux, Unix y z/OS (con los servicios del sistema Unix). Pue- hacerlo en las complejidades técnicas de los almacenamientos
Management

den instalarse aplicaciones escritas en Java fuera de J2EE o de datos como, por ejemplo, el acceso a la base de datos, SQL,
en el contexto de uno de los siguientes contenedores de J2EE: CICS o MQSeries. Se pueden utilizar instrucciones de E/S
parecidas para acceder a distintos tipos de almacenamientos
•cliente de aplicaciones de J2EE de datos externos, sean éstos archivos, bases de datos
•aplicación web de J2EE relacionales o colas de mensajes. Esto permite manejar los
•contenedores de EJB (en este caso, también se crea un bean futuros cambios en el almacenamiento de datos sin tener que
de sesión de EJB) remodelar apenas el código.

26 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


Management



www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 27


■ INTRODUCCIÓN AL “ENTERPRISE GENERATION LANGUAGE”
Ventajas de utilizar EGL
En el artículo anterior sobre las herramientas de desarrollo
de Java explicamos las características de Java que hacen de
él un lenguaje portable. Ahora puede que se pregunte cuáles
son las ventajas de utilizar EGL y si puede utilizar Java para
proporcionar portabilidad a sus programas. La diferencia
principal es que EGL es un lenguaje de más alto nivel que
Java. Una sola sentencia de EGL a menudo puede utilizarse
para implementar funciones que requerirían muchas líneas
de código en Java. EGL permite que el programador se con-
centre en resolver el problema de la empresa simplificando u
ocultando muchos detalles de menor nivel relacionados con
el acceso a los datos, el entorno de ejecución y la instalación.
Además, aunque Java proporciona independencia de la pla-
taforma, no siempre nos aisla de los cambios entre las distin-
tas especificaciones (especialmente las especificaciones de
J2EE para servlets, EJB, etcétera) y los cambios en el alma-
cenamiento de datos externos. Por ejemplo, si una especifica-
ción cambia para poder implementar una determinada fun-
ción de una forma más óptima, tendrá que hacer cierto número
de modificaciones en el código escrito en Java para poder be- FIGURA 1
neficiarse del cambio. Con EGL, es posible que tenga que hacer Preferencias de EGL
pequeños cambios o puede que no tenga que hacer nada en
absoluto; el generador de EGL a Java creará el código confor-
me a la especificación más reciente.
Otro ejemplo es que si se cambia el almacenamiento de datos
externo, digamos que de una base de datos a una cola de
mensajes, puede que necesite hacer modificaciones sustan-
ciales en el código escrito en Java. Con EGL, como las sen-
tencias de E/S son muy parecidas para los distintos tipos de
almacenamientos de datos externos, probablemente tendrá
que hacer menos cambios en el código.
Otra ventaja de utilizar EGL es que puede generar aplica-
ciones escritas en Java (independientes o web) sin tener que
aprender programación orientada a objetos. Para los progra-
madores que sólo tienen experiencia en RPG o Cobol, o para
los que no tienen ninguna experiencia programando, la cur-
va de aprendizaje de Java puede ser un obstáculo importan-
te. Además, aprender a escribir buenos programas orienta-
dos a objetos generalmente requiere algo más de experiencia.
EGL permite escribir aplicaciones flexibles y completas rápi-
damente, sin tener que ser un experto en Java ni en progra-
mación orientada a objetos.
▲ FIGURA 2
▲ Herramientas para trabajar con EGL
▲ WDSc ofrece un completo juego de herramientas para el de- Asistente Nuevo proyecto web de EGL
sarrollo en EGL. Esas herramientas pueden utilizarse para
editar, ejecutar, depurar, generar y crear aplicaciones en EGL los proyectos de EGL. Para acceder al recuadro de diálogo de
(es decir, todo el ciclo del desarrollo de una aplicación). EGL preferencias, seleccione Preferencias (Preferences) del menú
Management

puede utilizarse para desarrollar aplicaciones autónomas en Ventana (Window). En la Figura 1 pueden verse las prefe-
Java o aplicaciones web. rencias disponibles para EGL. Aquí, pueden establecerse op-
ciones relacionadas con las conexiones de la base de datos
Para empezar (por ejemplo, el controlador JDBC y el ID y la contraseña del
Como primer paso para empezar a desarrollar una aplica- usuario de la base de datos). También debería establecer las
ción en EGL, sería una buena idea establecer algunas prefe- clases necesarias para el depurador (por ejemplo, el controla-
rencias. Estas son opciones globales que se aplicarán a todos dor JDBC de la base de datos).

28 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


Crear un proyecto de EGL página JSP abierta en el editor, incluyendo, por ejemplo, los
El paso siguiente es crear un proyecto de EGL, que conten- registros SQL de EGL.
drá el código fuente de EGL de la aplicación. Para crear un Galería contiene una lista de imágenes, elementos
proyecto nuevo en WDSc, seleccione Archivo|Nuevo|Proyecto. multimedia (audio y animación), hojas de estilos y plantillas
Esto muestra en pantalla el recuadro de diálogo Proyecto de páginas. Cuando se pulsa en un elemento, en la vista Imá-
nuevo. Seleccione EGL a la izquierda del recuadro de diálo- genes reducidas aparece la imagen en miniatura.
go. Pueden crearse dos tipos de proyectos de EGL: Proyecto Imágenes reducidas contiene imágenes en miniatura que
de EGL o Proyecto web de EGL. Si va a desarrollar una apli- pueden arrastrarse hasta cualquier página HTML o JSP
cación autónoma en Java deberá utilizar el tipo Proyecto de abierta en el editor Page Designer.
EGL. Utilice Proyecto web de EGL para las aplicaciones web Servidores muestra una lista de configuraciones de servi-
que contengan componentes JSP, Java Server Faces (JSF) y dor. Puede crear una configuración de servidor para compro-
servlets. bar las aplicaciones web en un entorno de prueba del servi-
Cuando haya seleccionado el tipo de proyecto EGL, pulse dor de aplicaciones de WebSphere.
Siguiente. Esto le llevará a la primera página de un asisten- Si se crea un proyecto de EGL sencillo, observará que hay
te donde puede especificarse el nombre del proyecto de EGL dos carpetas bajo el proyecto en la vista Project Navigator.
y la plataforma de ejecución de destino, que debe ser Java Cree archivos fuente de EGL en la carpeta EGLSource y cree
(Figura 2). Si va a crear un proyecto web, puede seleccionar archivos fuente de Java (incluyendo los archivos fuente ge-
Configurar opciones avanzadas en la primera página del asis- nerados) en la carpeta JavaSource. Para un proyecto web de
tente para establecer en las páginas siguientes varias opcio- EGL, el fuente de Java se encuentra en la carpeta Java
nes relacionadas con la aplicación web. Entre las opciones Resources. En la Figura 3 puede verse un entorno de un
posibles se incluye el nivel de J2EE y la activación de funcio- proyecto web de EGL típico, donde se está editando un archi-
nes, como por ejemplo la compatibilidad con Struts, la biblio- vo de EGL; en la vista Esquema (Outline) se muestra el con-
teca de códigos de JSP y la biblioteca de códigos de compo- tenido del archivo.
nentes web de iSeries. También puede especificarse una
plantilla de estilo por omisión para el sitio web. Escriba un Crear y editar partes de EGL
nombre para el proyecto y pulse Finalizar para crearlo. Un proyecto de EGL puede contener uno o varios archivos de
Cuando cree un proyecto de EGL nuevo, WDSc le preguntará EGL. Un archivo de EGL contiene un conjunto de partes que
si desea cambiar a la perspectiva EGL. Esta perspectiva tiene son unidades de declaración de la declaración global del pro-
algunas vistas muy útiles que le facilitarán la tarea de desarro- grama. Las partes pueden declararse en el orden que se quiera
llar una aplicación en EGL. Las vistas son las siguientes: y a todas se les puede asignar un nombre. Las partes pueden
Project Navigator permite trabajar con proyectos EGL y categorizarse como partes de datos, lógicas o de construcción:
web de EGL, y con elementos como servlets y páginas JSP, Partes de datos: definen las estructuras de datos disponi-
así como archivos EAR (Enterprise Archive). Esta vista está bles para el programa. Una parte de datos puede incluir una
especializada en Java, EGL y proyectos web y oculta archi- estructura, que es una presentación jerárquica de elementos
vos innecesarios (como los archivos *.class) al compilar los de una estructura, cada uno de los cuales se corresponde con
archivos de Java generados. un área de memoria.
Navigator es una vista genérica que permite trabajar con Partes lógicas: son las sentencias que se escriben en el len-
cualquier proyecto en WDSc. guaje procedural EGL que se ejecutan durante la ejecución.
Tareas muestra los errores de compilación y cualquier ta- Las parte lógicas pueden ser:
rea que especifique el usuario. En el caso de los errores de • una parte de programa que define la unidad lógica central
compilación, puede pulsarse dos veces en la vista Tareas para durante la ejecución. Es parecida a una clase de Java.
abrir automáticamente en un editor el fuente donde se ha • una parte de función que es una unidad de código que, o
producido el error. bien es la primera en el programa, o bien se ha llamado
Esquema muestra el esquema del archivo abierto en el edi- desde otra función. La función que contiene el primer códi-
tor. Esto permite saltar rápidamente a secciones concretas go del programa se llama main (principal). Una función es
del fuente en el editor. parecida a un método de Java.
Management

Si, por otra parte, crea un proyecto web de EGL, WDSc le • una parte pageHandler que controla la interacción del usua-
preguntará si desea cambiar a la perspectiva Web de EGL. rio con una página web. Un manejador de páginas propor-
Esta perspectiva es parecida a la perspectiva EGL pero tiene ciona datos y servicios a una JSP, que es la encargada de
unas cuantas vistas más pensadas para ayudar a desarrollar mostrar la página. El propio manejador de páginas incluye
un sitio web. Estas vistas adicionales son las siguientes: variables y manejadores de eventos, que se llaman en res-
Paleta contiene plantillas de páginas, códigos de JSP y com- puesta a una determinada acción del usuario (por ejemplo,
ponentes de JSF, así como los componentes de EGL que haya al pulsar un botón). La estructura básica de pageHandler

desarrollado, que puede simplemente arrastrar y soltar para se genera automáticamente cuando se usan los asistentes ▲
crear un control JSF en una página JSP. de JSF y EGL, pero tendrá que añadir su propio código ▲
Datos de página lista todos los datos disponibles de una escrito en EGL para implementar la lógica.

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 29


■ INTRODUCCIÓN AL “ENTERPRISE GENERATION LANGUAGE”
• una parte de biblioteca, que es un conjunto de funciones y
variables generadas y compiladas independientemente de
los programas o los manejadores de páginas. El programa
puede tener libre acceso a los recursos de la biblioteca.

Partes de construcción: definen el proceso de generación.


Los descriptores de construcción se crean automáticamente
cuando se crea un proyecto de EGL. Cada aplicación debe
tener un descriptor de construcción asociado, que incluye in-
formación sobre la forma en que se generará la aplicación
(por ejemplo, si código que se ha de generar es Java o Cobol,
información sobre cómo acceder a la base de datos, etcétera).
Para crear una parte de datos, pulse con el botón derecho
del ratón sobre la carpeta EGLSource y seleccione Nuevo|Ar-
chivo fuente de EGL. Aparecerá el recuadro de diálogo Nue-
va parte de EGL. Especifique un nombre para el archivo fuen-
te. Al nombre del archivo se le asignará automáticamente la FIGURA 3
extensión .egl. Para crear una parte de programa de EGL, Típico entorno de un proyecto web de EGL
pulse con el botón derecho del ratón sobre la carpeta
SourceEGL y seleccione Nuevo|Programa. Los descriptores
de construcción se definen en un archivo con la extensión
.eglbld. Entre las herramientas para trabajar con EGL de
WDSc se encuentra un editor de partes de EGL que puede
utilizarse para cambiar las opciones de construcción (es de-
cir, de generación del código). Pulse dos veces en un archivo
con extensión .egl para abrirlo en el editor de EGL. Éste con-
tiene muchas funciones que le ayudarán a simplificar las ta-
reas de desarrollo. Estas son algunas de las más destacadas:
Resaltado sintáctico: el editor resalta varias secciones del
código fuente para facilitar su lectura. Las palabras clave,
los tipos de datos, las series de caracteres y los comentarios
se resaltan con colores distintos.
Asistente de contenido: Al pulsar Ctrl+espacio en el editor FIGURA 4
aparece una lista de opciones que pueden añadirse al archi- Añadir un registro de SQL utilizando el asistente de
vo. Por ejemplo, en la Figura 4 se muestra cómo añadir un contenido
registro de SQL a un archivo fuente de EGL utilizando el
asistente de contenido. Fíjese que para cada opción propues-
ta se ofrece una descripción de esa opción. partes de EGL en un proyecto, puede que le lleve mucho tiem-
Plantillas de EGL: cuando se utiliza el asistente de conte- po encontrar la parte en Project Navigator para abrirla en el
nido para añadir un bloque de código al archivo fuente, el editor. Si está en la perspectiva EGL o Web de EGL, seleccio-
editor utilizar una plantilla previamente definida para la ne Navegar|Abrir parte (o escriba Ctrl+Mayús+N) para abrir
opción elegida. Puede consultar o modificar las plantillas de un diálogo en el que se puede elegir una parte escribiendo las
varios constructores en Preferencias; basta con seleccionar primeras letras de su nombre.
▲ EGL|Editor|Plantillas. En la Figura 5 se muestra la plan-
▲ tilla de un registro. Ejecutar y depurar aplicaciones de EGL
▲ También debería utilizar algunas de las otras característi- Para ejecutar o depurar una aplicación, WDSc requiere que
cas de EGL que ofrecen las herramientas de WDSc para ayu- el usuario cree una configuración de inicio. Con EGL, puede
darle en el proceso de desarrollo. La vista Esquema ofrece un utilizarse el depurador interpretativo de EGL para depurar
esquema jerárquico del código escrito en EGL que puede uti- el código fuente de EGL sin tener que generar primero códi-
Management

lizarse para identificar rápidamente secciones concretas del go en Java o en Cobol.


código y saltar a ellas en el editor. Si ha desarrollado una aplicación de EGL autónoma, pulse
Cuando se guarda el código, el compilador de EGL lo com- con el botón derecho del ratón en un archivo de programa de
pila automáticamente y muestra los mensajes de error en la EGL y seleccione Depurar programa de EGL para iniciar el
vista Tareas. En esa vista, pulse dos veces sobre un error para depurador. Esto creará una configuración de inicio en segun-
abrir el código en la posición en que se ha producido el error. do plano y cambiará a la perspectiva Depurar. Esta perspec-
Por último, si tiene muchos proyectos de EGL o muchas tiva ofrece varias vistas que muestran los puntos de inte-

30 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


Management



www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 31


■ INTRODUCCIÓN AL “ENTERPRISE GENERATION LANGUAGE”

rrupción, las variables, sus valores y una vista de consola


donde se ve la salida. Para establecer un punto de interrup-
ción en el código escrito en EGL, simplemente pulse dos ve-
ces en la regleta que hay a la izquierda de la línea, como se
ilustra en la Figura 6.
Para ejecutar o depurar una aplicación web de EGL, pri-
mero deberá definir una configuración de servidor y prepa-
rarla para depurar el código escrito en EGL. En la perspecti-
va Web de EGL, abra la vista Servidores, pulse con el botón
derecho del ratón sobre la vista y seleccione Nuevo|Ser-
vidor|Configuración de servidor. Elija el servidor de aplica-
ciones, asígnele un nombre y pulse Finalizar para crear la
configuración de servidor. Ahora, pulse con el botón derecho
del ratón sobre la configuración de servidor de la vista Servi-
dores y seleccione Añadir archivos Jar del depurador de EGL
con el fin de preparar el servidor para depurar código escrito en
EGL. Para iniciar una sesión de depuración, pulse con el botón
derecho del ratón sobre el proyecto web de EGL y seleccione
Depurar en el servidor. Utilice la opción de servidor existente y
pulse Finalizar para dar comienzo a la sesión de depuración.
Observe que no es necesario generar código escrito en Java FIGURA 5
desde EGL para poder depurar el código. Si desea generar el Recuadro de diálogo Plantillas de EGL
código en Java y depurarlo, deberá eliminar los archivos Jar
del depurador de EGL de la configuración de servidor.

Generar Java a partir de EGL


Ahora que ya ha escrito y depurado su aplicación escrita en EGL
es el momento de generar el código en Java a partir de ella. Con
ese fin, pulse con el botón derecho del ratón sobre la carpeta
EGLSource y seleccione Generar. Esto generará código en Java
para todas las partes de EGL. El resultado de esa generación
aparece en la vista Resultados de la generación de EGL.
Para generar solamente determinadas partes de EGL, pul-
se con el botón derecho del ratón sobre la carpeta EGLSource
y seleccione Generar con asistente. Esto hará que aparezca
un asistente en el que podrá seleccionar un subconjunto de
partes. Además, puede pulsar con el botón derecho del ratón
sobre un archivo fuente de EGL y seleccionar Generar o Ge-
nerar con asistente para generar código en Java a partir de
todas las partes del archivo fuente o de un subconjunto de
FIGURA 6
ellas, respectivamente.
Definición de un punto de interrupción en la perspectiva
Depurar
Simple y rápido
▲ El entorno de programación de EGL es el de un lenguaje sen- ciona WDSc. El completo juego de funciones incluido con el
▲ cillo y de alto nivel que puede utilizarse para desarrollar apli- producto, algunas de las cuales hemos descrito en este artí-
▲ caciones completas muy deprisa. EGL permite la portabilidad culo, le ayudarán a que la transición se mucho más fácil. ¡Di-
entre plataformas y oculta muchos detalles de la implemen- viértase y páseselo bien usando WDSc para iSeries! ■
tación relacionados con el acceso a los datos y con las diferen-
cias entre los niveles de las especificaciones. Es posible desa-
Management

Kushal Munir es desarrollador de software en el laboratorio de Toronto de


rrollar aplicaciones en EGL y generar código en Java o en IBM desde 2001. participa en el diseño, desarrollo y comprobación de las
Cobol. En el caso de Java, la aplicación puede ser autónoma o herramientas Explorador de sistemas remotos (RSE) que se incluye con WDSc.
una aplicación web. Phil Coulthard trabaja en el laboratorio de Toronto de IBM como arquitecto
Si se decide a desarrollar aplicaciones utilizando EGL y a jefe del equipo de desarrollo de herramientas y lenguajes para el desarrollo de
aplicaciones para el iSeries.
dar el paso hacia una mejor portabilidad tal y como se esboza George Farr trabaja en el laboratorio de Toronto de IBM como director de
en el itinerario para los desarrolladores del iSeries, le reco- desarrollo técnico de los lenguajes de programación RPG y VisualAge para RPG y
mendamos que utilice las herramientas de EGL que propor- de las nuevas herramientas de WDSc para RPG y Cobol.

32 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


Management



www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 33


Aplicaciones Java basadas en web
Consideraciones tecnológicas: escoja sus armas sabiamente
antes de empezar a programar

por Don Denoncourt

A
ntes de que su empresa se embarque JavaScript se utiliza para realizar operaciones de edición en
el lado del cliente y para animar la IU del navegador (con
en el desarrollo de una aplicación es-
cosas como menús que se desplazan por la ventana y HTML
crita en Java basada en web, tendrá dinámico).
que considerar la posibilidad de uti- Hay que comprender que las ediciones del código escrito en
JavaScript –así como las más sofisticadas operaciones de va-
lizar varias tecnologías Java del
lidación y manejo de errores– también deben programarse
lado del servidor. Las tecnologías obvias son HTML, en Java en el lado del servidor de la aplicación. Esta indiscu-
JavaBeans, páginas JavaServer (JSP) y servlets. tible redundancia en el código aumenta la complejidad de la
aplicación, pero a veces es necesaria para reducir el tiempo
Probablemente habrá oído hablar de Struts y de la
de ida y vuelta hasta el servidor.
técnica de diseño Modelo/Vista/Controlador (MVC),
pero, ¿qué pasa con JavaScript, JSTL (JSP Stan- Páginas JavaServer
Una página JSP es HTML con código Java incrustado. Pue-
dard Tag Library) y la tecnología más reciente de
den escribirse aplicaciones web totalmente en JSP. He visto
Sun, JSF (JavaServer Faces)? En este artículo en- algunas. Lo que no he visto es aplicaciones escritas única-
contrará la información que necesita para seleccio- mente en JSP que puedan mantenerse. La experiencia nos
dice que debe haber tan poco código escrito en Java como sea
nar la combinación tecnológica más apropiada para
posible. Sirva de ejemplo el fragmento de código escrito en
sus aplicaciones. JSP de la Figura 1. El código escrito en Java que contiene es
moderadamente complejo; sirve para procesar una lista de
HTML y JavaScript objetos Customer (Cliente) y ni siquiera muestra el código
Independientemente de la fiabilidad demostrada a lo largo JSP verdaderamente complejo que crea la lista de clientes.
de tanto tiempo de la interfaz 5250 del iSeries, HTML es la Hay varios problemas con la estrategia de escribir progra-
nueva interfaz de usuario. Las aplicaciones basadas en HTML mas exclusivamente en JSP:
ofrecen funciones de tipo GUI (como botones de selección,
recuadros de selección, listas de selección desplegables y po- 1.Se necesita un desarrollador en Java para mantener la IU.
sibilidad de utilizar el ratón), pero no están controladas por 2.El código escrito en Java no se puede comprobar, depurar o
eventos como una GUI de Windows. Cuando un usuario pul- mejorar fácilmente.
sa el botón Enviar, todos los datos de entrada del panel se 3.Es un sistema de desarrollo monolítico que no aprovecha la
envían al servidor. mejor característica de Java: el desarrollo basado en com-
▲ Ahí es donde entra en escena JavaScript. JavaScript (que ponentes.
▲ no es Java) es un lenguaje de scripts basado en el navegador.
▲ Puede añadir funciones de JavaScript a casi cualquier ele- Biblioteca JSTL
mento HTML para responder a varios eventos (por ejemplo, Publicada en 1999, la especificación JSP incluía la posibili-
Programación y sistemas

onClick, onChange, onKeyPress, onLoad u onFocus). Ya sé dad de crear códigos HTML personalizados. Pero cuando los
que acabo de decir que HTML no está controlado por even- desarrolladores empezaron a utilizar esta característica, re-
tos, pero lo que le estoy diciendo ahora es que se puede utili- sultó que todos creaban bibliotecas de códigos HTML que en
zar JavaScript para manejar los eventos de la IU de HTML. el fondo eran muy parecidas. La respuesta de Sun vio la luz
La cuestión es que JavaScript está limitado en lo que puede en 2002: la biblioteca JSTL (JSP Standard Tag Library). Sin
hacer para responder a un evento. No puede acceder a una embargo, muchas empresas, incluyendo la mía, hicieron caso
base de datos. No puede grabar a disco. No puede ejecutar omiso a JSTL, ¿Por qué? En parte por la pereza de utilizar
programas escritos en RPG. Todo lo que puede hacer otra tecnología nueva. Pero, sobre todo, porque cuando se pre-
JavaScript es modificar la información mostrada con HTML. sentó JSTL, los servidores de aplicaciones que estábamos

34 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


aplicaciones JSP monolíticas. La famosa solución a este dile-
FIGURA 1 ma es la técnica de diseño MVC. Como se describía en el artí-
Ejemplo de una aplicación escrita únicamente en JSP culo “Sobre la arquitectura MVC” (número 130, de enero de
2003):
<table>
“MVC divide una aplicación en tres componentes: el mode-
<tr><th>Name</th><th>Address</th></tr> lo de la lógica de empresa, la vista o IU y un controlador que
<% Iterator iter = custList.iterator();
while (iter.hasNext()) {
los relaciona a los tres. El objetivo es separar la vista del
Customer cust = (Customer)iter.next(); modelo para que los cambios que se produzcan en la primera
%>
<tr>
no afecten al segundo y viceversa. El controlador permite esta
<td><%=cust.getName()%></td> separación.
<td><%=cust.getAddr()%></td>
</tr>
El modelo no sabe nada sobre la IU; simplemente propor-
<% } %> ciona un conjunto de servicios o API que permiten leer o mo-
</table>
dificar el estado del modelo. A continuación, el controlador
correlaciona, de forma estándar, el flujo de información y los
eventos entre la vista y el modelo.
Por lo que hace al diseño, esto significa que los cambios en
FIGURA 2 los controles o en los elementos individuales de la IU no afec-
Página de JSP que utiliza códigos básicos de JSTL y tan al modelo. Por lo que hace a la arquitectura, significa que
expresiones de EL los cambios en el cliente no afectan al modelo.”
El resultado de emplear la técnica de diseño MVC es que el
código escrito en JSP es más fácil de mantener por los pro-
<table> gramadores que no saben Java. Además, el código puede
<tr><th>Name</th><th>Address</th></tr>
<c:forEach items="${custList} var="cust">
mantenerse con diferentes editores WYSIWYG, como
<tr> Dreamweaver, FrontPage o WebSphere Development Studio
<td>${cust.name}</td>
<td>${cust.addr}</td>
Client (WDSc). Las aplicaciones MVC también pueden ser
</tr> “refactorizadas” más fácilmente. Y, lo que tal vez sea más
</c:forEach>
</table>
importante, los componentes de la lógica de la empresa pue-
den comprobarse –sin utilizar la capa de presentación– utili-
zando metodologías de comprobación de facto como JUnit
(junit.org) y de comprobación automática con Ant. Encontra-
rá más información sobre JUnit en la web.
utilizando aún no eran compatibles con los requisitos de JSTL MVC no es un producto ni una especificación de Sun; es
de JSP 2.0 y Servlet 2.4. Sin embargo, esa excusa ya no es una técnica de diseño, una estrategia estándar para separar
válida porque WebSphere 5.0 (y WebSphere 5.1) es un servi- la presentación de la programación. Pero no intente crear su
dor compatible con J2EE 1.3, lo que significa que da soporte propia arquitectura MVC. Ya se ha hecho. Hay más de una
a JSP 2.0 y a Servlet 2.4. docena de infraestructuras MVC de código libre, pero la que
Los códigos HTML de JSTL pueden agruparse en cuatro se ha convertido en un estándar de facto es Jakarta Struts.
categorías:
Jakarta Struts
• Básicos Struts es un producto de código libre disponible en el proyec-
• Manipulación de XML to Apache Jakarta Project (jakarta.apache.org). Struts se pre-
• SQL sentó en el año 2000 y desde entonces su aceptación ha sido
• Internacionalización y formato generalizada. De hecho, todos los IDE de Java más impor-
tantes son compatibles con Struts. Struts proporciona una
Programación y sistemas
Junto con esos cuatro juegos de bibliotecas de códigos, JSTL infraestructura para una aplicación web. Gestiona el flujo de
incluía una característica nueva llamada Lenguaje de expre- una aplicación (según se especifica en un archivo de configu-
sión (Expression Language, EL). EL permite utilizar a los ración basado en XML) empezando por la interfaz HTML/
autores de páginas una sintaxis más sencilla para que pue- JSP pasando por un controlador de servlets y llegando hasta
dan manipular datos de aplicación. En la Figura 2 puede las clases que gestionan el proceso de la lógica de la empresa.
verse una página de JSP que incluye el uso de códigos de Struts es una infraestructura muy buena y yo mismo he es-
JSTL básicos y de expresiones de EL (que se pueden identifi- crito e instalado docenas de aplicaciones que utilizan Struts.
car por el símbolo del dólar y las llaves). Puede obtener más información sobre Struts leyendo los ar-
tículos “Una mejor arquitectura con MVC” y “Presumir de
Aplicaciones web monolíticas (MVC) Struts” (publicados en los números 147 y 148, de octubre y


Pero aunque JSTL permite simplificar el código escrito en noviembre de 2004, respectivamente) o el libro “Programming ▲
Java de una JSP, todavía hay que tener cuidado de no crear Jakarta Struts”, de Chuck Cavaness (O’Reilly, 2004).

www.help400.es AGOSTO-SEPTIEMBR 2005 ServerNEWS 35


■ APLICACIONES JAVA BASADAS EN WEB
A parte de su arquitectura de control de la aplicación y de
otras características muy interesantes, Struts tiene dos re- FIGURA 3
cursos que me gustaría destacar. El primero es un conjunto Fragmento de código escrito en JSP que utiliza el código
de bibliotecas de códigos de JSP. Estos prácticos códigos sim- iterate
plifican el desarrollo de JSP. Uno de mis códigos favoritos de
Struts es iterate. En la Figura 3 puede verse un fragmento
<table>
de código escrito en JSP en que se usa el código iterate para <tr><th>Name</th><th>Address</th></tr>
mostrar una lista de clientes. <logic:iterate name="custList" id="cust"
type="com.denoncourt.Customer"
El segundo recurso de Struts es su infraestructura de vali- scope="request">
dación. Struts tiene varios sofisticados mecanismos para lle- <tr>
<td><%=cust.getName()%></td>
var a cabo la validación. El que más me gusta, permite poner <td><%=cust.getAddr()%></td>
la semántica de validación en un archivo de configuración </tr>
</logic:iterate>
XML. Y hay que señalar que la infraestructura de validación </table>
de Struts puede generar código en JavaScript, eliminando
por lo tanto el problema de programación por duplicado que
mencionaba antes.
FIGURA 4
JavaServer Faces Ejemplo de código escrito en Java que utiliza un enlace de
La especificación JSF es la más reciente de las tecnologías valor
que se describen en este artículo. Se publicó formalmente en
marzo de 2004. A primera vista, JSF parece la competencia
de Struts. Y es curioso, porque uno de los promotores de la <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
especificación JSF, Craig McClanahan, es el creador original <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<h:dataTable value="#{custList}" var="cust">
de Struts. Pero mientras que Struts es una infraestructura <h:column>
para desarrollar aplicaciones web, JSF es una infraestructu- <f:facet name="header">
<h:outputText value="Name" />
ra para interfaces de usuario. Struts maneja el flujo de una </f:facet>
aplicación desde la página web hasta la lógica de la empresa; <h:outputText value="#{cust.name}" />
</h:column>
JSF se diseñó para manejar la IU de una aplicación. De modo <h:column>
que Struts y JSF se solapan, pero las características de IU de <f:facet name="header">
<h:outputText value="Address"/>
JSF eclipsan las de Struts. Eso no significa que no puedan </f:facet>
utilizarse Struts y JSF a la vez. De hecho, actualmente <h:outputText value="#{cust.addr}" />
</h:column>
Jakarta tiene un proyecto llamado Struts-Faces que ayuda a </h:dataTable>
combinar ambas tecnologías.
(Craig McClanahan es arquitecto de Sun Java Studio
Creator –un rival de WDSc. Puede leer sus opiniones sobre
JSF y Struts en blogs.sun.com/roller/page/craigmcc/
20040927). ce: en la JSP, con los códigos del validador. JSF incluye tres
Como pasa con JSTL y Struts, JSF tiene un conjunto de validadores estándar:
códigos HTML. Pero JSF es mucho más que un conjunto de
bibliotecas de códigos. JSF se diseñó con el fin de ofrecer ca- • <f:validateDoubleRange>
racterísticas parecidas a las del modelo controlado por even- • <f:validateLength>
tos de las aplicaciones de Windows. Todos los códigos de JSF • <f:validateLongRange>
tienen asociados sus correspondientes componentes IU (como
▲ recuadros de texto, listas, paneles con pestañas y cuadrículas Pero también es muy fácil escribir sus propios validadores.
▲ de datos) con lo que pueden asociarse (o enlazarse, para Así mismo, pueden encontrarse validadores personalizados
▲ utilizar el término que se usa en JSF) beans de datos y en Internet. De forma parecida a Struts, los mensajes de los
procesos de la interfaz con la lógica de la empresa. El jue- errores de validación pueden modificarse en archivos de pro-
Programación y sistemas

go de componentes IU de JSF puede ampliarse fácilmente, piedades y mostrarse con códigos de JSP.
de modo que es posible personalizar el comportamiento de Un gran problema que se daba con el desarrollo con Struts
la IU. La arquitectura de componentes permite a los pro- era la programación del proceso de presentación, validación
veedores de IDE crear herramientas WYSIWYG de arras- y visualización de los resultados. De hecho, un conocido libro,
trar y soltar similares a las herramientas de desarrollo “Jakarta Pitfalls: Time-Saving Solutions for Struts, Ant,
rápido de aplicaciones (RAD) de VisualBasic, PowerBuilder JUnit, and Cactus” (John Wiley & Sons, 2003) dedica la
y Delphi. mayoría de sus capítulos a ofrecer soluciones a los problemas
Al igual que Struts, JSF tiene funciones de validación. Pero de desarrollo con Struts. De todas formas, JSF no tienen nin-
el código de validación de JSF está en el sitio al que pertene- guno de esos problemas. Los beans de datos se asocian con

36 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


Programación y sistemas



www.help400.es AGOSTO-SEPTIEMBR 2005 ServerNEWS 37


■ APLICACIONES JAVA BASADAS EN WEB
los componentes de entrada gracias a una característica (Observe que JSF tiene un EL parecido al de JSTL. El có-
denominada enlace de valor (en la Figura 4 se utiliza un digo EL de JSF es fácilmente distinguible del de JSTL por-
enlace de valor en un campo de salida). Durante el procesa- que las expresiones van precedidas por el símbolo # en vez
miento de la salida de formulario por parte de JSF, los valo- del del dólar).
res de los bean de datos examinan rápidamente todos los com- Para desarrollar e instalar aplicaciones en JSF es necesa-
ponentes conocidos como representadores (renderers), dando rio un servidor de aplicaciones compatibles con JSP 1.2 y
formato a datos como fechas, símbolos del dólar, numéricos o Servlet 2.3, y se necesita una implementación de la especifi-
lo que sea. Durante el procesamiento de la entrada de formu- cación JSF. En la actualidad se dispone de tres imple-
lario por parte de JSF, los valores enlazados examinan rápi- mentaciones: la de referencia de Sun (en java.sun.com/j2ee/
damente todos los componentes conocidos como conversores javaserverfaces), la de código libre MyFaces (myfaces.org) y
(converters), devolviendo el formato original a los datos que la de IBM. Tenga en cuenta que la implementación de IBM
tenían en el formulario de beans de datos (por ejemplo, String, se ofrece con WebSphere 5.1, pero nada impide que utilice la
Date o BigDecimal). De nuevo, los desarrolladores pueden de Sun o MyFaces con WebSphere 5.0 (ni 5.1, de hecho). De-
crear fácilmente sus propios representadores y conversores. bería mencionar, no obstante, que el conjunto de herramien-
La configuración de JSF (que también es parecida a la de tas visuales de JSF de WDSc puede utilizar funciones no dis-
Struts) se escribe en un archivo de XML y la gestiona un ponibles en las implementaciones de Sun o MyFaces.
controlador de servlets. Pero JSF introduce un sofisticado Para saber más cosas sobre JSF, eche un vistazo a los “Re-
servicio llamado beans gestionados. Los beans gestionados cursos sobre JSF” incluidos en esta página.
son JavaBeans que mantiene el controlador de JSF. Estos
beans generalmente hacen dos cosas: sirven de envoltura Elija sus armas
(wrapper) de los datos que se muestran en HTML y propor- Antes de empezar a programar su aplicación web basada en
cionan métodos para procesar los datos de entrada de formu- Java, necesita obtener las tecnologías que utilizará. HTML y
lario. Un método de un bean gestionado puede enlazarse con JSP se dan por supuesto, pero le recomiendo encarecidamen-
un componente de entrada de JSF con una propiedad action: te que aprenda a utilizar JSTL y que adquiera alguna expe-
riencia en JavaScript. Por otro lado, no pierda tiempo desa-
<h:commandButton value=”Process” rrollando su propia arquitectura MVC. Utilice JSF o Struts.
action=”#{entryHandler.process}” /> Struts es el estándar de facto de las infraestructuras de apli-
caciones web. Es una tecnología madura, todos los IDE más
importantes son compatibles con Struts y hay más de una
docena de libros publicados sobre Struts. JSF indudablemente
Recursos sobre JSF tiene un conjunto de funciones relacionadas con la IU más
sofisticado, pero si la aplicación web es relativamente senci-
Sitios web lla, JSF puede ser excesivo.
jamesholmes.com/JavaServerFaces Sin embargo, si necesita una IU muy conseguida, añadir
Una lista de recursos de JSF entre los que se incluye el plug- funciones con los códigos de Struts o con código propio puede
in para Eclipse del propio Holmes, Faces Console ser decididamente más complejo que con JSF. Sí, JSF es una
tecnología nueva, pero la versión Early Access existe desde
exadel.com/tutorial/jsf/jsftutorial-guessnumber.html hace dos años y en diciembre de 2003 ya se habían publicado
Una sencilla aplicación de ejemplo “Adivina el número” por lo menos cuatro buenos libros sobre JSF. En cualquier
basada en JSF caso, independientemente de lo que digan los fabricantes de
los IDE, seguirá necesitando tener conocimientos de Java,
www-106.ibm.com/developerworks/websphere/techjournal/ tanto si usa JSF como si se decide por Struts. ■
0401_barcia/barcia.html
▲ Desarrollo de aplicaciones en JSF utilizando WebSphere
▲ Studio V5.1

Programación y sistemas

jsfcentral.com
Una lista de novedades sobre JSF, preguntas más frecuentes,
artículos, libros y otros recursos

Libros
“JavaServer Faces Programming”, Budi Kurniawan (McGraw-
Hill, 2003)
“JavaServer Faces”, Hans Bergsten (O’Reilly, 2004)
“JavaServer Faces in Action”, Kito Mann (Manning, 2004) Don Denoncourt es consultor en WebSphere de Computer Applications
Specialists, Inc.

38 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


Programación y sistemas



www.help400.es AGOSTO-SEPTIEMBR 2005 ServerNEWS 39


GUIA

40 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es


GUIA

MANTENIMIENTO Y BROKERAGE
INFORMÁTICO, S.L.

Mantenimiento / Alquiler y
Brokerage / Venta / Redes
Backup Center

Pere IV 78-82, 7º 3ª
08005 - Barcelona (Spain)
T. 34 934 854 427 Fax 34 934 850 168
P.T.A. Edificio CENTRO EMPRESAS 29590 Málaga

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 41


confidencial por Carlos Bell

EL MERCADO DEL ISERIES SE RECUPERA...


Uno se va de vacaciones con la esperanza de que en su ausencia no ocurra
nada digno de ser tenido en cuenta, pero en nuestro mundillo no suele ser
así. El primer día, al regresar, aparte de pasarme un par de horas supri-
miendo mensajes de spam (desde viagra y otros sucedáneos, hasta trolex,
acciones y títulos académicos, pasando por aplicaciones ofimáticas por me-
nos de la mitad de precio y otras ofertas comerciales de dudosa calidad) lo
destiné por completo a revisar “mis fuentes” de información habituales. Me
esperaban un montón de sorpresas.
Aparte de las que comento en el artículo “RPG: un puente entre dos
mundos” (incluido en la página 10) sobre la rebelión de los disidentes (ya
sabes, aquellos que no están de acuerdo con el “pensamiento único” de IBM)
que ha favorecido la ampliación y flexibilización del llamado “iSeries El científico de IBM Ravi Arimilli con un microprocesador
Developer Roadmap”, la “Hoja de ruta” a seguir para estar tecnológicamen- Power5, el que equipa a los actuales eServer iSeries y
te al día, también me he encontrado con otras interesantes noticias. pSeries de IBM. (Foto cortesía de IBM)
Así, de la lectura del informe de los resultados de IBM correspondientes al segundo trimestre se desprende que en IBM
se han vuelto a poner las pilas: “El crecimiento de STG (Grupo de Sistemas y Tecnología) en el área de servidores ha sido
impulsado por los servidores UNIX pSeries, que han tenido un crecimiento del 36%, los servidores xSeries y los iSeries de
gama media, que han crecido un 11% y un 10% respectivamente. Además de los servidores, los ingresos por sistemas de
almacenamiento han crecido un 19%...” Sin duda, éste será el año triunfal del Power5. La buena noticia es que para el
iSeries éste es el primer crecimiento de dos dígitos desde el primer trimestre del 2003, lo que demuestra el gran potencial
del iSeries para seguir ganando cuota de mercado. Tal parece que los esfuerzos de marketing de IBM durante la primera
mitad del año han hecho renacer el interés por el iSeries puesto que, en lo que va de año, los resultados de nuestra
plataforma han sido los mejores desde 1998. Aparentemente, aquellos días de los “Penosos resultados del iSeries”
(número 148, de noviembre de 2004) han pasado a la historia.
Según se comenta en el último informe de Gartner correspondiente al segundo trimestre de 2005, por noveno trimestre
consecutivo IBM ocupa la primera posición por facturación en el mercado mundial de servidores. El informe destaca,
asimismo, el importante crecimiento experimentado por la Compañía en los servidores Unix (más de 5,5 puntos interanuales).

■ System z9, larga vida al mainframe IBM Systems Agenda que pretende ser la respuesta a un nue-
vo escenario de trabajo, el colaborativo. La iniciativa se sus-
¿Quién dijo que el mainframe había muerto? IBM defiende
tenta en tres pilares: virtualización ("una buena manera de
su vigencia y apuesta por seguir renovando su gama de equi-
tener un entorno flexible, fácil de gestionar y con ahorro de
pos, pioneros a la hora de incorporar determinadas tecnolo-
costes"), el compromiso con los estándares abiertos ("para que
gías y avances que luego se van incorporando al resto de los
el cliente tenga la libertad de poder integrar todo aquello que
servidores de la compañía. Así, IBM ha lanzado la iniciativa
quiera o necesite") y la colaboración para innovar.
Los primeros anuncios que efectúa IBM bajo el paraguas
de su Systems Agenda son Virtualization Engine 2.0, la crea-
INDICE DE ANUNCIANTES SEPTIEMBRE 2005 ción de Blade.org (asociación promovida junto a Intel) y el
nuevo mainframe IBM System z9 que, según Álvaro Álvarez
Empresa Página Santullano, director de ventas de zSeries de IBM, es un pro-
ducto “para todo tipo de empresas, incluidas las medianas o
AMERICAN TOP TOOLS ............................................ 27, 40 pequeñas, y piedra angular de Systems Agenda”. De acuerdo
CACOVAI ................................................................................ 37 con IBM, el z9 es uno de los sistemas de cómputo más
CPI SOFTWARE ..................................................................... 19 confiables y seguros que jamás se hayan construido. Además,
GUÍA ................................................................................. 40, 41 duplica en potencia de procesamiento, capacidad y memoria
IBM .................................................................. Contraportada a su antecesor, el eServer z990, conocido familiarmente como
LAKEVIEW ............................................................................... 31 “T-Rex” (“Tiranosaurio Rex”).
MAIN MEMORY ....................................... Interior Portada Sigilosamente, IBM sigue avanzando en el proyecto ECLipz
MICROSOFT .............................. Interior Contraportada
(enmarcado en la iniciativa “Power Everywhere”) del que casi
OCÉ ........................................................................................... 13
nadie habla y cuyo acrónimo nos sugiere una convergencia
SOFTWARE GREENHOUSE............................................... 23
entre las series i, p, y z de la empresa, basada en la arquitec-
SUSCRIPCION NEWS/400 .......................................... 25, 39
TANGO/04 ................................................................................ 9 tura del chip Power6, previsto para finales de 2006. ■
TRANSTOOLS ........................................................................ 33 Como sabes, esta información es estrictamente confidencial. Aunque nosotros
neguemos haberlo dicho o escrito, te autorizo a que obres en consecuencia

42 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

You might also like