servernews - 156 (septiembre 2005)

44
156 A N I V E R S A R I O 15 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 INFORMACIÓN TÉCNICA Y DE GESTIÓN PARA i5 e iSeries

Upload: publicaciones-help400-sl

Post on 06-Jun-2015

1.125 views

Category:

Documents


0 download

DESCRIPTION

Revista en formato digital con información técnica y de gestión para System i5, iSeries y AS/400 de IBM

TRANSCRIPT

Page 1: ServerNEWS - 156 (Septiembre 2005)

156 ANIVE

RSARIO15

Programación en CGIDesarrollo con CGIDEV2Consideraciones sobre Java

Interfaces de usuarioen el iSeries

Mejor portabilidad:EnterpriseGeneration Language

Suplemento HELP400RPG e IFS: Obtener información sobre los archivos

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

Page 2: ServerNEWS - 156 (Septiembre 2005)
Page 3: ServerNEWS - 156 (Septiembre 2005)

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 3

editorial

Suscripción: Anual (10 númerosal año, no en Julio y Agosto).España: 96 euros (IVA incluido).Extranjero: 180 $ USA (incluido elenvío por Correo Aéreo). Sedistribuye a final de mes.

© Publicaciones HELP400, S.L.Se prohibe la reproducción total o parcialde los artículos aparecidos en estenúmero sin la autorización expresa porescrito de la empresa editora, titular delCopyright. Todos los derechos reservadosen cualquier idioma.ServerNEWS es una publicaciónindependiente de grupos de usuarios y/ode distribuidores de marcas. De las ideasexpuestas en los artículos firmados sonresponsables sus autores. Corresponde allector el asegurar que las noticias,técnicas y procedimientos descritos sonadecuados para su instalación.Publicaciones HELP400 S.L. noasume ninguna garantía ni implícita niexplicitamente.La empresa editora no se responsabiliza dela asiduidad en la distribución gratuita alas empresas españolas equipadas conS/3X o AS/400.

IBM y AS/400 son marcas registradaspor International Business Machines.

Antonio Montí[email protected]

Imagen de la portada: Mike Friehauf

Atrás quedan los días de vacaciones y comenzamos de nuevo, después dehaber recargado energías, la labor profesional que dejamos aparcadadurante el mes de agosto. Ponerse al día puede resultar algo duro paratodos pero en la Redacción, tras dos meses de “ausencia”, tenemos lailusió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 delsector, 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 pocosmeses, 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 conocidocomo Longhorn, ya tiene nombre: Windows Vista, el que será, a partir de 2006, elnuevo sistema operativo de escritorio de Microsoft.

Recordemos también que Bill Joy, cofundador de Sun Microsystems y uno de losdesarrolladores del Unix de Berkeley, juzgó que Internet podría ser el campo debatalla más adecuado para disputar a Microsoft su primacía casi absoluta en elterreno del software, y vió en un lenguaje interno de Sun, Oak, el instrumentoidóneo para llevar a cabo estos planes. Tras un cambio de nombre y modificacionesde 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 asus dudas sobre qué lenguaje utilizar, C++ o SmallTalk, para su nueva generaciónde AS/400, los llamados “AS/400e Series”, presentada el 19 de agosto de 1997,junto con la V4 del OS/400 y todos sus planes y herramientas para que las empre-sas pudieran beneficiarse de inmediato de las oportunidades del denominado e-business, “el comercio electrónico del siglo XXI”, según rezaba la publicidad deIBM de aquellas fechas...

Mucho hemos hablado de Java en la revista, tanto que hasta hemos publicadoun libro, “Java para programadores RPG”. Así que, para iniciar la nueva tempora-da como se merece, proseguimos con un tema que puede parecer polémico: la de-fensa del ILE RPG del iSeries como lenguaje práctico y polivalente. Como se indicaen uno de los artículos de este número “Hoy, más que nunca, las empresas estáninteresadas en encontrar la mejor forma de ofrecer aplicaciones web interactivas asus clientes y usuarios. Con tantas opciones disponibles... solemos pasar por alto lamejor solución y la más sencilla”. Si sabemos aprovechar las ventajas de Internety confiamos en la profesionalidad y experiencia de nuestro equipo informático,expandir el negocio, reducir costes o responder a las demandas de los clientes másexigentes será una tarea sencilla.

¿Quién dijo vacaciones?

Page 4: ServerNEWS - 156 (Septiembre 2005)

4 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

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

equipo editorial

Director: Antonio MontíaRedacción: Carlos Bell, Alberto C. Blanch,Equipo internacional de iSeries NEWSColaboradores habituales: Jaime GustavoEstany, José Mª Martín, Lluís PeiretTraducciones: Pere J. Francisco Brumós

producción

Realización: Media Limits S.L.Maquetación: Ramiro Esteve CollImpresión: G2B gràfic S.L.Distribución: Unipost S.A.

administración

Suscripciones : Nuria NavarroPublicidad: Tel. 34- 932 310 049

Fax: 34-932 310 309Servicio HelpNet: www.help400.es

edita

PUBLICACIONES

Deposito legal: B-2757-90I.S.S.N. 1698-4501APTDO. DE CORREOS 8003 - 08080 BarcelonaGran Vía Corts Catalanes, 715, Entlo. 3ª08013 - BarcelonaTel.: 932 310 049 Fax: 932 310 309E-mail: [email protected]

Director General: Alberto C. Blanch Llangostera

Publicado con la participación de

- iSeries NEWS www.pentontech.com

Group Publisher/Editor: Wayne MaddenGroup Editorial Director: Dale Agger

Penton Technology MediaDarrell C. Denny, President

Penton Media, Inc.David Nussbaum, Chief Executive Officer

LATINOAMERICA

distribuidores

Belice, El Salvador, Guatemala y HondurasVIACOMP6ª Avenida. "A" 2-83 Zona 10Ciudad de Guatemala, GUATEMALA 01010Telf. 502-360-0358 y 360-0350Fax 502-332-33694email: [email protected]

PerúCOMMON PERUBajada Balta 131, Of. 10, 2º PisoMiraflores Lima 18, PERUTelf. y Fax: 46 31 32

ParaguayANGEL LIERNUR E HIJOP.O. BOX 2448ASUNCION - [email protected]: [email protected]

en portada

10 RPG: un puente entre dos mundospor Carlos BellAl margen de que en su día IBM eligiera Java para el desarro-llo web en el iSeries, en el mercado existen tantas solucionesque puede darnos la sensación de que para este tipo de aplica-ciones es necesario “utilizar otra cosa” en lugar de profundizaren lo que ya conocemos, el RPG, y aprovechar la experienciaque con él hemos adquirido.

12 CGIDEV facilita la vida a los programadoresde RPGpor Jef SutherlandCGIDEV2 es un kit de herramientas de desarrollo de páginasweb gratuito suministrado por IBM que enmascara lacomplegidad de la programación CGI. Como veremos, CGIDEV2ofrece un medio de incluir páginas HTML en programas escri-tos en RPG como si fueran plantillas, llevar a cabo sustitucio-nes de variables y devolver páginas HTML al navegador.

18 Programación en CGI y el iSeriespor Bradley V. StoneEn el artículo se analizan las posibilidades del CGI. La progra-mación en CGI existe en el iSeries desde hace muchos años.Desde la V3R2 del OS/400, IBM ha proporcionado APIs quepermiten a los programadores crear páginas web totalmentefuncionales sin necesidad de utilizar soluciones caras y que con-sumen muchos recursos.

Page 5: ServerNEWS - 156 (Septiembre 2005)

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 5

www.help400.es

AGOSTO-SEPTIEMBRE 2005 ServerNEWS 5

SECCIONESHABITUALES

33333 Editorial

66666 Novedades

4040404040 Guia

forum.help400Forum.help400 es una lista de correospuesta a disposición de los lectores deServerNEWS en la que cada día se solu-cionan numerosos problemas entre todoslos participantes. Hallará más informaciónen http://www.help400.es

HELP400 Suplemento Suplemento Técnico i

management

24 Sobre las interfaces de usuariopor Jef SutherlandLa flexibilidad del iSeries es ventajosa a la hora de desarrollar interfaces deusuario y trabajar con ellas. Podemos tener la mejor lógica y las mejoresrutinas de proceso bajo la interfaz de usuario, pero si ésta no obtiene lainformació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 “EnterpriseGeneration Language”por George Farr, Phil Coulthard y Kushal MunirUn nuevo artículo de la serie sobre el trayecto que lleva del RPG a J2EEpara desarrolladores del iSeries. En esta ocasión, y siguiendo la explicacióndel cuarto paso del itinerario, que trata sobre una mejor portabilidad, sepresenta otra tecnología llamada “Enterprise Generation Language” quepuede ayudarnos a desarrollar aplicaciones portables.

opinión

8 RPG ha muerto... ¡viva RPG!por Carson A. SouleEl 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 iSeriessigue 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énserá luego su abanderado?

programación y sistemas

34 Aplicaciones Java basadas en webpor Don DenoncourtAntes de que su empresa se embarque en el desarrollo de una aplicaciónescrita en Java para la web, debería tener en cuenta una serie de considera-ciones tecnológicas. En este artículo encontrará la información necesariapara seleccionar la combinación tecnológica más apropiada para sus aplica-ciones.

1 Obtener información sobre los archivospor Scott KlementEn los artículos anteriores sobre el RPG y el IFS hemos visto cómo leer ygrabar archivos continuos en el sistema de archivos integrado (IFS). IBMtambié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 estainformación y cómo modificar los atributos de esos archivos.

Nº 156 AGOSTO-SEPTIEMBRE 2005

Page 6: ServerNEWS - 156 (Septiembre 2005)

6 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

novedades

A

La consola de rendimiento de Tango/04ahora también para WindowsGestión flexible de rendimiento en múltiples plataformas

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

servidores Windows y iSeries (CPU, disco, memoria, trabajos, etc.) en una consola única de Gestión deNiveles de Servicio.

El nuevo VISUAL Control for Windows 9, lanzado por Tango/04 Computing Group, lo hace posiblecapturando e integrando en su consola de gestión de rendimiento métricas procedentes de servidorescon Windows Management Instrumentation (WMI) y Simple Network Management Protocol (SNMP).

Desde hace diez años, cientos de compañías han utilizado VISUAL Control for Windows para asegu-rar la disponibilidad de sus sistemas, gestionar sus Acuerdos de Nivel de Servicio (SLA) y potenciar susprocesos de negocio en infraestructuras basadas en servidores iSeries. Ahora, con la versión 9, los depar-tamentos de informática pueden controlar simultáneamente, desde una sola interfaz gráfica e intuitiva,cualquier cantidad y combinación de servidores iSeries y Windows, además de aquellos basados enSNMP.

“VISUAL Control for Windows ha evolucionado hasta ser una solución de gestión de rendimiento muy flexi-ble,” dice Raúl Cristián Aguirre, Gerente de Tango/04 Computing Group. “Las poderosas herramientas deprogramación de la versión 9 permiten alinear fácilmente la gestión de niveles de servicio con los objetivos denegocio 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 sistemasLinux, UNIX y AIX gracias a la tecnología ALEV de Tango/04, que permite aprovechar al máximo elprotocolo SNMP. Los operadores pueden además desarrollar scripts, definir variables y especificar um-brales propios y condiciones de alerta con el editor de expresiones lógicas ALEV.

“A veces es necesario recibir una alarma de rendimiento cuando el umbral de utilización de memoria deun trabajo ha sido sobrepasado, pero sólo si es procesado en un servidor específico durante un período detiempo preciso y si lo ejecuta un determinado usuario. Este es un ejemplo del nivel de personalización queun director de informática puede necesitar en su trabajo diario, y que con Tango/04 puede conseguir muyfácilmente,” agrega Raúl Cristián Aguirre.

Más de dos mil parámetros de rendimiento pueden ser monitorizados y controlados para ejecutarajustes en forma automática antes de que los procesos de negocio sean afectados. Los usuarios puedenpersonalizar en cualquier vista qué parámetros mostrar, filtrando la información irrelevante.

Los indicadores claves de actividad de sistema incluyen: utilización de CPU por tipo de trabajo, los 10usuarios y trabajos más abusivos, utilización de disco, tiempos de respuesta, trabajos (por tipo de traba-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.

Cuando se sobrepasa un umbral de rendimiento importante en un sistema, VISUAL Control forWindows puede ejecutar una alarma de acuerdo con reglas y variables especificados por el usuario. Losadministradores pueden programar acciones automáticas tales como modificar las prioridades de losprocesos, ejecutar comandos locales o remotos y alterar los atributos de trabajos para corregir un pro-blema. Si se requiere la intervención de un operador, la consola puedeemitir una alerta por email o SMS y escalarla a diferentes personashasta que el problema sea resuelto.

Para más información, Telf.: 932.740.051 - www.tango04.es

■ ■ ■ ■ ■ Adélia: 4GL paradesarrollos enplataformas iSeries,Gráficas C/S y Web

Innova Estudi Soft, especialis-tas en programación a medida, enGestión Documental, en solucio-nes Internet para empresas y Bu-siness Partner Advanced de IBM,es el nuevo distribuidor para Es-paña de la herramienta CASE

Adélia Studio. La compañía ubi-cada en Figueres (Girona) acumu-la una experiencia en el mercadoinformático de más de 14 añosgestionando diversos sectores in-dustriales y especialmente el sec-tor eléctrico.

Adélia Studio consta de unagama de herramientas de desarro-llo articuladas alrededor de unmodelo conceptual y de un 4GLque permiten la concepción y el

desarrollo de las siguientes arqui-tecturas: entornos gráficos C/Smulti-plataforma y multi-BDs –DB2/400, SQL, etc.- (Adélia VisualStudio) que genera Java y/o C;Web en entornos JAVA-J2EE(Adélia Web Studio); y 5250 nati-vas sobre iSeries (Adélia iSeriesStudio) que genera RPG.

Para más información,Telf.: 972.673.367www.innova-soft.com

■ ■ ■ ■ ■ Reunion Nacionalde Common 2005 enGranada

Los próximos días 20 y 21 de Oc-tubre tendrá lugar en el HotelCarmen de Granada la reuniónanual de Common Europe Espa-ña. Durante el encuentro se tra-tarán, entre otros, temas de Busi-ness Inteligence y Soluciones decontinuidad; y, en el apartado deExperiencias de Usuario, se pre-sentará la conexión de cajerosautómaticos a un iSeries, en basea la experiencia real de la empre-sa EMASAGRA.

Para más información,Telf.: 912.116.114www.common-es.org

■ ■ ■ ■ ■ VII Reunión anualde usuarios de ASNAVisual RPG

CaCovai 400, anuncia la “VII re-unión anual de usuarios de AVR”,que se celebrará los días 6 y 7 deOctubre en el Hotel Bodega Real,en el Puerto de Santa María.

Como en anteriores ocasiones,este año se presentarán las nue-vas versiones de AVR Clásico,AVR. Net y Monarch. Y se mostra-rán potentes aplicaciones desarro-lladas con AVR.

Para más información,Telf.: 902.365.787www.cacovai.com

■ ■ ■ ■ ■ Storage ForumBarcelona 2005

Tras el éxito de las ediciones deStorage Forum en Madrid, esteaño Barcelona acoge el StorageForum 2005, el salón profesionalpor excelencia dedicado a las tec-nologías de almacenamiento dedatos que se presentará los días25 y 26 de octubre, en el BarcelóHotel Sants.

Se estructurará en dos ciclos deconferencias temáticas. El prime-ro orientado a casos prácticos,nuevas tendencias y estrategiasdel sector del Almacenamiento ySeguridad de datos. El segundodará la palabra a los actores delmercado para presentar sus nue-vos productos y tecnología.

Para más información,www.storage-it.com

Page 7: ServerNEWS - 156 (Septiembre 2005)

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 7

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 atodos nuestros lectores. Puede enviar sus notas de prensa a ServerNEWS, Gran Vía CortsCatalanes, 715, Entlo 3ª 08013 - Barcelona. Para la inclusión de fotografías, agradecería-mos que las remitieran en formato electrónico.

C

■ ■ ■ ■ ■ Seminario deoptimización de lagestión de iSeries

¡Descubra cuánto puede ahorrarsu instalación al optimizar la ges-tión de recursos de su iSeries! Aldetectar las posibilidades, imple-mentar políticas de monitoriza-ción, descubrir las reservas y efec-tuar las operaciones necesarias–todo sin interrumpir el trabajode los usuarios– la mayoría de lasinstalaciones pueden liberar en-tre 20% - 40% de los recursos com-prometidos de su iSeries.

Software Greenhouse pre-senta, el día 15 de Noviembre enMadrid y el 16 en Barcelona, sen-dos seminarios de gestión de re-cursos de iSeries, con el lanza-miento del producto OS Directorde Vision Solutions. Este nuevoproducto ha sido incorporado a lalínea de productos del conocidoproveedor de Alta Disponibilidad,al ser adquirida por parte deVision Solutions la empresa bri-tánica OS Solutions. OS Directores una excelente herramientapara la optimización de rendi-mientos y de utilización de recur-sos de iSeries que suministra unamplio rango de funcionalidadesde monitorización, gestión y opti-mización.

El CEO de Vision Solutions,Nicolaas Vlok, comenta respectoa la reciente adquisición: “Elmercado de Alta Disponibilidad si-gue evolucionando y han surgidonuevos requerimientos, tales comoreducir el volumen de discos utili-zado, mejorar rendimientos y apro-vechar al máximo todos los recur-sos del sistema, al mismo tiempoque se mantiene alta disponibili-dad. Vision Solutions ha estadotrabajando en esta dirección y estaadquisición significa un rápidoavance y permite una integracióninmediata de optimización de sis-temas con alta disponibilidad.”

En el seminario actuará comoinvitado principal (con traducciónsimultánea) Mike Ryan, directorde la división OS de Vision Solu-

tions y se presentarán ejemplosprácticos de ahorros significativosde recursos y casos reales de clien-tes con cifras de mejoras de ren-dimientos y utilización de iSeries.

■ ■ ■ ■ ■ Redbook de IBMsobre Integración de.Net con el iSeries

Carlos Carminati, Director delárea de tecnología de d2B Net-work, de Montevideo (Uruguay),empresa formada por expertos enel desarrollo de soluciones basa-das en las tecnologías .Net deMicrosoft, fue invitado especial-mente ha realizar una residenciaen IBM Rochester, con el objetivode escribir junto a un equipo deespecialistas, el libro “IBM Red-book 2005” sobre integración deMicrosoft.Net Framework con lossistemas iSeries (AS/400 e i5) deIBM.

Esta experiencia posiciona alequipo de desarrollo tecnológicode d2B Network como experto enintegración de desarrollos .NETsobre la plataforma iSeries, espe-cialmente con bases de datos DB2Universal DataBase. El libro hasido editado por IBM y, si está in-teresado, puede descargarse unaversión en PDF desde la dirección:

www.d2bnetwork.com/download/RedBook_IBM-2005.zip

■ ■ ■ ■ ■ Seminario deGestión de Serviciosde Negocio (BSM)

¿Qué es BSM? ¿Cómo estructurarun proyecto de monitorización?¿Cómo mejorar el rendimiento yla disponibilidad de las aplica-ciones? ¿Por qué el control de losservicios de negocio es la mayorprioridad para los directivos infor-máticos?

El seminario gratuito “BSM2005: De la monitorización de in-fraestructura a la monitorizaciónde servicios de negocio”, organiza-

iSeries Developers Roadmap:

Bienvenida de IBM a ASNAon la inclusión de ASNA en el “iSeries Developers Roadmap”,se unen las estrategias de IBM y Microsoft para los servicios

Web y la implementación de arquitecturas orientadas a servicios(SOA).

ASNA anuncia que IBM oficialmente ha añadido sus solucionesde desarrollo basadas en Windows y .NET, en el denominado“iSeries Developers Roadmap”, un componente crítico del progra-ma de soporte y ayuda a terceros de IBM, conocido como “Iniciati-va para la Innovación del iSeries”.

La inclusión de las soluciones para el iSeries de ASNA en la“Hoja de ruta” de IBM, junto con el apoyo de Microsoft a través dela “Midrange Alliance Program” (de la cual ASNA es cofundadora),proporciona a los usuarios de iSeries la única solución .NET com-pleta para la modernización de aplicaciones avalada por ambasempresas, IBM y Microsoft. Los usuarios de iSeries que busquenlas mejores soluciones para modernizar sus sistemas midrange,ahora pueden estar seguros de que cuentan con el apoyo tanto deIBM como de Microsoft en sus esfuerzos de migración a .NET

Las herramientas de terceros incluidas en el “iSeries DevelopersRoadmap”, son consideradas como los primeros productos que cum-plen con los rigurosos criterios de la iniciativa para la “Innovacióndel iSeries” de IBM. Una iniciativa diseñada por IBM para incre-mentar su apoyo a los miles de ISVs y proveedores de herramien-tas para que éstos amplíen sus capacidades a través de nuevas einnovadoras soluciones eServer.

El contar con los productos Windows y .NET de ASNA, es unreflejo del reconocimiento de IBM a la heterogeneidad de losentornos, y del importante papel que actualmente juega .NET enlas estrategias de muchas empresas. “IBM reconoce claramente eléxito y adopción de .NET entre las empresas con sistemas iSeries, amenudo a expensas de WebSphere y JAVA” comentó Anne Ferguson,presidenta de ASNA, añadiendo: “Y es correcto, porque añadiendolos productos de ASNA, IBM cubre todas las posibilidades en inte-rés de sus clientes...”. El distribuidor de ASNA para España y Por-tugal es la empresa CaCovai 400.

Para más información, Telf.: 902 365 787 - www.cacovai.com

do por Tango/04 ComputingGroup, y que se celebrará el día5 de Octubre en Barcelona, el día6 de Octubre en Madrid y el día14 de Octubre en Buenos Aires,responderá de modo ameno ypráctico a estas y muchas otraspreguntas fundamentales paraque las empresas sean más com-petitivas y exitosas.

Business Service Management(BSM) puede ayudar a mejorarlos niveles de servicio, reducircostes, prevenir problemas y ga-rantizar la satisfacción de losusuarios.

La experiencia de los ponentesen proyectos de monitorizaciónmultiplataforma aportará a losasistentes conocimientos y técni-cas útiles para conseguir objetivosdemostrables. Se podrán conocerde primera mano las mejores prác-ticas de la industria y sacarlesprovecho, tanto si se necesita me-dir el rendimiento de los servido-res, como si debe cumplirse unaley (LOPD, SOX) o alcanzar estric-tos niveles de servicio (SLA).

Para más información,Telf.: 932.740.051www.tango04.es/eventos

Page 8: ServerNEWS - 156 (Septiembre 2005)

8 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

opinion por Carson A. Soule

Cbía ni clases de programación, ni departamentos de informáticaen las universidades... sólo algunos chicos que utilizabanmainframes y trabajaban en Cobol, algo de ensamblador yun poco de Basic para los servicios tiempo compartido. Laprogramación estructurada no se había inventado. Había des-tellos de cosas venideras en trabajos de Parnas y Dijkstra,pero no teníamos ni idea de cómo aplicarlas a RPG II.

RPG era único tanto conceptualmente como en la forma enque se ejecutaba. Tocábamos el cielo y al mismo tiempo su-fríamos tormento con maravillas como su ciclo lógico, sus ni-veles de control y el MR, la consulta anticipada o montonesde formularios para cada tipo de especificación y diseño delistados. Los indicadores gobernaban nuestras vidas. Nues-tra idea de modularización era leer datos de un archivo, pro-cesarlos, grabar los resultados intermedios en otro archivo yrepetir la operación hasta obtener el resultado final. No ha-bía base de datos... sólo archivos indexados. No había llama-das entre programas ni parámetros.

Un largo reinadoUna situación tan primitiva no podía durado mucho, pero lo hizo.Perduró durante casi toda la vida útil de los S/3x, sin mejorarhasta la llegada del AS/400: un periodo de casi 20 años. Sí, semejoraron cuestiones puntuales. Con el S/34 llegaron los termi-nales en línea y los formularios de programación fueron desapa-reciendo lentamente. Es cierto que RPG III llegó con el S/38,incluyendo nuevas y atrevidas funciones como llamadas entreprogramas y códigos de operación estructurados, pero no se adop-taron de manera general hasta el advenimiento del AS/400.

A pesar de los espectaculares avances que se dieron conRPG III y luego con RPG/400, el formato fijo siguió mandan-do. De hecho, el formato fijo está tan profundamente imbricadoen el RPG que hasta los conceptos de formato libre se aplicansólo a una parte del lenguaje. No se trata únicamente de RPG.DDS también es de formato fijo. El formato fijo está tan arrai-gado en la mentalidad y en las herramientas de programa-ción que los defensores del formato libre se han dado cuentade que incluso después de atravesar con una estaca el cora-zón de las especificaciones C, ese formato se niega a morir.

¿Evolución o extinción?Me pregunto si el RPG puede evolucionar hacia un formatolibre o es algo antinatural. ¿Tiene sentido hablar de formatoparcialmente libre? Puede que el formato libre sólo tenga sen-tido si se implementa totalmente. Esto implicaría eliminarlos tipos de especificación, sustituir DDS por SQL para tra-

bajar con la base de datos y utilizar HTML para la definición dela interfaz. Significa sustituir RPG por un lenguaje nuevo.

En estos tiempos de sistemas abiertos y código libre, ¿deberíaIBM 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 comolas mentes de la comunidad de usuarios de RPG? Ninguna op-ción parece lo bastante convincente. Con la desaparición del HP3000 se ha perdido la única implantación importante que no erade IBM. El iSeries está solo. No es difícil prever en última ins-tancia el fallecimiento de RPG independientemente de los in-tentos que haga IBM para salvarle la vida con el formato libre.

RPG y el iSeries tienen algunos problemas graves. La au-sencia de una interfaz gráfica coherente restringe sus posibi-lidades. Estamos siendo obligados a dejar atrás a nuestro es-timado RPG por WebSphere y Java para comunicarnos conlos navegadores. O si no, debemos utilizar CGIDEV y HTMLo alguna clase de conexión .NET modificada.

Me pregunto durante cuánto tiempo se seguirán utilizan-do RPG como el componente modelo de la arquitectura MVC(Modelo/Vista/Controlador). Sin soporte para interfacesXML y SOA, RPG sólo puede realizar parte del trabajo en lasarquitecturas que no están centradas en la interfaz de usua-rio. El soporte dado a RPG por parte de la comunidad de usua-rios de iSeries sigue siendo firme, pero igual que le ocurre ala generación del baby boom, un linaje de expertos en RPGestá a punto de jubilarse. ¿Quién será el abanderado?

El incierto futuroTal vez los lenguajes de aplicación general han pasado demoda. Es difícil defender que los actuales lenguajes de for-mato libre sean dechados de claridad. Son difíciles de apren-der, difíciles de leer y tienen numerosas deficiencias en áreasrelacionadas con la programación. La opción de lenguajes deaplicación específica, como SQL, HTML y XML es mucho másseria. La arquitectura y los lenguajes dirigidos por modelosson prometedores pero están lejos de la madurez.

RPG y los lenguajes de formato fijo tiene mucho que ense-ñarnos de su evolución a lo largo de estos últimos cuarentaaños. A falta de estudios formales en informática, una gene-ración que entendía cómo funcionaban las empresas, creó apli-caciones que condujeron a la revolución de los ordenadores.Estos programadores y los lenguajes que utilizan nos mostra-ron de qué eran capaces con herramientas de programación sen-cillas y pensadas para ejecutar una función concreta.

El camino que hay por delante no está claro. Espero que nono se pierda el lenguaje que amamos ni que olvidemos laslecciones que nos enseñó, independientemente del debate acer-ca del formato libre. RPG ha muerto. ¡Viva RPG! ■

Carson A. Soule es el director general de Computer Application Specialists.

omo fui uno de los primeros (re-lativamente) en usar RPG aprincipios de los años 70, tuveque aprender a programar yosolo. En aquel entonces no ha-

RPG ha muerto... ¡viva RPG!

Page 9: ServerNEWS - 156 (Septiembre 2005)

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 9

Page 10: ServerNEWS - 156 (Septiembre 2005)

10 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

Opciones disponiblesAnte el desarrollo de un nuevo proyecto de comercio electró-nico o de una aplicación basada en Web para la intranet cor-porativa o Internet, nos encontramos con varias premisas quedebemos tener en cuenta si queremos alcanzar el éxito: mini-mizar el tiempo de desarrollo, ofrecer un entorno consistenteque no dé lugar a transacciones erróneas, poder comunicar-nos fácilmente con otras aplicaciones y con otras empresas, yser capaces de mantener el contenido con el mínimo esfuerzoposible. Como es lógico, buena parte del éxito dependerá dela estrategia de desarrollo que adoptemos.

Aparentemente y simplificando, si el entorno del que estu-viéramos hablando no fuera el del iSeries, a la hora de tomaruna decisión sobre la arquitectura a implementar tendría-

mos que decidir entre tecnología Microsoft o tecnología abier-ta; es decir, entre ASP.NET, ODBC y desarrollo de aplicacio-nes en VisualBasic, o JSP, Java Beans, JDBC y desarrollo deaplicaciones en Java. Dentro de las tecnologías abiertas po-dríamos incluir otras que están basadas en lenguajes descripts como PHP o Perl, junto con MySQL como base de da-tos y la utilización del CGI (Common Gateway Interface) delos servidores de aplicaciones Web, como Apache.

De hecho, y al margen de que en su día IBM eligiera Javapara el desarrollo Web en el iSeries, en el mercado existentantas soluciones para una u otra tecnología que puede dar-nos la sensación de que para este tipo de aplicaciones es ne-cesario “utilizar otra cosa” en lugar de profundizar en lo queya conocemos, el RPG, y aprovechar la experiencia que con él

n la redacción, aceptando como muyrazonable la afirmación de que “lasempresas equipadas con iSeries dis-ponen de dos de los más valiosos re-

cursos: sus datos y unos programadores RPGmuy 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 comolenguaje polivalente, debíamos mostrar sus posibilidades

reales en un mundo tan interconectado como el actual, dondelas aplicaciones Web han pasado a ser el “pan nuestro” de cada día.

DE LAS APLICACIONES CLÁSICAS A LA WEB Y AL COMERCIO ELECTRÓNICO

por Carlos Bellpor Carlos Bell

Page 11: ServerNEWS - 156 (Septiembre 2005)

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 11

hemos adquirido desarrollando todo tipo de aplicaciones em-presariales.

Sea pragmático y utilice el RPGAunque el marketing y los intereses creados sean muy agre-sivos, en Febrero de 1997 y con el título de “Acceder a losdatos del AS/400 desde Internet” presentábamos por pri-mera vez las APIs del CGI incluidas en el OS/400 que permi-ten combinar la potencia de nuestras bases de datos con lasimplicidad de la Web mediante los lenguajes más clásicosdel iSeries (RPG y Cobol).

Como parte de DB2/400 el OS/400 también incluye “de se-rie” un producto llamado Net.Data. En realidad Net.Data esun lenguaje de filosofía similar a la de PHP, es decir, uno ovarios scripts de servidor que a través de CGI procesan for-mularios HTML. Detrás, Net.Data puede acceder a DB2/400vía SQL así como llamar a cualquier ejecutable que esté en elsistema (y que no sea interactivo, claro). Por ejemplo, pode-mos tener una pantalla HTML de petición de un informe, pordetrás llamar a un programa RPG que mediante parámetroso un archivo de trabajo devuelva unos resultados medianteuna página HTML que los presente al navegador del usuarioo que mediante SQL los añada al archivo de trabajo o a laBase de Datos. Como es lógico, con Net.Data (o con cualquier“otra cosa” relacionada con la Web) también es necesario sa-ber algo de HTML, XML, Hojas de estilo y JavaScript.

Si se sabe RPG, la manera más fácil para desarrollar apli-caciones Web es usar tecnología CGI aunque en sí misma di-cha tecnología no sea nada fácil de utilizar. Sin embargo, entreotras utilidades de terceros que enmascaran su complejidad,existe una gratuita, la CGIDEV2, basada en un programa deservicio, que permite desarrollar páginas Web muy fácilmen-te utilizando programación RPG CGI.

Otros artículos relacionados

Desarrollo de una aplicación CGI con RPG (1ª parte)Marzo 1997 - número 72

Desarrollo de una aplicación CGI con RPG (2ª parte)Octubre 1997 - número 79

Utilización del RPG con Net.DataMayo 1999 - número 94

Formularios HTML con Net.DataOctubre 1999 - número 97

Utilizar un archivo de registro de la web con Net.DataJunio/Julio 2000 - número 105

HTML y RPG-CGI para gestionar listas de validaciónJunio/Julio 2002 - número 125 (Suplemento HELP400)

RPG y CGI te invitan a la webDiciembre 2002 - número 129

Simplifique el desarrollo web con Net.DataFebrero 2003 - número 131

RPG para aplicaciones webFebrero 2003 - número 131

La rebelión de los disidentesSi uno pregunta en cualquier centro de IBM cómo puede de-sarrollar aplicaciones Web, la respuesta unánime será quecon tecnología Java y a través de WebSphere. Como conse-cuencia de este “pensamiento único”, en IBM nadie ha oídohablar de otras posibilidades y alternativas.

La utilidad CGIDEV2 fue desarrollada entre 1996 y 1999por Mel Rothman (jubilado de IBM desde 2002) para ser uti-lizada por el personal de IBM Global Services. En 1997,Giovanni B. Perotti, de IBM Italia, convenció al responsabledel CTC (Client Technology Center) de IBM en Rochester paraque se distribuyera gratuitamente a través de una páginaweb (www-922.ibm.com). Más de 17.000 descargas de 126paises distintos avalan su popularidad. Según Perotti, al me-nos tres mil webs iSeries han sido construidas utilizándola.

Perotti se retiró de IBM a finales del pasado mes de Junio,y pidió permiso a IBM para redistribuir CGIDEV2 en su pá-gina web personal, www.easy400.net, con el fin de ofrecer so-porte y actualizaciones a la comunidad que la utiliza. La res-puesta de IBM fue negativa. Sin renunciar a su idea, el día19 de Julio mediante e-mail Perotti solicitó el apoyo de losusuarios de CGIDEV2 para pedir a IBM que otorgara a laaplicación el status de código abierto.

En pocos días todos los foros del entorno (incluido el nues-tro, forum.help400) y las webs especializadas se hicieron ecode la petición. Como consecuencia, más de 350 mensajes fue-ron remitidos a las direcciones e-mail de Peter Bingaman,(actual World Wide iSeries Marketing de IBM) y del respon-sable del CTC en Rochester, tal y como refleja el documentoPleadings.doc (accesible en easy400.net) y donde se puede verque 10 de esos mensajes proceden de España.

Conste que CGIDEV2 se sigue distribuyendo librementedesde la web de IBM y desde www.easy400.net con acceso aIBM. A mediados de Agosto, IBM había pasado del NO másrotundo al inicio de una valoración de las posibles implica-ciones de cederlo a la comunidad Open Source.

Afortunadamente, parece que ese famoso “pensamiento úni-co” del iSeries tiene los días contados: En Agosto IBM ha ad-mitido el VisualRPG.Net de ASNA como parte de su “iSeriesDeveloper Roadmap” y pronto, muy pronto, PHP podrá co-rrer en el iSeries en modo nativo. Por la misma razón, espe-remos que el producto Net.Data no sea discontinuado.

A modo de resumenComo muestra el recuadro adjunto (“Otros artículos rela-cionados”) no es la primera vez que tratamos este tema enla revista. Durante años, Java ha recibido buena parte de laatención de la prensa especializada por lo que se refiere aldesarrollo de aplicaciones en el iSeries pero... ¿por qué apren-der otro lenguaje si utilizando las APIs disponibles en eliSeries, bien directamente o bien mediante programas de ter-ceros, el RPG ya hace lo que quiero y en menos tiempo quecon otras soluciones? ■

Carlos Bell es colaborador habitual de esta revista.

Page 12: ServerNEWS - 156 (Septiembre 2005)

12 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

GIDEV (en realidad, CGIDEV2, que es la versiónmás reciente) forma parte de Easy400 (www-922.ibm.com), un kit de herramientas de desarro-llo de páginas web gratuito suministrado por IBM.CGIDEV2 es un programa de servicios que pro-

porciona un sencilla envoltura (wrapper) para las API de IBM,además de otros procedimientos que facilita el trabajo a losdesarrolladores de RPG. CGIDEV2 ofrece un medio de in-cluir páginas HTML en progra-mas escritos en RPG como sifueran plantillas, llevar a cabosustituciones de variables y devol-ver páginas HTML. La inclusiónde plantillas de HTML significaque no es necesario crear el códi-go HTML escribiendo manual-mente instrucciones en el progra-ma de RPG. Utilizar CGIDEV2 yHTML es tan sencillo como utili-zar DDS para las aplicaciones depantalla verde.

IBM diseñó específicamente el kitde herramientas para los programadores de RPG que deseendesarrollar aplicaciones web. CGIDEV2 es ILE, de manera quetambién funciona con Cobol. La herramienta no sólo es fácil deutilizar, sino que en el kit también pueden encontrarse variosejemplos que le ayudarán a empezar a utilizarlo enseguida. Si

no está totalmente seguro de saber qué es CGI, consulte el re-cuadro “CGI: qué es y cómo funciona”, en la página 15.

Cómo desarrollamos en KOA nuestrasaplicaciones webEn KOA utilizamos dos herramientas para el desarrollo deaplicaciones web. Empezamos con iSeries Net.Data de IBM yseguimos usándola. Para nosotros, Net.Data es el CL del

desarrollo web en el iSeries.Net.Data es fácil de aprender yde utilizar, tiene acceso completoa los archivos de DB/400 median-te sentencias de SQL y ofrece unaforma de enviar y recibir datosdesde aplicaciones del iSeries.Las macros de Net.Data (es de-cir, los archivos de código fuente)no se compilan. En vez de ello, elservidor HTTP interpreta el ar-chivo de macro, lo que facilitacambiar su código fuente parahace pruebas. Naturalmente, el

inconveniente de las aplicaciones que no se compilan es quelos problemas del código, como por ejemplo las sentencias queno son válidas, no se descubren hasta que se ejecuta la apli-cación. Y el código interpretado generalmente no se ejecutatan deprisa como el código compilado.

por Jef Sutherland

CGIDEV2 ofrece un medio deincluir páginas HTML enprogramas escritos en RPGcomo si fueran plantillas,llevar a cabo sustituciones devariables y devolver páginasHTML.

Cree páginas web dinámicas sin tener queprogramar a mano código HTML en losprogramas escritos en RPG

Page 13: ServerNEWS - 156 (Septiembre 2005)

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 13

Page 14: ServerNEWS - 156 (Septiembre 2005)

14 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

Fíjese en los marcadores /%nombre_variable%/, como /%price%/. CGIDEV2 utiliza espacios reservados, de modo queen RPG puedo incluir valores para los nombres de variables.Los espacios reservados pueden considerarse como camposde un archivo de pantalla.

Después de diseñar la interfaz de usuario, ya puede desa-rrollarse el programa en RPG. La lógica del programa es sen-cilla:

FIGURA 1Solicitud para que el usuario escriba el número de artículoque buscar

FIGURA 2Página de resultados de la búsqueda de artículos

No obstante, para algunas de nuestras necesidades rela-cionadas con las aplicaciones web, Net.Data es engorroso. Porejemplo, si una aplicación necesita acceder a varios archivospara obtener un registro (o unos pocos) de cada archivo, lasentencia de SQL puede ser inmanejable. Sin duda, para ac-ceder a los datos no hay nada más fácil que una secuenciaCHAIN o SETLL/READ de RPG, y aquí es donde CGIDEV2entra en acción. Las excelentes funciones integradas (BIF)de manejo de series y de fechas de RPG también son difícilesde batir. En KOA, todavía utilizamos ambas herramientas.Si necesitamos una aplicación web sencilla para obtener unadeterminada entrada y responder con una lista de datos fáci-les de obtener con una sola sentencia de SQL, utilizamosNet.Data. Si necesitamos una base de datos o una interfaz deusuario más compleja, por ejemplo algo que implique unatabla (comparable a un subarchivo de DDS) que proporcionaentrada y salida, utilizamos CGIDEV2.

Ejemplo de CGIDEV2Veamos un ejemplo sencillo de cómo utilizar RPG, un poco deHTML 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, empiezoprimero por la IU. Prefiero diseñar la forma en que el usuariointeractú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 escribael número de artículo (Figura 1). La segunda muestra el re-sultado si se encuentra el artículo (Figura 2). La terceramuestra 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ñode páginas web de WDSc, Page Designer, que me encantadesde hace mucho tiempo, pero usted puede utilizar la herra-mienta de diseño web que desee. En la Figura 4 puede versela solicitud de la búsqueda de artículos y las páginas de re-sultados dentro de la herramienta de diseño WYSIWYG deWDSc. 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, comopuede verse en las Figuras 1, 2 y 3, para la interfaz de usua-rio utilizaré pocos colores e imágenes.

En la Figura 5 se muestra el archivo itemlookup.html,que contiene el código HTML de la solicitud de búsquedade artículos y de los formularios de resultados. En la Fi-gura 6 se ve el archivo errorforms.html, que contiene elcódigo HTML del formulario de error. CGIDEV2 permiteponer cualquier número de páginas web en un solo archi-vo fuente gracias a que utiliza el marcador /$ para sepa-rar cada formulario o página. Por ejemplo, como puedeverse en la Figura 5, he diseñado dos plantillas de formu-lario, initialform y resultform, en el archivo HTML. Másadelante veremos cómo incluir los formularios en un pro-grama escrito en RPG.

■ EN PORTADA

Page 15: ServerNEWS - 156 (Septiembre 2005)

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 15

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

FIGURA 4Páginas de solicitud de búsqueda de artículo y de resultadosen la herramienta de diseño WYSIWYG de WDSc

su vez, la aplicación CGI llamaría al programa MIAPLICWEBespecificado en el URL y le pasaría dos variables, parm1 yparm2.

La aplicación de la que estamos hablando puede estarescrita en cualquier lenguaje del i5 y, sin duda, RPG sería unbuen candidato. La aplicación se ejecutaría en el servidor i5 ytendría acceso a las variables parm1 y parm2. La variableparm1 se enviaría con el valor “12345”, mientras que lavariable parm2 se enviaría con el valor “codigopostal”. En laaplicación, se utilizarían las API suministradas por IBM paraacceder a las variables enviadas a la aplicación y luego seprepararía una página de resultados que se devolvería alnavegador web.

La aplicación que acabo de describir requeriría varias APIrelativamente complejas. Para que se haga una idea de esacomplejidad, devolver la salida al navegador con esas APIsería parecido a preparar una salida de pantalla verde sinDDS y que esa salida estuviera formada por una serie decaracteres larguísima. Puede hacerse, pero sería una tareaimponente. Esa es la causa de que la primera vez que oímoshablar de CGIDEV en KOA, nos sintiéramos muy interesadospor saber más cosas sobre este kit de herramientas.

—J.S.

CGI significa Interfaz común de pasarela y es unmedio estándar para un navegador de interactuarcon un servidor web que se esté ejecutando en

cualquier plataforma, como Apache en el i5 o Microsoft IIS enWindows. CGI permite ejecutar páginas web dinámicas en lasque el usuario hace una petición y se le devuelve un resulta-do. Las páginas dinámicas difieren de las páginas web estáticasen que las páginas estáticas son iguales cada vez que semuestran.

Así es como funciona CGI: en el servidor web, una o másaplicaciones CGI (es decir, programas) permiten que se lehagan peticiones. Cuando las aplicaciones CGI del lado delservidor reciben la petición, la ejecutan y muestran unapágina de resultados. Normalmente, cuando un servidorutiliza una aplicación CGI, el URL contiene referencias a “cgi”o “cgi-bin”, como en el ejemplo siguiente:

http://www.miservidorweb.com/cgi-

bin/miaplicweb?parm1?12345&parm2=codigopostal.

Si el URL anterior se utilizara en un servidor web de un i5,la parte “cgi-bin” dirigiría la solicitud a las aplicaciones cgi-binde lado del servidor. En el servidor web, cgi-bin se correlacio-naría con una biblioteca en que residen los programas CGI. A

CGI: qué es y cómo funciona

1. Mostrar el formulario de solicitud (Figura 1).2. Esperar a que el usuario escriba un número de artículo y

pulsar el botón Find It! (Buscar).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:

a. Si se encuentra el artículo, mostrar la información deéste (Figura 2).

b. Si no se encuentra, devolver un mensaje de error en elformulario. Éste tiene un botón Try Again (Intentarlo otravez), que el usuario puede pulsar para volver al paso 1 yhacer otra búsqueda (Figura 3).

Page 16: ServerNEWS - 156 (Septiembre 2005)

16 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

/$notfound<html><head><title>Item Lookup - Item not found</title></head><body>

<table><tr> <td><IMG SRC="/js/xyzlogo.jpg" ALIGN="BOTTOM" BORDER="0" NATURALSIZEFLAG="1"></td> <td><h1>Item lookup</h1></td></tr></table>Sorry, Dude. The item number you requested, <strong> /%number%/ </strong>, could not be found.Click the Try Again button.<FORM><INPUT TYPE="BUTTON" VALUE="Try Again" ONCLICK="history.go(-1)"></FORM></body></html>

En la Figura 7 se muestra el códigofuente escrito en RPG del programaITEMLOOKUP. ITEMLOOKUP estácompilado en el iSeries y se llama siem-pre que el servidor web necesite solici-tar al usuario un número de artículo,mostrar información sobre el artículo ouna pagina de error, en caso de que nose encuentre. El parámetro action delformulario (en el punto A de la Figura5) especifica el programa del servidoral que hay que llamar.

Examinemos paso a paso el códigofuente (las letras utilizadas como se-cuencia se corresponden con las seccio-nes de la Figura 7):

A. Sin duda, CGIDEV2 y RPG permitenacceder de forma sencilla a todos losarchivos de DB2/400. He especificado laubicación del archivo. Generalmente, losprogramadores que empiezan a traba-jar con CGI o aplicaciones web tieneproblemas con las listas de bibliote-cas. Si los archivos no están en la bi-blioteca CGI, habrá que utilizar lapalabra clave EXTFILE o actualizarmanualmente la lista de bibliotecasdel trabajo del servidor web para ase-gurarnos de encontrar los archivos.

B. Los prototipos y variables de CGI-DEV2 se incluyen con uno o variosmiembros de copia.

C. Estas dos variables de trabajo son lasúnicas que hay que definir para laaplicación.

D. Este código borra el buffer de CGI-DEV2 e incluye los formularios HTMLque hemos creado. Piense en la llama-da a GetHtmlifsMult como una ope-ración de apertura de varios archivosde pantalla. El subprocedimientoGetHtmlifsMult carga en memoria(con una sola llamada) varios archi-vos IFS (es decir, continuos) de HTMLdefinidos externamente.

E. Este es un paso importante. Si el ser-vidor web tiene que devolver algo alprograma en el campo del formulariode la solicitud, podemos recuperar elvalor. Si en la solicitud no se ha derecuperar nada, sabremos que es laprimera solicitud realizada por la apli-cación y que debe mostrar el formu-lario inicial que se ha presentado enla Figura 1. Después de mostrar el for-mulario en el navegador, observe que

FIGURA 5Código HTML de las páginas de solicitud de búsqueda de artículos y deresultados

FIGURA 6Código HTML de la página de error

■ EN PORTADA

A

B

/$initialform<html><head><title>Item Lookup</title></head><body topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0"><table><tr> <td><IMG SRC="/xyzlogo.jpg" ALIGN="BOTTOM" BORDER="0" NATURALSIZEFLAG="1"></td> <td><h1>Item lookup</h1></td></tr></table>

<form action="/itemlookup.pgm" method="POST" name="form1"> &nbsp;&nbsp;Item number <INPUT MAXLENGTH="24" NAME="number" SIZE="24" TYPE="text"> <INPUT TYPE="submit" VALUE="Find It!">

<INPUT type="hidden" name="request" value="lookup"></form>

</body></html>

/$resultform<html><head><title>Item Lookup - Result Page</title></head>

<body topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">

<table><tr> <td><IMG SRC="/xyzlogo.jpg" ALIGN="BOTTOM" BORDER="0" NATURALSIZEFLAG="1"></td> <td><h1>Item lookup</h1></td></tr></table>

<table border="1"> <tr><td bgcolor="#ece9d8">Item number</td><td>/%number%/</td></tr> <tr><td bgcolor="#ece9d8">Description</td><td>/%desc%/</td></tr> <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></tr></table>

Page 17: ServerNEWS - 156 (Septiembre 2005)

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 17

hay un campo oculto llamado Request(Solicitud) cuyo valor es “lookup” (bús-queda; punto B en la Figura 5). Cuan-do el usuario introduce un valor parael número del artículo y pulsa FindIt!, el campo del formulario Requestcontiene el valor “lookup”, que la apli-cación recupera en este paso, de ma-nera que ya sabe que tiene que bus-car un número en el archivo ITEMS1,el archivo maestro de artículos de labase de datos.

F. En esta parte de la lógica de SELECTes cuando averiguamos, basándonosen el valor del campo Request, lo quese necesita para hacer la búsqueda.Para ello, se llama a ZhbGetVar parapoder recuperar lo que el usuario haescrito en la entrada del número deartículo del formulario web. El resul-tado se guarda en el campo Numberde ITEMS1. Se concatena con el ar-chivo y se decide qué hacer dependien-do de si se ha encontrado algo o no.

G. Si se ha encontrado el número de ar-tículo, se utiliza el procedimientoupdHTMLVar para devolver el valorde la variable de HTML al navegador.Por ejemplo, updHTMLVar(‘desc’ :descript ); toma el valor de descripty actualiza (es decir, sustituye) cual-quier referencia a /%desc%/ en el for-mulario de salida. Al final del pro-ceso, se utiliza el procedimientoWrtSection con el nombre del formu-lario desde el fuente HTML para de-volver el formulario al navegador. ¡Fá-cil!

H. Si no se ha encontrado el númerode artículo, se utiliza el procedi-miento updHTMLVar para actuali-zar /%number%/ en el formulario delmensaje de error y luego se copia elformulario de error con el procedi-miento WrtSection.

I. Si el campo Request tiene otro valordistinto de lookup, se mostrará el for-mulario inicial de la entrada del nú-mero de artículo (Figura 1).

J. Hemos acabado. En CGIDEV2 se uti-liza WrtSection(‘*fini’) para indicarque se ha acabado todo el trabajo yque debe devolverse la salida alnavegador. Finalmente, un poco demantenimiento: se cierran todos losarchivos.

Cuando repase el código fuente veráque no tiene mucho en cuenta si la apli-cación utiliza la IU de un navegador. Yaunque este ejemplo es bastante senci-llo, en KOA hemos utilizado CGIDEV2para desarrollar aplicaciones pareci-das a una aplicación de entrada/sali-da de un subarchivo. Estoy seguro deque después de poner en funcionamien-to su primera aplicación CGIDEV2,descubrirá otros usos para esta herra-mienta tan útil (y gratuita). Asegúre-se de echar un vistazo a los ejemplosdel sitio web sobre CGIDEV2 de IBM(www-922.ibm.com/easy400p/fra-mer1.html?url=/cgidev2/start). Así escómo nosotros aprendimos a utilizarCGIDEV2. ■

Jef Sutherland es redactor técnico de iSeriesNEWS y vicepresidente de los servicios deinformación de Kampgrounds of America, Inc.,Billings, Montana.

FIGURA 7Código fuente en RPG del programa ITEMLOOKUP

A

B

C

D

E

F

G

H

I

J

*===================================================================== FITEMS1 IF E K DISK EXTFILE('MYLIB/ITEMS1')

*===================================================================== * Includes to be used in CGIs*===================================================================== /copy mysource/CGIDEV2

D imagelink S 100 D request S 10

/free clrhtmlBuffer(); IfsMultIndicators = GetHtmlifsMult('/itemlookup.html /errorforms.html');

// The variable request holds the result of ZhbGetVar, // which determines whether the program was sent a value // for the HTML form field called Request. request = ZhbGetVar('request');

select;

// Determine the action requested. when request = 'lookup';

// Get the requested item number from the HTML form. number=ZhbGetVar('number');

// Get item record. chain number itemsr;

// If found, update variables and write out a new HTML page. if %found(items1); updHTMLvar('number': number ); updHTMLvar('desc' : descript ); updHTMLvar('price' : %editc(salesprice : '3'); imagelink = '/js/' + image; updHTMLvar('image' : imagelink ); WrtSection('resultform');

// If not found, display error page. else; updHTMLvar('number': number ); WrtSection('notfound'); endif;

// No request was sent, so write the initial request page. other; //Write the initial form that asks for an item number. WrtSection('initialform'); endsl;

//Write the end of the form (required with CGIDEV) WrtSection('*fini'); *INLR = *ON;

/end-free

Page 18: ServerNEWS - 156 (Septiembre 2005)

18 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

a programación de la Interfaz común de pasa-rela (CGI) existe en el iSeries desde hace unoscuantos años. Desde por lo menos el releaseV3R2, IBM ha proporcionado APIs que permi-ten a los programadores crear páginas web to-talmente funcionales sin necesidad de utilizar

soluciones caras y que consumen muchos recursos.Hoy, más que nunca, las empresas están interesadas en

encontrar la mejor forma de ofre-cer aplicaciones web interactivas asus clientes y usuarios. Con tantasopciones disponibles y algunasmucho más comerciales que otras,solemos pasar por alto la mejor so-lución y la más sencilla.

Utilizando las APIs disponiblesen el iSeries, directamente o me-diante un programa de utilidad deterceros, los programadores quetrabajan con iSeries descubriránque la tecnología que IBM pareceestar intentando eliminar es la úni-ca que realmente tiene sentido utilizar.

La importancia del contacto con la WebSi no está familiarizado con las aplicaciones web, es bastanteprobable que acabe varado en una isla desierta. Las empre-sas están utilizando con gran éxito la web en su propio bene-ficio para llegar a clientes a los que normalmente no ten-drían acceso.

Tomemos por ejemplo la industria de los componentes deautomoción. En el pasado, si necesitaba determinada pieza,digamos, por ejemplo, un faro original de un Ford Focus de1998, visitaría un concesionario oficial de la marca y compra-ría allí la pieza.

Hoy en día hay literalmente cientos de empresas que ofrecenpiezas originales y de segunda mano para casi cualquier marcay modelo de vehículo. Algunas de esas empresas son concesio-

narios locales que han ampliado sunegocio de venta de componentes aInternet, aumentando su base declientes exponencialmente.

Localizarlos utilizando un motorde búsqueda es fácil y el resultadofinal es que recibiremos directa-mente la pieza en nuestro domici-lio. Además, nos ahorraremos unmontón de dinero comparándolocon lo que nos habría costado si lahubiéramos comprado en nuestroconcesionario local.

Gracias a Internet, ahora lasempresas pueden llegar a clientes a los que normalmente nun-ca hubieran podido acceder. Este es sólo un ejemplo entre mildel papel crucial que tiene Internet en el juego empresarialde la “supervivencia de los más aptos”.

¿Qué es la programación en CGI?La programación en CGI es lo que permite a las empresascrear aplicaciones dinámicas, funcionales e interactivas para

La programación en CGI permite ofrecerinformación actualizada a los usuariosfinales a través de la Web

La programación en CGI es loque permite a las empresascrear aplicaciones dinámicas,funcionales e interactivas paraayudarlas a crecer o parafacilitar el trabajo de susempleados.

por Bradley V. Stone

Page 19: ServerNEWS - 156 (Septiembre 2005)

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 19

Page 20: ServerNEWS - 156 (Septiembre 2005)

20 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

ayudarlas a crecer o para facilitar el trabajo de sus emplea-dos. La programación en CGI permite a empresas como eBaytener entornos cambiantes sin necesidad de tener que crearpáginas web manualmente. En vez de ello, igual que hace-mos con las pantallas verdes y los informes, escribimos pro-gramas en CGI que crean contenido web dinámicamente con-forme cambian los datos.

Antes de tomar una decisión como la de qué juego de he-rramientas utilizar para crear aplicaciones web dinámicas,deberá tener claro qué es exactamente lo que desea llevar acabo, cuáles son sus conocimientos actuales y, por último,cuántas herramientas de aplicaciones web le ofrecen el mis-mo resultado. Esto significa com-prender qué es exactamente la pro-gramación web o en CGI.

En el nivel más bajo, casi todaslas páginas web (por no decir todas)se crean utilizando HTML. Tambiénpueden utilizarse otras formas delenguajes de marcado (como XML olos lenguajes de códigos de disposi-tivos inalámbricos), pero en generalutilizaremos páginas web, lo quesignifica que estaremos creando có-digo HTML dinámico utilizando pro-gramas escritos en CGI.

HTML es lo que permite que un programador muestre de-terminado contenido en el navegador web de un usuario. Estecontenido pueden ser imágenes, formularios de entrada e in-formación detallada (como la lista de un inventario o todauna tienda) para vender prácticamente cualquier producto.Casi todo lo que vemos en una página web se ha creado utili-zando HTML.

En el nivel siguiente, los programadores pueden escribirprogramas que creen código HTML dinámicamente para quelo vea un usuario final en tiempo real. De la misma formaque utilizamos DDS para crear informes y subarchivos a par-tir de los datos del iSeries, podemos crear una salida pareci-da utilizando HTML y páginas web. Lo importante es recor-dar que gracias a ello podemos proporcionar a nuestrosusuarios finales información actualizada a través de la web.La programación en CGI es lo que nos permite hacerlo.

Es importante entender que CGI no es un lenguaje de pro-gramación concreto. No hay ningún lenguaje de programa-ción llamado “CGI”. CGI es un método de programación. Losprogramas en CGI pueden escribirse en muchos lenguajes deprogramación distintos, incluyendo RPG, Cobol, Java y C.

Cada uno de esos lenguajes dispone de herramientas queles permiten enviar contenido creado dinámicamente a unnavegador web. Así que, en cierto sentido, toda la progra-mación en CGI consiste en crear series de datos (en estecaso, código HTML) y luego en introducir esos datos en unapágina web para que los vea el usuario que los ha solicita-do. Eso es todo. Una vez entienda esto, debería quedar cla-ro porqué ningún lenguaje o juego de herramientas de pro-gramación en particular hará mejores sus aplicaciones web,

más funcionales o más “atractivas”. Lo que determina esosatributos es la destreza de la persona que cree el códigoHTML.

Estos lenguajes de programación en CGI también dispo-nen de herramientas que les permiten leer la información deuna página web. Si alguna vez ha estado en una página webdonde se le solicitaba introducir determinada información,seleccionar artículos para añadirlos a un carrito de la com-pra o hacer algo que sea “interactivo”, quiere decir que havisto CGI en acción. Para que un programa pueda respondera su interacción o leer la información de un formulario enlínea, ese programa debe ser capaz de leer los datos para po-

der reaccionar en consecuencia.De modo que, en resumidas cuen-

tas, las aplicaciones web no hacenmás que lo que hemos hecho todosantes utilizando pantallas verdes oinformes. La única cosa que hacambiado es que ahora debemosinteractuar con un navegador weben lugar de con una pantalla ver-de. Seguimos leyendo informaciónde la interfaz y devolviendo infor-mación a esa interfaz.

Aplicaciones web y comunicaciónLa siguiente pieza del rompecabezas que hemos de tener encuenta es la interacción entre el navegador web del usuario yel iSeries.

Esta interacción se realiza utilizando un servidor web, tam-bién conocido como servidor HTTP. Un servidor web no esnada más que un trabajo o un grupo de trabajos que se ejecu-tan en segundo plano en el iSeries esperando peticiones yluego respondiéndolas. Las peticiones hechas al servidor webse hacen cuando un usuario escribe (o pulsa en) un enlaceque contiene un URL que apunta al iSeries.

Esta conexión se hace porque en todo URL hay un nombrede dominio (o dirección IP). Por ejemplo, “miempresa.com” esun nombre de dominio. Este nombre de dominio apunta auna dirección IP. La dirección IP se asigna al iSeries (o a uncortafuegos o a un router instalados antes que el iSeries). Asíes como se hace la conexión entre el navegador y el iSeries.

Una vez que el servidor web recibe una petición, la inter-preta y devuelve información al usuario. Esta informaciónpuede ser en forma de una página web estática o el resultadode ejecutar un programa CGI, que crea la información de lapágina web en tiempo real. En el iSeries tenemos dos opcio-nes para un servidor web. La primera posibilidad, que ya noes una opción viable en las máquinas con el release V5R3 oposterior instalado, es lo que se conoce como el servidor HTTP“clásico”. La segunda posibilidad y la más viable es el servi-dor HTTP Powered by Apache. Este servidor se basa en elfamoso servidor web Apache que utilizan la mayoría de lasmáquinas en Internet en la actualidad.

Con el servidor web se pueden establecer configuracionespara que el servidor web sepa qué hacer con determinadas

Los programas en CGIpueden escribirse en muchoslenguajes de programacióndistintos, incluyendo RPG,Cobol, Java y C.

■ EN PORTADA

Page 21: ServerNEWS - 156 (Septiembre 2005)

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 21

Una vez conocido el métodode petición, ejecutar la APIadecuada para leer los datosno es ningún problema.

peticiones, qué programas CGI se están ejecutando y en quédirectorios (por ejemplo, HTML, imágenes, JavaScript u ho-jas de estilos) el usuario puede acceder a archivos.

Entrada y salidaLos programas en CGI funcionan con un entorno que es bas-tante nuevo para casi todos los programadores que trabajancon iSeries. Pero si aprende cómo funcionan esos programasen CGI, será capaz de crear mejores aplicaciones.

Cuando los programas en CGI crean y copian contenidodinámico, lo hacen en lo que se conoce como salida estándar.Técnicamente, la salida estándar es la ubicación a la que seenvían los datos si no se especificaotra salida (por ejemplo, una im-presora). En la terminología de laprogramación en CGI, escribir da-tos en una salida estándar signifi-ca que los datos se guardan en unaubicación a la que el navegadorweb del usuario visitante puedeacceder y que luego puede utilizarpara visualizar una página web.

Cuando un usuario solicita unarchivo HTML estático (creadopreviamente) al servidor web, nohay una interacción directa de ningún programa. Esto quie-re decir que el usuario solicita el archivo HTML, el servi-dor web copia el contenido de ese archivo estático en lasalida estándar y los datos aparecen en el navegador webdel usuario.

Cuando un usuario hace una petición a un programa CGI,el servidor web ejecuta ese determinado programa CGI. Éstecrea el código HTML dinámicamente en tiempo real y grabaesos datos en la salida estándar donde, a continuación, elnavegador web del usuario visualizará los datos como unapágina web.

La entrada que se lee de una página web, por otro lado, seobtiene de dos formas distintas. La entrada normalmente sondatos que se leen de lo que se conoce como un formulario depágina web. Seguramente todos hemos utilizado uno antes.Si alguna vez ha rellenado información en una página web,ya sabe lo que es.

La primera forma de leer la entrada es mediante lo que seconoce como entrada estándar. Cuando se leen los datos de laentrada estándar se hace desde el cuerpo de la solicitud. Noes importante entender completamente esto. Lo que sí esimportante es entender la diferencia entre entrada estándary el otro método de entrada.

La segunda forma en que se leen los datos es desde lo quellamamos variables de entorno. En el caso concreto de los datosde un formulario, se utiliza una variable de entorno conocidacomo QUERY_STRING. Esto significa que los datos se pasancon el URL de la petición. Si alguna vez se ha fijado en labarra de situación del navegador web, habrá visto una seriede datos que se incluyen en el URL después del nombre dedominio (generalmente precedidos por un signo de interro-

gación). Los datos que se ven allí son la variable de entornoQUERY_STRING.

No es totalmente necesario entender estas dos formas deentrada, pero sí que es importante entender qué método seestá utilizando para poder determinar qué API usar para leerlos datos que se envían con una página web.

GET o POSTEn la sección anterior hemos explicado dos métodos de leerdatos de una página web, casi siempre mediante el uso de unformulario de página web. La forma en que un formularioenvía estos datos al programa CGI, a través de la entrada

estándar o de la variable de en-torno QUERY_STRING, la deter-mina el método que se especifiqueal crear un formulario de páginaweb o incluso un hiperenlace.

Cuando se crea un formulario depágina web, normalmente se espe-cifica un identificador de métodopara ese formulario. Con eseidentificador de método se especi-fica un método GET o POST.

El método GET indica al formu-lario que pase los datos desde el

formulario hasta el programa que los procesará utilizando lavariable de entorno QUERY_STRING. Los datos tambiénpueden pasársele a un programa CGI mediante la variablede entorno QUERY_STRING simplemente incluyendo datosa continuación de un hiperenlace en una página web.

El método POST especifica que los datos del formulariodeben pasarse al programa que los procesará mediante laentrada estándar.

Esta es la razón por la que es importante que el programaque procesa los datos sepa qué método -GET o POST- se estáutilizando. El programa debe saber qué API utilizar para leerlos datos y cada método requiere utilizar una API distinta.

Para determinar qué método se está utilizando, un progra-ma puede recuperar el valor de la variable de entornoREQUEST_METHOD. El valor obtenido será GET o POST.Una vez conocido el método de petición, ejecutar la API ade-cuada para leer los datos no es ningún problema.

Como el método GET pasa los datos como parte del URL,no es recomendable utilizar este método si los datos puedenser confidenciales o si su tamaño es de unos pocos kilobytes.En estas situaciones, deberá utilizar el método POST. Comoutilizando el método POST los datos que se pasan formanparte de las cabeceras de la petición HTTP, éstos no sonvisibles inmediatamente por el navegador web del usuario.Pero seguirán estando a disposición del programa que losprocesará.

Las API disponibles de CGIEl iSeries incluye de serie un conjunto de API gratuitasque pueden utilizarse para crear páginas web e interactuarcon ellas. Si está familiarizado con el uso de las API, no

Page 22: ServerNEWS - 156 (Septiembre 2005)

22 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

tendrá problemas con ellas. Si no lo está, piense en ellascomo si fueran programas suministrados por IBM a losque basta con “llamar” desde el programa para que ejecu-ten una función.

Estas API se incluyen en un programa de servicio llamadoQZHBCGI, que se encuentra en la biblioteca QHTTPSVR. Siutiliza el mandato DSPSRVPGM (Visualizar programa deservicio) en el programa de servicio QZHBCGI, verá la ex-tensa lista de subprocedimientos de que se dispone. La docu-mentación en línea de IBM puede ayudarle a entender máscosas acerca de las API, puesto que aquí sólo le daremos unabreve explicación.

La primera API (y la más utilizada) es QtmhWrStout (Gra-bar a salida estándar). Se llama a esta API cuando se deseagrabar datos a una página web. Basta con crear una serie decaracteres HTML y pasársela a esta API y los datos se gra-barán en la salida estándar y se mostrarán en un navegadorweb. Esta API puede llamarse muchas veces sucesivamente,por lo que no hay que preocuparse por tener que crear unapágina web completa de una sola vez. Por el contrario, puedecrearla por secciones, llamando a la API QtmhWrStout tan-tas veces como sea necesario.

Otra API muy utilizada es QtmhGetEnv (Obtener variablede entorno). Esta API recupera el valor de una variable deentorno. Esta API puede utilizarse para recuperar el valorde los campos de un formulario web enviado utilizando elmétodo GET. Los datos estarán disponibles en la variable deentorno QUERY_STRING, en pares campo/datos, donde cadapar campo/datos está separado por el símbolo &.

Para leer datos de un formulario que utiliza el método POSTdebería utilizar la API QtmhRdStin (Leer entrada estándar).De nuevo, los datos se devolverán utilizando los pares cam-po/datos con el delimitador & separando cada par.

Después de leer datos de la página web, puede utilizarse laAPI QtmhCvtDB (Convertir a base de datos) para convertirlos pares campo/datos leídos de una de las API descritas an-tes en un formato que puedan utilizar las aplicaciones. Evi-dentemente, puede analizar los datos usted mismo, pero uti-lizando la API QtmhCvtDB podrá convertir los datos enestructuras de datos fáciles de usar que no sólo dan accesodirecto a todos los campos y a su contenido, sino que tambiénllevan a cabo las conversiones de tipos de datos necesarias.Estas conversiones de tipos de datos son necesarias porquetodos los datos leídos en una página web están en formato detipo 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 quese desean recibir los datos. Esta API hace que la programa-ción en CGI en el iSeries sea mucho más sencilla.

Primeros pasosLa mejor forma de empezar a escribir aplicaciones web paraRPG es haciéndose con uno de los muchos recursos dispo-nibles. Personalmente, he escrito varios libros y manualessobre el tema, agrupándolos bajo una denominación genérica

(“e-RPG”). La documentación en línea de IBM también pue-de serle de ayuda para dar sus primeros pasos.

Pero, antes de sumergirse profundamente en las API queson necesarias, deberá entender (sea cual sea la plataforma,solución o kit de herramientas de aplicaciones web que elija)los conceptos básicos de HTML, JavaScript, Hojas de estilo einclusiones del lado del servidor (SSI). La mayoría de progra-madores pasan por alto estas cuestiones, pero yo no lo reco-miendo. Casi todos nosotros ya sabemos cómo funciona RPG,pero no entendemos las herramientas que utilizaremos conRPG para crear aplicaciones web. Saltarnos estos temas escomo intentar conducir un coche sin saber cómo se utiliza elvolante.

Una vez conozca los conceptos básicos, tal vez desee echar-le un vistazo al kit de herramientas CGIDEV2 de IBM (www-922.ibm.com) comentado en el artículo precedente, aunqueexisten otros en el mercado. Estos kits de herramientas per-miten externalizar el código HTML y hacen que actualizarlas aplicaciones sea coser y cantar.

Espero que este artículo haya despertado su interés poruna posible solución para que el equipo empiece a escribiraplicaciones web en el iSeries. Como hablo con cientos depersonas cada semana sobre esta cuestión, sé que está empe-zando a hacerse popular.

La razón principal por la que sé que la programación weben RPG se está haciendo popular es porque hay algunos quese ponen en contacto conmigo y me dice que “nuestro socionos ha dicho que las aplicaciones escritas en RPG se ejecuta-rán más lentamente y/o utilizarán más recursos que las apli-caciones WebSphere”. Naturalmente, se trata de un mentiradescarada (o de un malentendido, concedámosles el beneficiode la duda). Cualquiera que tenga el mínimo conocimientodel uso de los recursos que hace RPG y de lo que se tardaúnicamente en ejecutar WebSphere (sin incluir las aplicacio-nes escritas en Java que también son necesarias) debería sercapaz de imaginarse que se trata de un simple sensacionalis-mo comercial.

Como digo siempre, si una máquina ejecuta las aplicacio-nes escritas en Java deprisa, imagínese lo deprisa que se eje-cutaría la aplicación desarrollada en RPG. ■

Bradley V. Stone es autor de varios manuales de formación sobre CGI y de laexitosa serie de libros “e-RPG”, que puede verse en bvstools.com/erpg. Tambiénes el creador del kit de desarrollo de software eRPG (eRPG SDK), que puedeobtenerse en erpgsdk.com. Bradley es propietario de BVSTools.com, dondeofrece software alternativo de bajo coste así como cursos de formación yservicios de consultoría para el iSeries desde hace más de diez años.

■ EN PORTADA

Page 23: ServerNEWS - 156 (Septiembre 2005)

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 23

Page 24: ServerNEWS - 156 (Septiembre 2005)

Man

age

me

nt

▲▲▲

24 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

Tanto si se trata de interfacesde usuario basadas en texto ográficas, si una presentación noes intuitiva, la aplicación serámala y los resultados también.

Sobre las interfaces de usuario

¿A cuántas interfaces de usuario (IU) se enfrenta cadadía? Despertadores, relojes, cafeteras, hornosmicroondas, teléfonos, contestadores, teclados para in-troducir códigos de seguridad, coches... son sólo unoscuantos aparatos que presentan interfaces que utili-

zamos casi a diario. Y en la mayoría de los casos, antes si-quiera de sentarnos en nuestra mesa, encender el ordenadory mirar a la pantalla.

La forma en que los aparatos eléctricos suelen presentar lainformación a los humanos a menudo decide el destino y lautilidad del dispositivo. Por supesto, lo mismo ocurre con lasaplicaciones.

Como desarrolladores, podemostener la mejor lógica y las mejo-res rutinas de proceso bajo lainterfaz de usuario, pero si éstano obtiene la información correc-ta de los usuarios o no se la pre-senta de forma inteligible, habre-mos despilfarrado la inversiónrealizada en la aplicación. Lainterfaz de usuario es vital y nodebe tomarse a la ligera.

Las dos partes de una IUSi descomponemos una IU, veremos que se compone de dospartes. La primera es el dispositivo o aplicación utilizado parapresentar la información. Suelo pensar en ellos como los mé-todos. Tanto si se trata del teléfono móvil como de NetscapeNavigator, la información se obtiene y se recopila a través deesos métodos. La segunda parte es la forma en que se le pre-senta la información al usuario. Coja dos teléfonos móvilesdistintos y verá dos presentaciones diferentes de la informa-ción. Utilice Navigator para ir a Google y Yahoo! Y verá dospresentaciones distintas de la información utilizando el mis-mo método.

Muchos desarrolladores del iSeries pueden sentir que es-tán atrapados en una interfaz de usuario basada en texto.¡Pero no es cierto! Su experiencia con una de las plataformasmás flexibles y fiables para almacenar y recuperar informa-ción es una gran ventaja.

En los artículos de este número descubrirá que comodesarrollador del iSeries tiene ventajas cuando hablamos demétodos de interfaces de usuario y opciones de presentación.Pero recuerde que tanto si se trata de interfaces de usuario

basadas en texto o gráficas, si una presentación no es intuitiva,la aplicación será mala y los resultados también.

La progresión de las IUPara los desarrolladores que trabajan con el iSeries que tie-nen más experiencia (yo no he dicho “viejos”), las decisionesde diseño sobre la interfaz de usuario solían ser más fácilesporque había un solo dispositivo con el que interactuar. Elmétodo de la IU era una terminal, que tenía un número de-terminado de filas y columnas. Más aún, los amigos de IBMles habían suministrado un maravilloso juego de estándaresllamado SAA (Arquitectura para aplicaciones de sistemas)

que especificaba desde cuál debíaser la apariencia que debía tenerla IU basada en texto hasta el nú-mero de puntos iniciales que de-bía haber después de la descrip-ción pero antes de la entrada.

Cuando los PC hicieron su apa-rición, los desarrolladores deliSeries básicamente siguierontrabajando con las mismas filasy columnas, pero ahora maneja-das mediante la emulación de

terminales. Apenas había que hacer cambios, aunque hubie-ra que subir o bajar información de esa nueva y extraña he-rramienta llamada Lotus 1-2-3.

A medida que el PC tomaba posesión de los escritorios conMicrosoft Windows y se ponía a disposición de losdesarrolladores interesantes herramientas de desarrollo paraPC (como Visual Basic de Microsoft), a éstos se les ofreció unnuevo conjunto de herramientas gráficas para la interfaz deusuario, como ventanas múltiples, botones, recuadros de se-lección, menús desplegables, recuadros de listas, botones deselección y hasta fotos. El método de la interfaz fue más alláde la emulación de terminales; convirtió todo el escritorio delPC en una opción. Se desarrollaron aplicaciones cliente-ser-vidor que permitían una nueva forma de presentación parala misma información que antes se había mostrado en unaIU basada en texto.

El siguiente método de IU, y puede que el más reciente, esel navegador. Hoy en día, el navegador no es meramente elmétodo para acceder a Internet... es el método de IU másutilizado. Los navegadores han proliferado y ahora se pue-den encontrar fuera del escritorio del PC, en los teléfonos

La flexibilidad y fiabilidad del iSeries son ventajosas a la hora de desarrollar interfacesde usuario y trabajar con ellas

por Jef Sutherland

Page 25: ServerNEWS - 156 (Septiembre 2005)

Man

age

me

nt

▲▲▲

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 25

móviles y hasta en las neveras. Los navegadores generalmenteusan lenguajes de códigos, como HTML, para crear la partede la presentación, o son una fuente en la que copiar un appletdesde un servidor para ofrecer la interfaz.

Una pregunta que se hacen muchos desarrolladores deiSeries es si sus IU basadas en texto son arcaicas e inútilescomparadas con los navegadores y sus GUI. La respuesta esque sí. Bueno, espere... Una vez más, la respuesta podría serque no.

Si sus aplicaciones pueden salir ganando si usa una GUIque utiliza fuentes diferentes, fotografías, ventanas múlti-ples o efectos multimedia para hacer la IU más eficaz de modoque represente un ahorro en los costes finales para la empre-sa, entonces la respuesta es sí, la interfaz basada en texto esarcaica. Sin duda, un sitio web es mucho más atractivo paralos clientes cuando pueden ver una foto –no sólo una descrip-ción– del producto.

Pero si las necesidades de sus aplicaciones son la entradade datos, entonces una IU basada en texto tiene sus ventajas,mientras se presente correctamente. Nunca cambie una apli-cación de una IU basada en texto a una IU gráfica sólo por-que le apetezca tener una interfaz “bonita” si no pretendevendérsela a nadie. Al final, puede que tenga una aparienciaagradable a la vista, pero si no funciona mejor habrá derro-chado el dinero de su empresa. La entrada de registros hora-rios, la de pedidos y las aplicaciones contables raramente se

beneficiarán de una interfaz “bonita”. Los hoteles, las empre-sas de alquiler de coches, las tiendas de comestibles, los su-permercados y los servicios de atención telefónica son ejem-plos de organizaciones en las que sigo viendo montones de IUbasadas en texto, incluso aunque la aplicación esté basadaen PC.

Ahora, volviendo a la idea de que los desarrolladores quetrabajan con iSeries tienen ventajas, si ha estado desarro-llando IU basadas en texto, conocerá perfectamente un mé-todo. En este número le mostraremos algunos métodos (pue-de que sean nuevos para usted) de desarrollar o visualizaruna IU gráfica. Como se explica en el artículo “Programaciónen CGI y el iSeries” (página 18), si decide utiliza CGI, podráseguir trabajando con RPG como lenguaje de desarrollo paralas IU. Y en caso de que desarrolle aplicaciones en Java, elartículo “Aplicaciones Java basadas en web: consideracionestecnológicas”, que encontrará en la página 34, muestra cómoutilizar JSP y servlets.

Explore estos métodos para el desarrollo de interfaces deusuario. Y la próxima vez que se le pida una “aplicación web”al grupo de desarrollo, no se le dejará fuera. ■

Jef Sutherland es redactor técnico de iSeries NEWS y vicepresidente de losservicios de información de Kampgrounds of America, Inc., Billings (Montana).

Suscríbase a

y recibirágratuitamenteel suplementotécnico

Page 26: ServerNEWS - 156 (Septiembre 2005)

Man

age

me

nt

▲▲▲

26 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

Desarrollo en J2EE

Mejorescalabilidad

Mejorportabilidad

Mejorarquitectura

Mejorinterfaz

Mejoresherramientas

U na vez más, bienvenidos a nuestra serie de ar-tículos sobre el trayecto que lleva de RPG aJ2EE para desarrolladores de iSeries (véaseibm.com/iseries/roadmap). En el artículo an-terior (Mejor portabilidad: las herramientas de

desarrollo de Java, de mayo de 2005) describimos el desarrollode aplicaciones portables utilizando las herramientas de desa-rrollo para Java proporcionadas por WebSphere DevelopmentStudio Client (WDSc). En artículos anteriores nos hemos cen-trado en las herramientas de WDScpara desarrollar aplicaciones deinterfaz de usuario para la web.

En este artículo seguiremos connuestra explicación del cuarto paso deeste itinerario, el que trata sobre unamejor portabilidad. Además de Java,otra tecnología llamada EnterpriseGeneration Language (EGL) puedeayudarnos a desarrollar aplicacionesportables. Empezaremos viendo quées EGL. Después, pensaremos cómopermite que las aplicaciones seanportables y valoraremos cuáles son susventajas. También examinaremos algu-nas de las herramientas específicaspara trabajar con EGL que existen enWDSc y cómo pueden utilizarse paradesarrollar aplicaciones en Java.

¿Qué es EGL?EGL es una tecnología de desarrollo y un lenguaje de progra-mación que permite escribir rápidamente aplicaciones em-presariales totalmente funcionales. Ha evolucionado a partirde un lenguaje procedural que se utilizaba en VisualAgeGenerator, un antiguo producto de IBM. La versión actual deEGL permite utilizar un sencillo lenguaje procedural paracrear programas en Cobol no interactivos que pueden ejecu-tarse en el iSeries y programas en Java que pueden ejecutar-se en cualquier plataforma, incluyendo el iSeries, Windows,Linux, Unix y z/OS (con los servicios del sistema Unix). Pue-den instalarse aplicaciones escritas en Java fuera de J2EE oen el contexto de uno de los siguientes contenedores de J2EE:

•cliente de aplicaciones de J2EE•aplicación web de J2EE•contenedores de EJB (en este caso, también se crea un beande sesión de EJB)

Mejor portabilidad: introducción al“Enterprise Generation Language”

Después de crear un programa de EGL se genera el códigofuente en Java o en Cobol a partir de él. Como lenguaje, EGLes un cruce entre Cobol y Java. Aunque es procedural, tieneelementos de constructores del lenguaje Java. Es un lengua-je sencillo pero potente que oculta muchos detalles de laimplementación para permitir que el desarrollador se con-centre en resolver el problema y que llegue rápidamente auna solución que funcione. También puede utilizarse para eldesarrollo rápido de aplicaciones (por ejemplo, para crear un

prototipo de una aplicación de gran ta-maño). El propio lenguaje no es nadarestrictivo y puede usarse para desa-rrollar aplicaciones completas.

¿Cuán portable es EGL?EGL permite escribir aplicacionesportables porque oculta los siguientesdetalles de la implementación:

Plataforma. EGL es un lenguaje dealto nivel y proporciona API indepen-dientes de la plataforma de manera queel programador no tiene que preocupar-se de las dependencias específicas decada plataforma o de las diferenciasentre ellas. El código en Java generadose puede ejecutar en una plataformaiSeries, Windows, Linux o Unix, y elcódigo en Cobol únicamente en eliSeries.

Nivel de especificación. Los desarrolladores no tienen quepreocuparse del nivel del código generado. Por ejemplo, si seestá generando código de un EJB, se basará en el último ni-vel de EJB soportado, sea el que sea, de modo que no es nece-sario preocuparse por las especificaciones de EJB para losniveles 1.1, 2.0, etcétera, por ejemplo. Si desea utilizar otronivel de especificación, simplemente especifíquelo y vuelva agenerar el código.

Almacenamientos de datos. Puede concentrarse en el pro-blema de la empresa que está intentando resolver en vez dehacerlo en las complejidades técnicas de los almacenamientosde datos como, por ejemplo, el acceso a la base de datos, SQL,CICS o MQSeries. Se pueden utilizar instrucciones de E/Sparecidas para acceder a distintos tipos de almacenamientosde datos externos, sean éstos archivos, bases de datosrelacionales o colas de mensajes. Esto permite manejar losfuturos cambios en el almacenamiento de datos sin tener queremodelar apenas el código.

por George Farr, Phil Coulthard y Kushal Munir

Page 27: ServerNEWS - 156 (Septiembre 2005)

Man

age

me

nt

▲▲▲

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 27

Page 28: ServerNEWS - 156 (Septiembre 2005)

Man

age

me

nt

▲▲▲

28 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

Ventajas de utilizar EGLEn el artículo anterior sobre las herramientas de desarrollode Java explicamos las características de Java que hacen deél un lenguaje portable. Ahora puede que se pregunte cuálesson las ventajas de utilizar EGL y si puede utilizar Java paraproporcionar portabilidad a sus programas. La diferenciaprincipal es que EGL es un lenguaje de más alto nivel queJava. Una sola sentencia de EGL a menudo puede utilizarsepara implementar funciones que requerirían muchas líneasde código en Java. EGL permite que el programador se con-centre en resolver el problema de la empresa simplificando uocultando muchos detalles de menor nivel relacionados conel 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 deJ2EE 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úmerode modificaciones en el código escrito en Java para poder be-neficiarse del cambio. Con EGL, es posible que tenga que hacerpequeños cambios o puede que no tenga que hacer nada enabsoluto; 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 datosexterno, digamos que de una base de datos a una cola demensajes, 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 dealmacenamientos 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 queaprender programación orientada a objetos. Para los progra-madores que sólo tienen experiencia en RPG o Cobol, o paralos 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.

Herramientas para trabajar con EGLWDSc ofrece un completo juego de herramientas para el de-sarrollo en EGL. Esas herramientas pueden utilizarse paraeditar, ejecutar, depurar, generar y crear aplicaciones en EGL(es decir, todo el ciclo del desarrollo de una aplicación). EGLpuede utilizarse para desarrollar aplicaciones autónomas enJava o aplicaciones web.

Para empezarComo primer paso para empezar a desarrollar una aplica-ción en EGL, sería una buena idea establecer algunas prefe-rencias. Estas son opciones globales que se aplicarán a todos

los proyectos de EGL. Para acceder al recuadro de diálogo depreferencias, seleccione Preferencias (Preferences) del menúVentana (Window). En la Figura 1 pueden verse las prefe-rencias disponibles para EGL. Aquí, pueden establecerse op-ciones relacionadas con las conexiones de la base de datos(por ejemplo, el controlador JDBC y el ID y la contraseña delusuario de la base de datos). También debería establecer lasclases necesarias para el depurador (por ejemplo, el controla-dor JDBC de la base de datos).

FIGURA 1Preferencias de EGL

■ INTRODUCCIÓN AL “ENTERPRISE GENERATION LANGUAGE”

FIGURA 2Asistente Nuevo proyecto web de EGL

Page 29: ServerNEWS - 156 (Septiembre 2005)

Management

▲▲▲

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 29

Crear un proyecto de EGLEl paso siguiente es crear un proyecto de EGL, que conten-drá el código fuente de EGL de la aplicación. Para crear unproyecto nuevo en WDSc, seleccione Archivo|Nuevo|Proyecto.Esto muestra en pantalla el recuadro de diálogo Proyectonuevo. Seleccione EGL a la izquierda del recuadro de diálo-go. Pueden crearse dos tipos de proyectos de EGL: Proyectode EGL o Proyecto web de EGL. Si va a desarrollar una apli-cación autónoma en Java deberá utilizar el tipo Proyecto deEGL. Utilice Proyecto web de EGL para las aplicaciones webque contengan componentes JSP, Java Server Faces (JSF) yservlets.

Cuando haya seleccionado el tipo de proyecto EGL, pulseSiguiente. Esto le llevará a la primera página de un asisten-te donde puede especificarse el nombre del proyecto de EGLy la plataforma de ejecución de destino, que debe ser Java(Figura 2). Si va a crear un proyecto web, puede seleccionarConfigurar opciones avanzadas en la primera página del asis-tente para establecer en las páginas siguientes varias opcio-nes relacionadas con la aplicación web. Entre las opcionesposibles se incluye el nivel de J2EE y la activación de funcio-nes, como por ejemplo la compatibilidad con Struts, la biblio-teca de códigos de JSP y la biblioteca de códigos de compo-nentes web de iSeries. También puede especificarse unaplantilla de estilo por omisión para el sitio web. Escriba unnombre para el proyecto y pulse Finalizar para crearlo.

Cuando cree un proyecto de EGL nuevo, WDSc le preguntarási desea cambiar a la perspectiva EGL. Esta perspectiva tienealgunas vistas muy útiles que le facilitarán la tarea de desarro-llar una aplicación en EGL. Las vistas son las siguientes:

Project Navigator permite trabajar con proyectos EGL yweb de EGL, y con elementos como servlets y páginas JSP,así como archivos EAR (Enterprise Archive). Esta vista estáespecializada en Java, EGL y proyectos web y oculta archi-vos innecesarios (como los archivos *.class) al compilar losarchivos de Java generados.

Navigator es una vista genérica que permite trabajar concualquier proyecto en WDSc.

Tareas muestra los errores de compilación y cualquier ta-rea que especifique el usuario. En el caso de los errores decompilación, puede pulsarse dos veces en la vista Tareas paraabrir automáticamente en un editor el fuente donde se haproducido el error.

Esquema muestra el esquema del archivo abierto en el edi-tor. Esto permite saltar rápidamente a secciones concretasdel fuente en el editor.

Si, por otra parte, crea un proyecto web de EGL, WDSc lepreguntará si desea cambiar a la perspectiva Web de EGL.Esta perspectiva es parecida a la perspectiva EGL pero tieneunas cuantas vistas más pensadas para ayudar a desarrollarun sitio web. Estas vistas adicionales son las siguientes:

Paleta contiene plantillas de páginas, códigos de JSP y com-ponentes de JSF, así como los componentes de EGL que hayadesarrollado, que puede simplemente arrastrar y soltar paracrear un control JSF en una página JSP.

Datos de página lista todos los datos disponibles de una

página JSP abierta en el editor, incluyendo, por ejemplo, losregistros SQL de EGL.

Galería contiene una lista de imágenes, elementosmultimedia (audio y animación), hojas de estilos y plantillasde páginas. Cuando se pulsa en un elemento, en la vista Imá-genes reducidas aparece la imagen en miniatura.

Imágenes reducidas contiene imágenes en miniatura quepueden arrastrarse hasta cualquier página HTML o JSPabierta en el editor Page Designer.

Servidores muestra una lista de configuraciones de servi-dor. Puede crear una configuración de servidor para compro-bar las aplicaciones web en un entorno de prueba del servi-dor de aplicaciones de WebSphere.

Si se crea un proyecto de EGL sencillo, observará que haydos carpetas bajo el proyecto en la vista Project Navigator.Cree archivos fuente de EGL en la carpeta EGLSource y creearchivos fuente de Java (incluyendo los archivos fuente ge-nerados) en la carpeta JavaSource. Para un proyecto web deEGL, el fuente de Java se encuentra en la carpeta JavaResources. En la Figura 3 puede verse un entorno de unproyecto web de EGL típico, donde se está editando un archi-vo de EGL; en la vista Esquema (Outline) se muestra el con-tenido del archivo.

Crear y editar partes de EGLUn proyecto de EGL puede contener uno o varios archivos deEGL. Un archivo de EGL contiene un conjunto de partes queson unidades de declaración de la declaración global del pro-grama. Las partes pueden declararse en el orden que se quieray a todas se les puede asignar un nombre. Las partes puedencategorizarse como partes de datos, lógicas o de construcción:

Partes de datos: definen las estructuras de datos disponi-bles para el programa. Una parte de datos puede incluir unaestructura, que es una presentación jerárquica de elementosde una estructura, cada uno de los cuales se corresponde conun área de memoria.

Partes lógicas: son las sentencias que se escriben en el len-guaje procedural EGL que se ejecutan durante la ejecución.Las parte lógicas pueden ser:• una parte de programa que define la unidad lógica central

durante la ejecución. Es parecida a una clase de Java.• una parte de función que es una unidad de código que, o

bien es la primera en el programa, o bien se ha llamadodesde otra función. La función que contiene el primer códi-go del programa se llama main (principal). Una función esparecida a un método de Java.

• una parte pageHandler que controla la interacción del usua-rio con una página web. Un manejador de páginas propor-ciona datos y servicios a una JSP, que es la encargada demostrar la página. El propio manejador de páginas incluyevariables y manejadores de eventos, que se llaman en res-puesta a una determinada acción del usuario (por ejemplo,al pulsar un botón). La estructura básica de pageHandlerse genera automáticamente cuando se usan los asistentesde JSF y EGL, pero tendrá que añadir su propio códigoescrito en EGL para implementar la lógica.

Page 30: ServerNEWS - 156 (Septiembre 2005)

Man

age

me

nt

▲▲▲

30 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

• una parte de biblioteca, que es un conjunto de funciones yvariables generadas y compiladas independientemente delos programas o los manejadores de páginas. El programapuede 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áticamentecuando se crea un proyecto de EGL. Cada aplicación debetener 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 derechodel 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 laextensión .egl. Para crear una parte de programa de EGL,pulse con el botón derecho del ratón sobre la carpetaSourceEGL y seleccione Nuevo|Programa. Los descriptoresde construcción se definen en un archivo con la extensión.eglbld. Entre las herramientas para trabajar con EGL deWDSc se encuentra un editor de partes de EGL que puedeutilizarse para cambiar las opciones de construcción (es de-cir, de generación del código). Pulse dos veces en un archivocon 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 delcódigo fuente para facilitar su lectura. Las palabras clave,los tipos de datos, las series de caracteres y los comentariosse resaltan con colores distintos.

Asistente de contenido: Al pulsar Ctrl+espacio en el editoraparece una lista de opciones que pueden añadirse al archi-vo. Por ejemplo, en la Figura 4 se muestra cómo añadir unregistro de SQL a un archivo fuente de EGL utilizando elasistente de contenido. Fíjese que para cada opción propues-ta se ofrece una descripción de esa opción.

Plantillas de EGL: cuando se utiliza el asistente de conte-nido para añadir un bloque de código al archivo fuente, eleditor utilizar una plantilla previamente definida para laopción elegida. Puede consultar o modificar las plantillas devarios constructores en Preferencias; basta con seleccionarEGL|Editor|Plantillas. En la Figura 5 se muestra la plan-tilla de un registro.

También debería utilizar algunas de las otras característi-cas de EGL que ofrecen las herramientas de WDSc para ayu-darle en el proceso de desarrollo. La vista Esquema ofrece unesquema jerárquico del código escrito en EGL que puede uti-lizarse para identificar rápidamente secciones concretas delcódigo y saltar a ellas en el editor.

Cuando se guarda el código, el compilador de EGL lo com-pila automáticamente y muestra los mensajes de error en lavista Tareas. En esa vista, pulse dos veces sobre un error paraabrir el código en la posición en que se ha producido el error.

Por último, si tiene muchos proyectos de EGL o muchas

partes de EGL en un proyecto, puede que le lleve mucho tiem-po encontrar la parte en Project Navigator para abrirla en eleditor. Si está en la perspectiva EGL o Web de EGL, seleccio-ne Navegar|Abrir parte (o escriba Ctrl+Mayús+N) para abrirun diálogo en el que se puede elegir una parte escribiendo lasprimeras letras de su nombre.

Ejecutar y depurar aplicaciones de EGLPara ejecutar o depurar una aplicación, WDSc requiere queel usuario cree una configuración de inicio. Con EGL, puedeutilizarse el depurador interpretativo de EGL para depurarel código fuente de EGL sin tener que generar primero códi-go en Java o en Cobol.

Si ha desarrollado una aplicación de EGL autónoma, pulsecon el botón derecho del ratón en un archivo de programa deEGL y seleccione Depurar programa de EGL para iniciar eldepurador. Esto creará una configuración de inicio en segun-do plano y cambiará a la perspectiva Depurar. Esta perspec-tiva ofrece varias vistas que muestran los puntos de inte-

FIGURA 3Típico entorno de un proyecto web de EGL

FIGURA 4Añadir un registro de SQL utilizando el asistente decontenido

■ INTRODUCCIÓN AL “ENTERPRISE GENERATION LANGUAGE”

Page 31: ServerNEWS - 156 (Septiembre 2005)

Man

age

me

nt

▲▲▲

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 31

Page 32: ServerNEWS - 156 (Septiembre 2005)

Man

age

me

nt

▲▲▲

32 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

rrupción, las variables, sus valores y una vista de consoladonde 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 seilustra 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ónderecho 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 laconfiguración de servidor. Ahora, pulse con el botón derechodel ratón sobre la configuración de servidor de la vista Servi-dores y seleccione Añadir archivos Jar del depurador de EGLcon el fin de preparar el servidor para depurar código escrito enEGL. Para iniciar una sesión de depuración, pulse con el botónderecho del ratón sobre el proyecto web de EGL y seleccioneDepurar en el servidor. Utilice la opción de servidor existente ypulse Finalizar para dar comienzo a la sesión de depuración.

Observe que no es necesario generar código escrito en Javadesde EGL para poder depurar el código. Si desea generar elcódigo en Java y depurarlo, deberá eliminar los archivos Jardel depurador de EGL de la configuración de servidor.

Generar Java a partir de EGLAhora que ya ha escrito y depurado su aplicación escrita en EGLes el momento de generar el código en Java a partir de ella. Conese fin, pulse con el botón derecho del ratón sobre la carpetaEGLSource y seleccione Generar. Esto generará código en Javapara todas las partes de EGL. El resultado de esa generaciónaparece 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 EGLSourcey seleccione Generar con asistente. Esto hará que aparezcaun asistente en el que podrá seleccionar un subconjunto departes. Además, puede pulsar con el botón derecho del ratónsobre un archivo fuente de EGL y seleccionar Generar o Ge-nerar con asistente para generar código en Java a partir detodas las partes del archivo fuente o de un subconjunto deellas, respectivamente.

Simple y rápidoEl entorno de programación de EGL es el de un lenguaje sen-cillo y de alto nivel que puede utilizarse para desarrollar apli-caciones completas muy deprisa. EGL permite la portabilidadentre plataformas y oculta muchos detalles de la implemen-tación relacionados con el acceso a los datos y con las diferen-cias entre los niveles de las especificaciones. Es posible desa-rrollar aplicaciones en EGL y generar código en Java o enCobol. En el caso de Java, la aplicación puede ser autónoma ouna aplicación web.

Si se decide a desarrollar aplicaciones utilizando EGL y adar el paso hacia una mejor portabilidad tal y como se esbozaen el itinerario para los desarrolladores del iSeries, le reco-mendamos que utilice las herramientas de EGL que propor-

ciona WDSc. El completo juego de funciones incluido con elproducto, algunas de las cuales hemos descrito en este artí-culo, le ayudarán a que la transición se mucho más fácil. ¡Di-viértase y páseselo bien usando WDSc para iSeries! ■

Kushal Munir es desarrollador de software en el laboratorio de Toronto deIBM desde 2001. participa en el diseño, desarrollo y comprobación de lasherramientas Explorador de sistemas remotos (RSE) que se incluye con WDSc.Phil Coulthard trabaja en el laboratorio de Toronto de IBM como arquitectojefe del equipo de desarrollo de herramientas y lenguajes para el desarrollo deaplicaciones para el iSeries.George Farr trabaja en el laboratorio de Toronto de IBM como director dedesarrollo técnico de los lenguajes de programación RPG y VisualAge para RPG yde las nuevas herramientas de WDSc para RPG y Cobol.

FIGURA 5Recuadro de diálogo Plantillas de EGL

FIGURA 6Definición de un punto de interrupción en la perspectivaDepurar

■ INTRODUCCIÓN AL “ENTERPRISE GENERATION LANGUAGE”

Page 33: ServerNEWS - 156 (Septiembre 2005)

Man

age

me

nt

▲▲▲

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 33

Page 34: ServerNEWS - 156 (Septiembre 2005)

▲▲▲

Pro

gram

ació

n y

sis

te

mas

34 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

Antes de que su empresa se embarqueen el desarrollo de una aplicación es-crita en Java basada en web, tendráque considerar la posibilidad de uti-lizar varias tecnologías Java del

lado del servidor. Las tecnologías obvias son HTML,JavaBeans, páginas JavaServer (JSP) y servlets.Probablemente habrá oído hablar de Struts y de latécnica de diseño Modelo/Vista/Controlador (MVC),pero, ¿qué pasa con JavaScript, JSTL (JSP Stan-dard Tag Library) y la tecnología más reciente deSun, JSF (JavaServer Faces)? En este artículo en-contrará la información que necesita para seleccio-nar la combinación tecnológica más apropiada parasus aplicaciones.

HTML y JavaScriptIndependientemente de la fiabilidad demostrada a lo largode tanto tiempo de la interfaz 5250 del iSeries, HTML es lanueva interfaz de usuario. Las aplicaciones basadas en HTMLofrecen funciones de tipo GUI (como botones de selección,recuadros de selección, listas de selección desplegables y po-sibilidad de utilizar el ratón), pero no están controladas poreventos como una GUI de Windows. Cuando un usuario pul-sa el botón Enviar, todos los datos de entrada del panel seenvían al servidor.

Ahí es donde entra en escena JavaScript. JavaScript (queno es Java) es un lenguaje de scripts basado en el navegador.Puede añadir funciones de JavaScript a casi cualquier ele-mento HTML para responder a varios eventos (por ejemplo,onClick, onChange, onKeyPress, onLoad u onFocus). Ya séque acabo de decir que HTML no está controlado por even-tos, pero lo que le estoy diciendo ahora es que se puede utili-zar JavaScript para manejar los eventos de la IU de HTML.La cuestión es que JavaScript está limitado en lo que puedehacer para responder a un evento. No puede acceder a unabase de datos. No puede grabar a disco. No puede ejecutarprogramas escritos en RPG. Todo lo que puede hacerJavaScript es modificar la información mostrada con HTML.

JavaScript se utiliza para realizar operaciones de edición enel lado del cliente y para animar la IU del navegador (concosas como menús que se desplazan por la ventana y HTMLdinámico).

Hay que comprender que las ediciones del código escrito enJavaScript –así como las más sofisticadas operaciones de va-lidación y manejo de errores– también deben programarseen Java en el lado del servidor de la aplicación. Esta indiscu-tible redundancia en el código aumenta la complejidad de laaplicación, pero a veces es necesaria para reducir el tiempode ida y vuelta hasta el servidor.

Páginas JavaServerUna página JSP es HTML con código Java incrustado. Pue-den escribirse aplicaciones web totalmente en JSP. He vistoalgunas. Lo que no he visto es aplicaciones escritas única-mente en JSP que puedan mantenerse. La experiencia nosdice que debe haber tan poco código escrito en Java como seaposible. Sirva de ejemplo el fragmento de código escrito enJSP de la Figura 1. El código escrito en Java que contiene esmoderadamente complejo; sirve para procesar una lista deobjetos Customer (Cliente) y ni siquiera muestra el códigoJSP verdaderamente complejo que crea la lista de clientes.Hay varios problemas con la estrategia de escribir progra-mas exclusivamente en JSP:

1.Se necesita un desarrollador en Java para mantener la IU.2.El código escrito en Java no se puede comprobar, depurar o

mejorar fácilmente.3.Es un sistema de desarrollo monolítico que no aprovecha la

mejor característica de Java: el desarrollo basado en com-ponentes.

Biblioteca JSTLPublicada en 1999, la especificación JSP incluía la posibili-dad de crear códigos HTML personalizados. Pero cuando losdesarrolladores empezaron a utilizar esta característica, re-sultó que todos creaban bibliotecas de códigos HTML que enel fondo eran muy parecidas. La respuesta de Sun vio la luzen 2002: la biblioteca JSTL (JSP Standard Tag Library). Sinembargo, muchas empresas, incluyendo la mía, hicieron casoomiso a JSTL, ¿Por qué? En parte por la pereza de utilizarotra tecnología nueva. Pero, sobre todo, porque cuando se pre-sentó JSTL, los servidores de aplicaciones que estábamos

Aplicaciones Java basadas en web

Consideraciones tecnológicas: escoja sus armas sabiamenteantes de empezar a programar

por Don Denoncourt

Page 35: ServerNEWS - 156 (Septiembre 2005)

▲▲▲

Pro

gram

ació

n y

sis

te

mas

www.help400.es AGOSTO-SEPTIEMBR 2005 ServerNEWS 35

utilizando aún no eran compatibles con los requisitos de JSTLde JSP 2.0 y Servlet 2.4. Sin embargo, esa excusa ya no esválida porque WebSphere 5.0 (y WebSphere 5.1) es un servi-dor compatible con J2EE 1.3, lo que significa que da soportea JSP 2.0 y a Servlet 2.4.

Los códigos HTML de JSTL pueden agruparse en cuatrocategorías:

• Básicos• Manipulación de XML• SQL• Internacionalización y formato

Junto con esos cuatro juegos de bibliotecas de códigos, JSTLincluía una característica nueva llamada Lenguaje de expre-sión (Expression Language, EL). EL permite utilizar a losautores de páginas una sintaxis más sencilla para que pue-dan manipular datos de aplicación. En la Figura 2 puedeverse una página de JSP que incluye el uso de códigos deJSTL básicos y de expresiones de EL (que se pueden identifi-car por el símbolo del dólar y las llaves).

Aplicaciones web monolíticas (MVC)Pero aunque JSTL permite simplificar el código escrito enJava de una JSP, todavía hay que tener cuidado de no crear

aplicaciones JSP monolíticas. La famosa solución a este dile-ma es la técnica de diseño MVC. Como se describía en el artí-culo “Sobre la arquitectura MVC” (número 130, de enero de2003):

“MVC divide una aplicación en tres componentes: el mode-lo de la lógica de empresa, la vista o IU y un controlador quelos relaciona a los tres. El objetivo es separar la vista delmodelo para que los cambios que se produzcan en la primerano afecten al segundo y viceversa. El controlador permite estaseparación.

El modelo no sabe nada sobre la IU; simplemente propor-ciona un conjunto de servicios o API que permiten leer o mo-dificar el estado del modelo. A continuación, el controladorcorrelaciona, de forma estándar, el flujo de información y loseventos entre la vista y el modelo.

Por lo que hace al diseño, esto significa que los cambios enlos controles o en los elementos individuales de la IU no afec-tan al modelo. Por lo que hace a la arquitectura, significa quelos cambios en el cliente no afectan al modelo.”

El resultado de emplear la técnica de diseño MVC es que elcódigo escrito en JSP es más fácil de mantener por los pro-gramadores que no saben Java. Además, el código puedemantenerse con diferentes editores WYSIWYG, comoDreamweaver, FrontPage o WebSphere Development StudioClient (WDSc). Las aplicaciones MVC también pueden ser“refactorizadas” más fácilmente. Y, lo que tal vez sea másimportante, 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.

MVC no es un producto ni una especificación de Sun; esuna técnica de diseño, una estrategia estándar para separarla presentación de la programación. Pero no intente crear supropia arquitectura MVC. Ya se ha hecho. Hay más de unadocena de infraestructuras MVC de código libre, pero la quese ha convertido en un estándar de facto es Jakarta Struts.

Jakarta StrutsStruts es un producto de código libre disponible en el proyec-to Apache Jakarta Project (jakarta.apache.org). Struts se pre-sentó en el año 2000 y desde entonces su aceptación ha sidogeneralizada. De hecho, todos los IDE de Java más impor-tantes son compatibles con Struts. Struts proporciona unainfraestructura para una aplicación web. Gestiona el flujo deuna aplicación (según se especifica en un archivo de configu-ración basado en XML) empezando por la interfaz HTML/JSP pasando por un controlador de servlets y llegando hastalas clases que gestionan el proceso de la lógica de la empresa.Struts es una infraestructura muy buena y yo mismo he es-crito e instalado docenas de aplicaciones que utilizan Struts.Puede obtener más información sobre Struts leyendo los ar-tículos “Una mejor arquitectura con MVC” y “Presumir deStruts” (publicados en los números 147 y 148, de octubre ynoviembre de 2004, respectivamente) o el libro “ProgrammingJakarta Struts”, de Chuck Cavaness (O’Reilly, 2004).

<table> <tr><th>Name</th><th>Address</th></tr> <% Iterator iter = custList.iterator(); while (iter.hasNext()) { Customer cust = (Customer)iter.next(); %> <tr> <td><%=cust.getName()%></td> <td><%=cust.getAddr()%></td> </tr> <% } %></table>

<table> <tr><th>Name</th><th>Address</th></tr> <c:forEach items="${custList} var="cust"> <tr> <td>${cust.name}</td> <td>${cust.addr}</td> </tr> </c:forEach></table>

FIGURA 1Ejemplo de una aplicación escrita únicamente en JSP

FIGURA 2Página de JSP que utiliza códigos básicos de JSTL yexpresiones de EL

Page 36: ServerNEWS - 156 (Septiembre 2005)

▲▲▲

Pro

gram

ació

n y

sis

te

mas

36 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

A parte de su arquitectura de control de la aplicación y deotras características muy interesantes, Struts tiene dos re-cursos que me gustaría destacar. El primero es un conjuntode bibliotecas de códigos de JSP. Estos prácticos códigos sim-plifican el desarrollo de JSP. Uno de mis códigos favoritos deStruts es iterate. En la Figura 3 puede verse un fragmentode código escrito en JSP en que se usa el código iterate paramostrar una lista de clientes.

El segundo recurso de Struts es su infraestructura de vali-dación. Struts tiene varios sofisticados mecanismos para lle-var a cabo la validación. El que más me gusta, permite ponerla semántica de validación en un archivo de configuraciónXML. Y hay que señalar que la infraestructura de validaciónde Struts puede generar código en JavaScript, eliminandopor lo tanto el problema de programación por duplicado quemencionaba antes.

JavaServer FacesLa especificación JSF es la más reciente de las tecnologíasque se describen en este artículo. Se publicó formalmente enmarzo de 2004. A primera vista, JSF parece la competenciade Struts. Y es curioso, porque uno de los promotores de laespecificación JSF, Craig McClanahan, es el creador originalde Struts. Pero mientras que Struts es una infraestructurapara desarrollar aplicaciones web, JSF es una infraestructu-ra para interfaces de usuario. Struts maneja el flujo de unaaplicación desde la página web hasta la lógica de la empresa;JSF se diseñó para manejar la IU de una aplicación. De modoque Struts y JSF se solapan, pero las características de IU deJSF eclipsan las de Struts. Eso no significa que no puedanutilizarse Struts y JSF a la vez. De hecho, actualmenteJakarta tiene un proyecto llamado Struts-Faces que ayuda acombinar ambas tecnologías.

(Craig McClanahan es arquitecto de Sun Java StudioCreator –un rival de WDSc. Puede leer sus opiniones sobreJSF y Struts en blogs.sun.com/roller/page/craigmcc/20040927).

Como pasa con JSTL y Struts, JSF tiene un conjunto decódigos HTML. Pero JSF es mucho más que un conjunto debibliotecas de códigos. JSF se diseñó con el fin de ofrecer ca-racterísticas parecidas a las del modelo controlado por even-tos de las aplicaciones de Windows. Todos los códigos de JSFtienen asociados sus correspondientes componentes IU (comorecuadros de texto, listas, paneles con pestañas y cuadrículasde datos) con lo que pueden asociarse (o enlazarse, parautilizar el término que se usa en JSF) beans de datos yprocesos de la interfaz con la lógica de la empresa. El jue-go de componentes IU de JSF puede ampliarse fácilmente,de modo que es posible personalizar el comportamiento dela IU. La arquitectura de componentes permite a los pro-veedores de IDE crear herramientas WYSIWYG de arras-trar y soltar similares a las herramientas de desarrollorápido de aplicaciones (RAD) de VisualBasic, PowerBuildery Delphi.

Al igual que Struts, JSF tiene funciones de validación. Peroel código de validación de JSF está en el sitio al que pertene-

<table> <tr><th>Name</th><th>Address</th></tr> <logic:iterate name="custList" id="cust" type="com.denoncourt.Customer" scope="request"> <tr> <td><%=cust.getName()%></td> <td><%=cust.getAddr()%></td> </tr> </logic:iterate></table>

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %><%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %><h:dataTable value="#{custList}" var="cust"> <h:column> <f:facet name="header"> <h:outputText value="Name" /> </f:facet> <h:outputText value="#{cust.name}" /> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Address"/> </f:facet> <h:outputText value="#{cust.addr}" /> </h:column></h:dataTable>

FIGURA 3Fragmento de código escrito en JSP que utiliza el códigoiterate

FIGURA 4Ejemplo de código escrito en Java que utiliza un enlace devalor

■ APLICACIONES JAVA BASADAS EN WEB

ce: en la JSP, con los códigos del validador. JSF incluye tresvalidadores estándar:

• <f:validateDoubleRange>• <f:validateLength>• <f:validateLongRange>

Pero también es muy fácil escribir sus propios validadores.Así mismo, pueden encontrarse validadores personalizadosen Internet. De forma parecida a Struts, los mensajes de loserrores de validación pueden modificarse en archivos de pro-piedades y mostrarse con códigos de JSP.

Un gran problema que se daba con el desarrollo con Strutsera la programación del proceso de presentación, validacióny visualización de los resultados. De hecho, un conocido libro,“Jakarta Pitfalls: Time-Saving Solutions for Struts, Ant,JUnit, and Cactus” (John Wiley & Sons, 2003) dedica lamayoría de sus capítulos a ofrecer soluciones a los problemasde desarrollo con Struts. De todas formas, JSF no tienen nin-guno de esos problemas. Los beans de datos se asocian con

Page 37: ServerNEWS - 156 (Septiembre 2005)

▲▲▲

Pro

gram

ació

n y

sis

te

mas

www.help400.es AGOSTO-SEPTIEMBR 2005 ServerNEWS 37

Page 38: ServerNEWS - 156 (Septiembre 2005)

▲▲▲

Pro

gram

ació

n y

sis

te

mas

38 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

■ APLICACIONES JAVA BASADAS EN WEB

los componentes de entrada gracias a una característicadenominada enlace de valor (en la Figura 4 se utiliza unenlace de valor en un campo de salida). Durante el procesa-miento de la salida de formulario por parte de JSF, los valo-res de los bean de datos examinan rápidamente todos los com-ponentes conocidos como representadores (renderers), dandoformato a datos como fechas, símbolos del dólar, numéricos olo que sea. Durante el procesamiento de la entrada de formu-lario por parte de JSF, los valores enlazados examinan rápi-damente todos los componentes conocidos como conversores(converters), devolviendo el formato original a los datos quetenían en el formulario de beans de datos (por ejemplo, String,Date o BigDecimal). De nuevo, los desarrolladores puedencrear fácilmente sus propios representadores y conversores.

La configuración de JSF (que también es parecida a la deStruts) se escribe en un archivo de XML y la gestiona uncontrolador de servlets. Pero JSF introduce un sofisticadoservicio llamado beans gestionados. Los beans gestionadosson JavaBeans que mantiene el controlador de JSF. Estosbeans generalmente hacen dos cosas: sirven de envoltura(wrapper) de los datos que se muestran en HTML y propor-cionan métodos para procesar los datos de entrada de formu-lario. Un método de un bean gestionado puede enlazarse conun componente de entrada de JSF con una propiedad action:

<h:commandButton value=”Process”

action=”#{entryHandler.process}” />

(Observe que JSF tiene un EL parecido al de JSTL. El có-digo EL de JSF es fácilmente distinguible del de JSTL por-que las expresiones van precedidas por el símbolo # en vezdel del dólar).

Para desarrollar e instalar aplicaciones en JSF es necesa-rio un servidor de aplicaciones compatibles con JSP 1.2 yServlet 2.3, y se necesita una implementación de la especifi-cación JSF. En la actualidad se dispone de tres imple-mentaciones: la de referencia de Sun (en java.sun.com/j2ee/javaserverfaces), la de código libre MyFaces (myfaces.org) yla de IBM. Tenga en cuenta que la implementación de IBMse ofrece con WebSphere 5.1, pero nada impide que utilice lade Sun o MyFaces con WebSphere 5.0 (ni 5.1, de hecho). De-bería mencionar, no obstante, que el conjunto de herramien-tas visuales de JSF de WDSc puede utilizar funciones no dis-ponibles en las implementaciones de Sun o MyFaces.

Para saber más cosas sobre JSF, eche un vistazo a los “Re-cursos sobre JSF” incluidos en esta página.

Elija sus armasAntes de empezar a programar su aplicación web basada enJava, necesita obtener las tecnologías que utilizará. HTML yJSP se dan por supuesto, pero le recomiendo encarecidamen-te que aprenda a utilizar JSTL y que adquiera alguna expe-riencia en JavaScript. Por otro lado, no pierda tiempo desa-rrollando su propia arquitectura MVC. Utilice JSF o Struts.Struts es el estándar de facto de las infraestructuras de apli-caciones web. Es una tecnología madura, todos los IDE másimportantes son compatibles con Struts y hay más de unadocena de libros publicados sobre Struts. JSF indudablementetiene un conjunto de funciones relacionadas con la IU mássofisticado, pero si la aplicación web es relativamente senci-lla, JSF puede ser excesivo.

Sin embargo, si necesita una IU muy conseguida, añadirfunciones con los códigos de Struts o con código propio puedeser decididamente más complejo que con JSF. Sí, JSF es unatecnología nueva, pero la versión Early Access existe desdehace dos años y en diciembre de 2003 ya se habían publicadopor lo menos cuatro buenos libros sobre JSF. En cualquiercaso, independientemente de lo que digan los fabricantes delos IDE, seguirá necesitando tener conocimientos de Java,tanto si usa JSF como si se decide por Struts. ■

Don Denoncourt es consultor en WebSphere de Computer ApplicationsSpecialists, Inc.

Recursos sobre JSF

Sitios webjamesholmes.com/JavaServerFacesUna lista de recursos de JSF entre los que se incluye el plug-in para Eclipse del propio Holmes, Faces Console

exadel.com/tutorial/jsf/jsftutorial-guessnumber.htmlUna sencilla aplicación de ejemplo “Adivina el número”basada en JSF

www-106.ibm.com/developerworks/websphere/techjournal/0401_barcia/barcia.htmlDesarrollo de aplicaciones en JSF utilizando WebSphereStudio V5.1

jsfcentral.comUna 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)

Page 39: ServerNEWS - 156 (Septiembre 2005)

▲▲▲

Pro

gram

ació

n y

sis

te

mas

www.help400.es AGOSTO-SEPTIEMBR 2005 ServerNEWS 39

Page 40: ServerNEWS - 156 (Septiembre 2005)

40 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

GUIA

Page 41: ServerNEWS - 156 (Septiembre 2005)

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 41

GUIA

Pere IV 78-82, 7º 3ª

08005 - Barcelona (Spain)

T. 34 934 854 427 Fax 34 934 850 168

Mantenimiento / Alquiler y

Brokerage / Venta / Redes

Backup Center

MANTENIMIENTO Y BROKERAGE

INFORMÁTICO, S.L.

P.T.A. Edificio CENTRO EMPRESAS 29590 Málaga

Page 42: ServerNEWS - 156 (Septiembre 2005)

42 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es

Como sabes, esta información es estrictamente confidencial. Aunque nosotrosneguemos haberlo dicho o escrito, te autorizo a que obres en consecuencia

confidencial por Carlos Bell

EL MERCADO DEL ISERIES SE RECUPERA...

Uno se va de vacaciones con la esperanza de que en su ausencia no ocurranada digno de ser tenido en cuenta, pero en nuestro mundillo no suele serasí. 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) lodestiné por completo a revisar “mis fuentes” de información habituales. Meesperaban un montón de sorpresas.

Aparte de las que comento en el artículo “RPG: un puente entre dosmundos” (incluido en la página 10) sobre la rebelión de los disidentes (yasabes, aquellos que no están de acuerdo con el “pensamiento único” de IBM)que ha favorecido la ampliación y flexibilización del llamado “iSeriesDeveloper Roadmap”, la “Hoja de ruta” a seguir para estar tecnológicamen-te al día, también me he encontrado con otras interesantes noticias.

Así, de la lectura del informe de los resultados de IBM correspondientes al segundo trimestre se desprende que en IBMse han vuelto a poner las pilas: “El crecimiento de STG (Grupo de Sistemas y Tecnología) en el área de servidores ha sidoimpulsado por los servidores UNIX pSeries, que han tenido un crecimiento del 36%, los servidores xSeries y los iSeries degama media, que han crecido un 11% y un 10% respectivamente. Además de los servidores, los ingresos por sistemas dealmacenamiento han crecido un 19%...” Sin duda, éste será el año triunfal del Power5. La buena noticia es que para eliSeries éste es el primer crecimiento de dos dígitos desde el primer trimestre del 2003, lo que demuestra el gran potencialdel iSeries para seguir ganando cuota de mercado. Tal parece que los esfuerzos de marketing de IBM durante la primeramitad del año han hecho renacer el interés por el iSeries puesto que, en lo que va de año, los resultados de nuestraplataforma 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 trimestreconsecutivo 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

¿Quién dijo que el mainframe había muerto? IBM defiendesu vigencia y apuesta por seguir renovando su gama de equi-pos, pioneros a la hora de incorporar determinadas tecnolo-gías y avances que luego se van incorporando al resto de losservidores de la compañía. Así, IBM ha lanzado la iniciativa

IBM Systems Agenda que pretende ser la respuesta a un nue-vo escenario de trabajo, el colaborativo. La iniciativa se sus-tenta en tres pilares: virtualización ("una buena manera detener un entorno flexible, fácil de gestionar y con ahorro decostes"), el compromiso con los estándares abiertos ("para queel cliente tenga la libertad de poder integrar todo aquello quequiera o necesite") y la colaboración para innovar.

Los primeros anuncios que efectúa IBM bajo el paraguasde su Systems Agenda son Virtualization Engine 2.0, la crea-ción de Blade.org (asociación promovida junto a Intel) y elnuevo mainframe IBM System z9 que, según Álvaro ÁlvarezSantullano, director de ventas de zSeries de IBM, es un pro-ducto “para todo tipo de empresas, incluidas las medianas opequeñas, y piedra angular de Systems Agenda”. De acuerdocon IBM, el z9 es uno de los sistemas de cómputo másconfiables y seguros que jamás se hayan construido. Además,duplica en potencia de procesamiento, capacidad y memoriaa su antecesor, el eServer z990, conocido familiarmente como“T-Rex” (“Tiranosaurio Rex”).

Sigilosamente, IBM sigue avanzando en el proyecto ECLipz(enmarcado en la iniciativa “Power Everywhere”) del que casinadie habla y cuyo acrónimo nos sugiere una convergenciaentre las series i, p, y z de la empresa, basada en la arquitec-tura del chip Power6, previsto para finales de 2006. ■

INDICE DE ANUNCIANTES SEPTIEMBRE 2005

Empresa Página

AMERICAN TOP TOOLS ............................................ 27, 40CACOVAI ................................................................................ 37CPI SOFTWARE ..................................................................... 19GUÍA ................................................................................. 40, 41IBM .................................................................. ContraportadaLAKEVIEW ............................................................................... 31MAIN MEMORY ....................................... Interior PortadaMICROSOFT .............................. Interior ContraportadaOCÉ ........................................................................................... 13SOFTWARE GREENHOUSE............................................... 23SUSCRIPCION NEWS/400 .......................................... 25, 39TANGO/04 ................................................................................ 9TRANSTOOLS........................................................................ 33

El científico de IBM Ravi Arimilli con un microprocesadorPower5, el que equipa a los actuales eServer iSeries ypSeries de IBM. (Foto cortesía de IBM)

Page 43: ServerNEWS - 156 (Septiembre 2005)
Page 44: ServerNEWS - 156 (Septiembre 2005)