Está en la página 1de 44

R

S

E

V

A

I

R

N

I

A

O

R S E V A I R N I A O INFORMACIÓN TÉCNICA Y DE GESTIÓN
INFORMACIÓN TÉCNICA Y DE GESTIÓN PARA i5 e iSeries
INFORMACIÓN TÉCNICA Y DE GESTIÓN PARA i5 e iSeries

Programación en CGII A O INFORMACIÓN TÉCNICA Y DE GESTIÓN PARA i5 e iSeries Desarrollo con CGIDEV2 Consideraciones

Desarrollo con CGIDEV2Y DE GESTIÓN PARA i5 e iSeries Programación en CGI Consideraciones sobre Java Interfaces de usuario

Consideraciones sobre Javai5 e iSeries Programación en CGI Desarrollo con CGIDEV2 Interfaces de usuario en el iSeries Enterprise

Interfaces de usuario en el iSeriesen CGI Desarrollo con CGIDEV2 Consideraciones sobre Java Enterprise Generation Language Mejor portabilidad:

Enterprise Generation Language Generation Language

Mejor portabilidad:

Suplemento HELP400

Generation Language Mejor portabilidad: Suplemento HELP400 RPG e IFS: Obtener información sobre los archivos 156 15

RPG e IFS:

Obtener información sobre los archivos

156

15

editorial
editorial

Imagen de la portada: Mike Friehauf

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

© Publicaciones HELP400, S.L. Se prohibe la reproducción total o parcial de los artículos aparecidos en este número sin la autorización expresa por escrito de la empresa editora, titular del Copyright. Todos los derechos reservados en cualquier idioma. ServerNEWS es una publicación independiente de grupos de usuarios y/o de distribuidores de marcas. De las ideas expuestas en los artículos firmados son responsables sus autores. Corresponde al lector el asegurar que las noticias, técnicas y procedimientos descritos son adecuados para su instalación. Publicaciones HELP400 S.L. no asume ninguna garantía ni implícita ni explicitamente. La empresa editora no se responsabiliza de la asiduidad en la distribución gratuita a las empresas españolas equipadas con S/3X o AS/400.

IBM y AS/400 son marcas registradas por International Business Machines.

www.help400.es

¿Quién dijo vacaciones?

A trás quedan los días de vacaciones y comenzamos de nuevo, después de haber recargado energías, la labor profesional que dejamos aparcada durante el mes de agosto. Ponerse al día puede resultar algo duro para todos pero en la Redacción, tras dos meses de “ausencia”, tenemos la ilusión de reencontrarnos con nuestros lectores y retomar la labor

diaria con más fuerza para encarar unos meses que, desde el punto de vista del sector, se presentan llenos de contenidos, presentaciones y novedades. Para la industria de las Tecnologías de la Información no existen las vacaciones, ni siquiera durante el mes de agosto. Recordemos que ahora hace diez años, con- cretamente el 24 de agosto de 1995, Microsoft lanzó su Windows 95 que, en pocos meses, se convirtió en el entorno gráfico de los PC de todo el mundo. Para celebrar- lo, desde el 2 de agosto de este año su último descendiente, hasta ahora conocido como Longhorn, ya tiene nombre: Windows Vista, el que será, a partir de 2006, el nuevo sistema operativo de escritorio de Microsoft. Recordemos también que Bill Joy, cofundador de Sun Microsystems y uno de los desarrolladores del Unix de Berkeley, juzgó que Internet podría ser el campo de batalla más adecuado para disputar a Microsoft su primacía casi absoluta en el terreno del software, y vió en un lenguaje interno de Sun, Oak, el instrumento

idóneo para llevar a cabo estos planes. Tras un cambio de nombre y modificaciones de diseño, el lenguaje Java fue presentado al mundo también en agosto de 1995. IBM, tras dos años de vacilaciones, en Java encontró la respuesta definitiva a sus dudas sobre qué lenguaje utilizar, C++ o SmallTalk, para su nueva generación de AS/400, los llamados “AS/400e Series”, presentada el 19 de agosto de 1997, 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 de IBM de aquellas fechas Mucho hemos hablado de Java en la revista, tanto que hasta hemos publicado un libro, “Java para programadores RPG”. Así que, para iniciar la nueva tempora- 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 indica en uno de los artículos de este número “Hoy, más que nunca, las empresas están interesadas en encontrar la mejor forma de ofrecer aplicaciones web interactivas a

sus clientes y usuarios. Con tantas opciones disponibles

mejor solución y la más sencilla”. Si sabemos aprovechar las ventajas de Internet y 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ás exigentes será una tarea sencilla.

solemos pasar por alto la

será una tarea sencilla. solemos pasar por alto la Antonio Montía a.montia@help400.com AGOSTO-SEPTIEMBRE 2005

Antonio Montía

a.montia@help400.com

AGOSTO-SEPTIEMBRE 2005

ServerNEWS

3

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

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

equipo editorial

Director: Antonio Montía Redacción: Carlos Bell, Alberto C. Blanch, Equipo internacional de iSeries NEWS Colaboradores habituales: Jaime Gustavo Estany, José Mª Martín, Lluís Peiret Traducciones: Pere J. Francisco Brumós

producción

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

administración

Suscripciones : Nuria Navarro Publicidad: Tel. 34- 932 310 049 Fax: 34-932 310 309 Servicio HelpNet: www.help400.es

edita

PUBLICACIONES

309 Servicio HelpNet : www.help400.es edita PUBLICACIONES Deposito legal: B-2757-90 I.S.S.N. 1698-4501 APTDO. DE

Deposito legal: B-2757-90 I.S.S.N. 1698-4501 APTDO. DE CORREOS 8003 - 08080 Barcelona Gran Vía Corts Catalanes, 715, Entlo. 3ª 08013 - Barcelona

Tel.: 932 310 049

E-mail: help400@help400.com

Fax: 932 310 309

Director General: Alberto C. Blanch Llangostera

Publicado con la participación de

- iSeries NEWS www.pentontech.com www.pentontech.com

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

Penton Technology Media Darrell C. Denny, President Penton Media, Inc. David Nussbaum, Chief Executive Officer

Penton Media, Inc. David Nussbaum, Chief Executive Officer LATINOAMERICA distribuidores Belice, El Salvador, Guatemala

LATINOAMERICA

distribuidores

Belice, El Salvador, Guatemala y Honduras

VIACOMP 6ª Avenida. "A" 2-83 Zona 10 Ciudad de Guatemala, GUATEMALA 01010 Telf. 502-360-0358 y 360-0350 Fax 502-332-33694 email: viacomp@guate.net www.viacomp.net

Perú

COMMON PERU Bajada Balta 131, Of. 10, 2º Piso Miraflores Lima 18, PERU Telf. y Fax: 46 31 32

Paraguay

ANGEL LIERNUR E HIJO P.O. BOX 2448 ASUNCION - PARAGUAY

427661@telesurf.com.py

e-mail: aliernur@yahoo.com

4

ServerNEWS

AGOSTO-SEPTIEMBRE 2005

aliernur@yahoo.com 4 ServerNEWS AGOSTO-SEPTIEMBRE 2005 sumario en portada 10 12 18 RPG: un puente entre dos

sumario

en portada

4 ServerNEWS AGOSTO-SEPTIEMBRE 2005 sumario en portada 10 12 18 RPG: un puente entre dos mundos

10

12

18

RPG: un puente entre dos mundos

por Carlos Bell

Al margen de que en su día IBM eligiera Java para el desarro- llo web en el iSeries, en el mercado existen tantas soluciones que puede darnos la sensación de que para este tipo de aplica- ciones es necesario “utilizar otra cosa” en lugar de profundizar en lo que ya conocemos, el RPG, y aprovechar la experiencia que con él hemos adquirido.

CGIDEV facilita la vida a los programadores de RPG

por Jef Sutherland

CGIDEV2 es un kit de herramientas de desarrollo de páginas web gratuito suministrado por IBM que enmascara la complegidad de la programación CGI. Como veremos, CGIDEV2 ofrece 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.

Programación en CGI y el iSeries

por Bradley V. Stone

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

web totalmente funcionales sin necesidad de utilizar soluciones caras y que con- sumen muchos recursos. www.help400.es

www.help400.es

Nº 156 AGOSTO-SEPTIEMBRE 2005

www.help400.es

opinión

8

RPG ha muerto

por Carson A. Soule

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

¡viva RPG!

management

24

Sobre las interfaces de usuario

por Jef Sutherland

 

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

26

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

por George Farr, Phil Coulthard y Kushal Munir

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

 

programación y sistemas

34

Aplicaciones Java basadas en web

por Don Denoncourt

Antes de que su empresa se embarque en el desarrollo de una aplicación escrita 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 necesaria para seleccionar la combinación tecnológica más apropiada para sus aplica- ciones.

 

HELP400

 

Técnico i

 
   

SuplementoSuplemento

   

1

Obtener información sobre los archivos

por Scott Klement

 
 

En los artículos anteriores sobre el RPG y el IFS hemos visto cómo leer y grabar archivos continuos en el sistema de archivos integrado (IFS). IBM también nos ofrece algunas API para obtener información sobre los ar- chivos del IFS. En esta ocasión nos centraremos en cómo recuperar esta información y cómo modificar los atributos de esos archivos.

www.help400.es

modificar los atributos de esos archivos. www.help400.es forum.help400 F orum.help400 es una lista de correos puesta
modificar los atributos de esos archivos. www.help400.es forum.help400 F orum.help400 es una lista de correos puesta
modificar los atributos de esos archivos. www.help400.es forum.help400 F orum.help400 es una lista de correos puesta
modificar los atributos de esos archivos. www.help400.es forum.help400 F orum.help400 es una lista de correos puesta

forum.help400

Forum.help400 es una lista de correos puesta a disposición de los lectores de ServerNEWS en la que cada día se solu- cionan numerosos problemas entre todos los participantes. Hallará más información en http://www.help400.es

Hallará más información en http://www.help400.es SECCIONES HABITUALES 3 3 3 3 3 6 6 6 6

SECCIONES

HABITUALES

33333

66666

4040404040

Editorial

Novedades

Guia

AGOSTO-SEPTIEMBRE AGOSTO-SEPTIEMBRE 2005 2005

ServerNEWS ServerNEWS

5

5

novedades

novedades

La consola de rendimiento de Tango/04 ahora también para Windows

Gestión flexible de rendimiento en múltiples plataformas

A hora, las empresas que buscan optimizar la disponibilidad y el tiempo de respuesta de sus siste- mas y aplicaciones de informática pueden consolidar la monitorización de los signos vitales de sus

servidores Windows y iSeries (CPU, disco, memoria, trabajos, etc.) en una consola única de Gestión de Niveles de Servicio. El nuevo VISUAL Control for Windows 9, lanzado por Tango/04 Computing Group, lo hace posible capturando e integrando en su consola de gestión de rendimiento métricas procedentes de servidores con 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 sus procesos 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 en SNMP. 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 de programación de la versión 9 permiten alinear fácilmente la gestión de niveles de servicio con los objetivos de negocio de cada empresa, lo cual se traduce en una mejora inmediata en la cuenta de resultados”. Además de servidores iSeries y Windows, VISUAL Control for Windows 9 puede monitorizar sistemas Linux, UNIX y AIX gracias a la tecnología ALEV de Tango/04, que permite aprovechar al máximo el protocolo 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 de un trabajo ha sido sobrepasado, pero sólo si es procesado en un servidor específico durante un período de tiempo preciso y si lo ejecuta un determinado usuario. Este es un ejemplo del nivel de personalización que un director de informática puede necesitar en su trabajo diario, y que con Tango/04 puede conseguir muy fácilmente,” agrega Raúl Cristián Aguirre. Más de dos mil parámetros de rendimiento pueden ser monitorizados y controlados para ejecutar ajustes en forma automática antes de que los procesos de negocio sean afectados. Los usuarios pueden personalizar 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 10 usuarios 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 for Windows puede ejecutar una alarma de acuerdo con reglas y variables especificados por el usuario. Los administradores pueden programar acciones automáticas tales como modificar las prioridades de los procesos, 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 puede emitir una alerta por email o SMS y escalarla a diferentes personas hasta que el problema sea resuelto. Para más información, Telf.: 932.740.051 - www.tango04.es

a diferentes personas hasta que el problema sea resuelto. Para más información, Telf.: 932.740.051 - www.tango04.es

Adélia: 4GL para desarrollos en plataformas iSeries, Gráficas C/S y Web

Innova Estudi Soft, especialis- tas en programación a medida, en Gestió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 mercado informático de más de 14 años gestionando diversos sectores in- dustriales y especialmente el sec- tor eléctrico. Adélia Studio consta de una gama de herramientas de desarro- llo articuladas alrededor de un modelo conceptual y de un 4GL que permiten la concepción y el

6

ServerNEWS

AGOSTO-SEPTIEMBRE 2005

desarrollo de las siguientes arqui- tecturas: entornos gráficos C/S multi-plataforma y multi-BDs – DB2/400, SQL, etc.- (Adélia Visual Studio) que genera Java y/o C; Web en entornos JAVA-J2EE (Adélia Web Studio); y 5250 nati- vas sobre iSeries (Adélia iSeries Studio) que genera RPG. Para más información, Telf.: 972.673.367 www.innova-soft.com

Reunion Nacional de Common 2005 en Granada

Los próximos días 20 y 21 de Oc- tubre tendrá lugar en el Hotel Carmen de Granada la reunión anual de Common Europe Espa- ña. Durante el encuentro se tra- tarán, entre otros, temas de Busi- ness Inteligence y Soluciones de continuidad; y, en el apartado de Experiencias de Usuario, se pre- sentará la conexión de cajeros autómaticos a un iSeries, en base a la experiencia real de la empre- sa EMASAGRA. Para más información, Telf.: 912.116.114 www.common-es.org

VII Reunión anual de usuarios de ASNA Visual RPG

CaCovai 400, anuncia la “VII re- unión anual de usuarios de AVR”, que se celebrará los días 6 y 7 de Octubre 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.787 www.cacovai.com

Storage Forum Barcelona 2005

Tras el éxito de las ediciones de Storage Forum en Madrid, este año Barcelona acoge el Storage Forum 2005, el salón profesional por excelencia dedicado a las tec- nologías de almacenamiento de datos que se presentará los días 25 y 26 de octubre, en el Barceló Hotel Sants. Se estructurará en dos ciclos de conferencias temáticas. El prime- ro orientado a casos prácticos, nuevas tendencias y estrategias del sector del Almacenamiento y Seguridad de datos. El segundo dará la palabra a los actores del mercado para presentar sus nue- vos productos y tecnología. Para más información, www.storage-it.com

www.help400.es

Seminario de optimización de la gestión de iSeries

¡Descubra cuánto puede ahorrar

su instalación al optimizar la ges-

tión de recursos de su iSeries! Al

detectar las posibilidades, imple- mentar políticas de monitoriza-

ción, descubrir las reservas y efec- tuar las operaciones necesarias –todo sin interrumpir el trabajo

de los usuarios– la mayoría de las

instalaciones pueden liberar en- tre 20% - 40% de los recursos com-

prometidos de su iSeries. Software Greenhouse pre- senta, el día 15 de Noviembre en Madrid y el 16 en Barcelona, sen- dos seminarios de gestión de re- cursos de iSeries, con el lanza- miento del producto OS Director de Vision Solutions. Este nuevo producto ha sido incorporado a la línea de productos del conocido proveedor de Alta Disponibilidad, al ser adquirida por parte de Vision Solutions la empresa bri- tánica OS Solutions. OS Director es una excelente herramienta para la optimización de rendi-

mientos y de utilización de recur- sos de iSeries que suministra un amplio rango de funcionalidades de monitorización, gestión y opti- mización. El CEO de Vision Solutions, Nicolaas Vlok, comenta respecto

a la reciente adquisición: “El

mercado de Alta Disponibilidad si- gue evolucionando y han surgido nuevos requerimientos, tales como reducir el volumen de discos utili- zado, mejorar rendimientos y apro- vechar al máximo todos los recur- sos del sistema, al mismo tiempo que se mantiene alta disponibili- dad. Vision Solutions ha estado trabajando en esta dirección y esta adquisición significa un rápido avance y permite una integración inmediata de optimización de sis- temas con alta disponibilidad.” En el seminario actuará como invitado principal (con traducción simultánea) Mike Ryan, director de la división OS de Vision Solu-

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

Redbook de IBM sobre 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 en el desarrollo de soluciones basa- das en las tecnologías .Net de Microsoft, fue invitado especial- mente ha realizar una residencia en IBM Rochester, con el objetivo de escribir junto a un equipo de especialistas, el libro “IBM Red- book 2005” sobre integración de Microsoft.Net Framework con los sistemas iSeries (AS/400 e i5) de IBM. Esta experiencia posiciona al equipo de desarrollo tecnológico de d2B Network como experto en integración de desarrollos .NET sobre la plataforma iSeries, espe- cialmente con bases de datos DB2 Universal DataBase. El libro ha sido editado por IBM y, si está in- teresado, puede descargarse una versión en PDF desde la dirección:

www.d2bnetwork.com/

download/

RedBook_IBM-2005.zip

Seminario de Gestión de Servicios de Negocio (BSM)

¿Qué es BSM? ¿Cómo estructurar un proyecto de monitorización? ¿Cómo mejorar el rendimiento y la disponibilidad de las aplica- ciones? ¿Por qué el control de los servicios de negocio es la mayor prioridad para los directivos infor- máticos? El seminario gratuito “BSM 2005: De la monitorización de in- fraestructura a la monitorización de servicios de negocio”, organiza-

Si como proveedor posee alguna novedad relacionada con el iSeries - AS/400 de IBM, recuerde que en esta sección dispone de un espacio gratuito para darla a conocer a todos nuestros lectores. Puede enviar sus notas de prensa a ServerNEWS, Gran Vía Corts Catalanes, 715, Entlo 3ª 08013 - Barcelona. Para la inclusión de fotografías, agradecería- mos que las remitieran en formato electrónico.

www.help400.es

do por Tango/04 Computing Group, y que se celebrará el día

5 de Octubre en Barcelona, el día

6 de Octubre en Madrid y el día

14 de Octubre en Buenos Aires, responderá de modo ameno y práctico a estas y muchas otras preguntas fundamentales para que las empresas sean más com- petitivas y exitosas. Business Service Management (BSM) puede ayudar a mejorar los niveles de servicio, reducir costes, prevenir problemas y ga- rantizar la satisfacción de los usuarios.

La experiencia de los ponentes en proyectos de monitorización

multiplataforma aportará a los

asistentes conocimientos y técni- cas útiles para conseguir objetivos demostrables. Se podrán conocer de primera mano las mejores prác- ticas de la industria y sacarles provecho, tanto si se necesita me- dir el rendimiento de los servido- res, como si debe cumplirse una ley (LOPD, SOX) o alcanzar estric- tos niveles de servicio (SLA). Para más información, Telf.: 932.740.051

www.tango04.es/eventos

iSeries Developers Roadmap: Bienvenida de IBM a ASNA C on la inclusión de ASNA en
iSeries Developers Roadmap: Bienvenida de IBM a ASNA C on la inclusión de ASNA en
iSeries Developers Roadmap: Bienvenida de IBM a ASNA C on la inclusión de ASNA en

iSeries Developers Roadmap:

Bienvenida de IBM a ASNA

C on 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 soluciones de 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 de la “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 ambas empresas, IBM y Microsoft. Los usuarios de iSeries que busquen las mejores soluciones para modernizar sus sistemas midrange, ahora pueden estar seguros de que cuentan con el apoyo tanto de

IBM como de Microsoft en sus esfuerzos de migración a .NET Las herramientas de terceros incluidas en el “iSeries Developers Roadmap”, son consideradas como los primeros productos que cum- plen con los rigurosos criterios de la iniciativa para la “Innovación del 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 e innovadoras soluciones eServer. El contar con los productos Windows y .NET de ASNA, es un reflejo del reconocimiento de IBM a la heterogeneidad de los entornos, y del importante papel que actualmente juega .NET en las estrategias de muchas empresas. “IBM reconoce claramente el éxito y adopción de .NET entre las empresas con sistemas iSeries, a menudo a expensas de WebSphere y JAVA” comentó Anne Ferguson, presidenta de ASNA, añadiendo: “Y es correcto, porque añadiendo los productos de ASNA, IBM cubre todas las posibilidades en inte-

El distribuidor de ASNA para España y Por-

rés de sus clientes

tugal es la empresa CaCovai 400. Para más información, Telf.: 902 365 787 - www.cacovai.com

de sus clientes tugal es la empresa CaCovai 400 . Para más información, Telf.: 902 365

”.

AGOSTO-SEPTIEMBRE 2005

ServerNEWS

7

o p i n i o n por Carson A. Soule

opinion

por Carson A. Soule

o p i n i o n por Carson A. Soule RPG ha muerto ¡viva RPG!

RPG ha muerto

¡viva RPG!

C omo fui uno de los primeros (re- lativamente) en usar RPG a principios de los años 70, tuve que aprender a programar yo

solo. En aquel entonces no ha- bía ni clases de programación, ni departamentos de informática

en las universidades

mainframes y trabajaban en Cobol, algo de ensamblador y un poco de Basic para los servicios tiempo compartido. La programació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 en que 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 montones de formularios para cada tipo de especificación y diseño de listados. Los indicadores gobernaban nuestras vidas. Nues-

sólo algunos chicos que utilizaban

bajar con la base de datos y utilizar HTML para la definición de la interfaz. Significa sustituir RPG por un lenguaje nuevo. En estos tiempos de sistemas abiertos y código libre, ¿debería IBM seguir invirtiendo en un lenguaje que probablemente nun- ca sea totalmente “moderno”? ¿Debería invertir en un nuevo len- guaje de formato libre que conquiste tanto los corazones como las mentes de la comunidad de usuarios de RPG? Ninguna op- ción parece lo bastante convincente. Con la desaparición del HP 3000 se ha perdido la única implantación importante que no era de 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 con los navegadores. O si no, debemos utilizar CGIDEV y HTML o 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 interfaces XML y SOA, RPG sólo puede realizar parte del trabajo en las arquitecturas 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 a la generación del baby boom, un linaje de expertos en RPG está a punto de jubilarse. ¿Quién será el abanderado?

El incierto futuro

Tal vez los lenguajes de aplicación general han pasado de moda. 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 áreas relacionadas con la programación. La opción de lenguajes de aplicación específica, como SQL, HTML y XML es mucho más seria. La arquitectura y los lenguajes dirigidos por modelos son 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 cuarenta añ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 no no se pierda el lenguaje que amamos ni que olvidemos las lecciones que nos enseñó, independientemente del debate acer- ca del formato libre. RPG ha muerto. ¡Viva RPG!

tra idea de modularización era leer datos de un archivo, pro- cesarlos, grabar los resultados intermedios en otro archivo y repetir 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 reinado

Una situación tan primitiva no podía durado mucho, pero lo hizo. Perduró durante casi toda la vida útil de los S/3x, sin mejorar hasta la llegada del AS/400: un periodo de casi 20 años. Sí, se mejoraron cuestiones puntuales. Con el S/34 llegaron los termi- 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 entre programas 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 con RPG III y luego con RPG/400, el formato fijo siguió mandan- do. De hecho, el formato fijo está tan profundamente imbricado en el RPG que hasta los conceptos de formato libre se aplican só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 cuenta de 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 formato libre o es algo antinatural. ¿Tiene sentido hablar de formato parcialmente libre? Puede que el formato libre sólo tenga sen- tido si se implementa totalmente. Esto implicaría eliminar los tipos de especificación, sustituir DDS por SQL para tra-

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

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 9
www.help400.es
AGOSTO-SEPTIEMBRE 2005
ServerNEWS
9
DE LAS APLICACIONES CLÁSICAS A LA WEB Y AL COMERCIO ELECTRÓNICO porpor CarlosCarlos BellBell n
DE LAS APLICACIONES CLÁSICAS A LA WEB Y AL COMERCIO ELECTRÓNICO
porpor CarlosCarlos BellBell
n la redacción, aceptando como muy
razonable la afirmación de que “las
empresas equipadas con iSeries dis-
ponen de dos de los más valiosos re-
cursos: sus datos y unos programadores RPG
muy competentes” y con la que me identifico ple-
namente, al preparar el número anterior (el co-
rrespondiente a Junio/Julio) nos quedó claro que
en éste, para complementar la defensa del RPG como
lenguaje polivalente, debíamos mostrar sus posibilidades
reales en un mundo tan interconectado como el actual, donde
las aplicaciones Web han pasado a ser el “pan nuestro” de cada día.
Opciones disponibles

Ante 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 que debemos tener en cuenta si queremos alcanzar el éxito: mini- mizar el tiempo de desarrollo, ofrecer un entorno consistente que no dé lugar a transacciones erróneas, poder comunicar- nos fácilmente con otras aplicaciones y con otras empresas, y ser capaces de mantener el contenido con el mínimo esfuerzo posible. Como es lógico, buena parte del éxito dependerá de la 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 tomar una 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 de aplicaciones en Java. Dentro de las tecnologías abiertas po- dríamos incluir otras que están basadas en lenguajes de scripts como PHP o Perl, junto con MySQL como base de da- tos y la utilización del CGI (Common Gateway Interface) de los servidores de aplicaciones Web, como Apache. De hecho, y al margen de que en su día IBM eligiera Java para el desarrollo Web en el iSeries, en el mercado existen tantas 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 que ya conocemos, el RPG, y aprovechar la experiencia que con él

lo que ya conocemos, el RPG, y aprovechar la experiencia que con él 10 ServerNEWS AGOSTO-SEPTIEMBRE
lo que ya conocemos, el RPG, y aprovechar la experiencia que con él 10 ServerNEWS AGOSTO-SEPTIEMBRE

10

ServerNEWS AGOSTO-SEPTIEMBRE 2005

www.help400.es

hemos adquirido desarrollando todo tipo de aplicaciones em- presariales.

Sea pragmático y utilice el RPG

Aunque el marketing y los intereses creados sean muy agre- sivos, en Febrero de 1997 y con el título de “Acceder a los datos 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 la simplicidad de la Web mediante los lenguajes más clásicos del 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 es

un lenguaje de filosofía similar a la de PHP, es decir, uno o varios scripts de servidor que a través de CGI procesan for- mularios HTML. Detrás, Net.Data puede acceder a DB2/400 vía SQL así como llamar a cualquier ejecutable que esté en el sistema (y que no sea interactivo, claro). Por ejemplo, pode- mos tener una pantalla HTML de petición de un informe, por detrás llamar a un programa RPG que mediante parámetros

o un archivo de trabajo devuelva unos resultados mediante

una página HTML que los presente al navegador del usuario

o que mediante SQL los añada al archivo de trabajo o a la

Base 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, entre otras utilidades de terceros que enmascaran su complejidad, existe una gratuita, la CGIDEV2, basada en un programa de servicio, que permite desarrollar páginas Web muy fácilmen- te utilizando programación RPG CGI.

Web muy fácilmen- te utilizando programación RPG CGI. www.help400.es La rebelión de los disidentes Si uno

www.help400.es

La rebelión de los disidentes

Si uno pregunta en cualquier centro de IBM cómo puede de- sarrollar aplicaciones Web, la respuesta unánime será que con tecnología Java y a través de WebSphere. Como conse- cuencia de este “pensamiento único”, en IBM nadie ha oído hablar de otras posibilidades y alternativas. La utilidad CGIDEV2 fue desarrollada entre 1996 y 1999 por 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 responsable del CTC (Client Technology Center) de IBM en Rochester para que se distribuyera gratuitamente a través de una página web (www-922.ibm.com). Más de 17.000 descargas de 126 paises 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ía 19 de Julio mediante e-mail Perotti solicitó el apoyo de los usuarios de CGIDEV2 para pedir a IBM que otorgara a la aplicació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 eco de 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 documento Pleadings.doc (accesible en easy400.net) y donde se puede ver que 10 de esos mensajes proceden de España. Conste que CGIDEV2 se sigue distribuyendo libremente desde la web de IBM y desde www.easy400.net con acceso a IBM. A mediados de Agosto, IBM había pasado del NO más rotundo al inicio de una valoración de las posibles implica- 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 “iSeries Developer 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 resumen

Como muestra el recuadro adjunto (“Otros artículos rela- cionados”) no es la primera vez que tratamos este tema en

la revista. Durante años, Java ha recibido buena parte de la atención de la prensa especializada por lo que se refiere al

desarrollo de aplicaciones en el iSeries pero

¿por qué apren-

der otro lenguaje si utilizando las APIs disponibles en el iSeries, bien directamente o bien mediante programas de ter- ceros, el RPG ya hace lo que quiero y en menos tiempo que con otras soluciones?

Carlos Bell es colaborador habitual de esta revista.

AGOSTO-SEPTIEMBRE 2005

ServerNEWS

11

por Jef Sutherland Cree páginas web dinámicas sin tener que programar a mano código HTML
por Jef Sutherland
Cree páginas web dinámicas sin tener que
programar a mano código HTML en los
programas escritos en RPG
a mano código HTML en los programas escritos en RPG GIDEV (en realidad, CGIDEV2, que es

GIDEV (en realidad, CGIDEV2, que es la versión má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 los desarrolladores de RPG. CGIDEV2 ofrece un medio de in- cluir páginas HTML en progra-

mas escritos en RPG como si fueran plantillas, llevar a cabo sustituciones de variables y devol- ver páginas HTML. La inclusión de plantillas de HTML significa que no es necesario crear el códi- go HTML escribiendo manual- mente instrucciones en el progra- ma de RPG. Utilizar CGIDEV2 y HTML es tan sencillo como utili- zar DDS para las aplicaciones de pantalla verde. IBM diseñó específicamente el kit

de herramientas para los programadores de RPG que deseen desarrollar aplicaciones web. CGIDEV2 es ILE, de manera que también funciona con Cobol. La herramienta no sólo es fácil de utilizar, sino que en el kit también pueden encontrarse varios ejemplos 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 nuestras aplicaciones web

En KOA utilizamos dos herramientas para el desarrollo de

aplicaciones web. Empezamos con iSeries Net.Data de IBM y seguimos usándola. Para nosotros, Net.Data es el CL del desarrollo web en el iSeries.

Net.Data es fácil de aprender y de utilizar, tiene acceso completo a los archivos de DB/400 median- te sentencias de SQL y ofrece una forma de enviar y recibir datos desde aplicaciones del iSeries. Las macros de Net.Data (es de- cir, los archivos de código fuente) no se compilan. En vez de ello, el servidor HTTP interpreta el ar- chivo de macro, lo que facilita cambiar su código fuente para hace pruebas. Naturalmente, el

CGIDEV2 ofrece un medio de incluir páginas HTML en programas escritos en RPG como si fueran plantillas, llevar a cabo sustituciones de variables y devolver páginas HTML.

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

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 13
www.help400.es
AGOSTO-SEPTIEMBRE 2005
ServerNEWS
13

EN PORTADA

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

Ejemplo de CGIDEV2

Veamos un ejemplo sencillo de cómo utilizar RPG, un poco de HTML y CGIDEV2 para hacer una búsqueda de un artículo, además de usar el navegador como Interface de Usuario (IU). Generalmente, cuando me enfrento a un proyecto, empiezo primero por la IU. Prefiero diseñar la forma en que el usuario interactúa con la aplicación y luego llevar a cabo el desarro- llo del programa. Durante el diseño la IU, todavía no se utili- zan RPG, HTML ni CGIDEV2. Para la aplicación de ejemplo necesito tres páginas de IU. La primera muestra la solicitud para que el usuario escriba el número de artículo (Figura 1). La segunda muestra el re- sultado si se encuentra el artículo (Figura 2). La tercera muestra la página de error que recibe el usuario si no se en- cuentra el artículo (Figura 3). En esta aplicación he utilizado la herramienta de diseño de páginas web de WDSc, Page Designer, que me encanta desde hace mucho tiempo, pero usted puede utilizar la herra- mienta de diseño web que desee. En la Figura 4 puede verse la solicitud de la búsqueda de artículos y las páginas de re- sultados dentro de la herramienta de diseño WYSIWYG de WDSc. El diseño del código HTML es sencillo. En una aplica- ción real, probablemente utilizaría hojas de estilo en cascada (CSS), más colores y otros elementos de diseño. Pero, como puede verse en las Figuras 1, 2 y 3, para la interfaz de usua- 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úsqueda de artículos y de los formularios de resultados. En la Fi- gura 6 se ve el archivo errorforms.html, que contiene el código HTML del formulario de error. CGIDEV2 permite poner 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 puede verse en la Figura 5, he diseñado dos plantillas de formu- lario, initialform y resultform, en el archivo HTML. Más adelante veremos cómo incluir los formularios en un pro- grama escrito en RPG.

incluir los formularios en un pro- grama escrito en RPG. F IGURA 1 Solicitud para que

FIGURA 1

Solicitud para que el usuario escriba el número de artículo que buscar

que el usuario escriba el número de artículo que buscar F IGURA 2 Página de resultados

FIGURA 2

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

Fíjese en los marcadores /%nombre_variable%/, como / %price%/. CGIDEV2 utiliza espacios reservados, de modo que en RPG puedo incluir valores para los nombres de variables. Los espacios reservados pueden considerarse como campos de 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:

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

FIGURA 3

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

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

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

el artículo, mostrar la información de éste (Figura 2). F IGURA 4 Páginas de solicitud de

FIGURA 4

Páginas de solicitud de búsqueda de artículo y de resultados en la herramienta de diseño WYSIWYG de WDSc

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

CGI: qué es y cómo funciona

C GI significa Interfaz común de pasarela y es un medio estándar para un navegador de interactuar con un servidor web que se esté ejecutando en

cualquier plataforma, como Apache en el i5 o Microsoft IIS en Windows. CGI permite ejecutar páginas web dinámicas en las que 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áticas en que las páginas estáticas son iguales cada vez que se muestran. Así es como funciona CGI: en el servidor web, una o más aplicaciones CGI (es decir, programas) permiten que se le hagan peticiones. Cuando las aplicaciones CGI del lado del servidor reciben la petición, la ejecutan y muestran una página de resultados. Normalmente, cuando un servidor

utiliza 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-bin de lado del servidor. En el servidor web, cgi-bin se correlacio- naría con una biblioteca en que residen los programas CGI.A

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

parm2.

La aplicación de la que estamos hablando puede estar escrita en cualquier lenguaje del i5 y, sin duda, RPG sería un buen candidato. La aplicación se ejecutaría en el servidor i5 y tendría acceso a las variables parm1 y parm2. La variable parm1 se enviaría con el valor “12345”, mientras que la variable parm2 se enviaría con el valor “codigopostal”. En la aplicación, se utilizarían las API suministradas por IBM para acceder a las variables enviadas a la aplicación y luego se prepararía una página de resultados que se devolvería al navegador web. La aplicación que acabo de describir requeriría varias API relativamente complejas. Para que se haga una idea de esa complejidad, devolver la salida al navegador con esas API sería parecido a preparar una salida de pantalla verde sin DDS y que esa salida estuviera formada por una serie de caracteres larguísima. Puede hacerse, pero sería una tarea imponente. Esa es la causa de que la primera vez que oímos hablar de CGIDEV en KOA, nos sintiéramos muy interesados por saber más cosas sobre este kit de herramientas.

—J.S.

www.help400.es

AGOSTO-SEPTIEMBRE 2005

ServerNEWS

15

EN PORTADA

En la Figura 7 se muestra el código fuente escrito en RPG del programa ITEMLOOKUP. 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 o una pagina de error, en caso de que no se encuentre. El parámetro action del formulario (en el punto A de la Figura 5) especifica el programa del servidor al que hay que llamar. Examinemos paso a paso el código fuente (las letras utilizadas como se- cuencia se corresponden con las seccio- nes de la Figura 7):

A. Sin duda, CGIDEV2 y RPG permiten acceder de forma sencilla a todos los archivos de DB2/400. He especificado la ubicación del archivo.Generalmente,los programadores que empiezan a traba- jar con CGI o aplicaciones web tiene problemas con las listas de bibliote- cas. Si los archivos no están en la bi- blioteca CGI, habrá que utilizar la palabra clave EXTFILE o actualizar manualmente la lista de bibliotecas del trabajo del servidor web para ase- gurarnos de encontrar los archivos.

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

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

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

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

FIGURA 5

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

/$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"></tr> </table> &nbsp;&nbsp;Item number <INPUT

&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">TYPE="submit" VALUE="Find It!"> </form> </body> </html> /$resultform

</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>

FIGURA 6

Código HTML de la página de error

/$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>

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 para el número del artículo y pulsa Find It!, el campo del formulario Request contiene 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 la base de datos.

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

FIGURA 7 Código fuente en RPG del programa ITEMLOOKUP
FIGURA 7
Código fuente en RPG del programa ITEMLOOKUP
*=====================================================================
A
FITEMS1
IF
E
K DISK
EXTFILE('MYLIB/ITEMS1')
B
*=====================================================================
* Includes to be used in CGIs
*=====================================================================
/copy mysource/CGIDEV2
C
D
imagelink
S
100
D
request
S
10
/free
D
clrhtmlBuffer();
IfsMultIndicators =
GetHtmlifsMult('/itemlookup.html /errorforms.html');
E
// 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';
F
// Get the requested item number from the HTML form.
number=ZhbGetVar('number');
// Get item record.
chain number itemsr;
G
// 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');
H
// If not found, display error page.
else;
updHTMLvar('number': number );
WrtSection('notfound');
endif;
I
// No request was sent, so write the initial request page.
other;
//Write the initial form that asks for an item number.
WrtSection('initialform');
endsl;
J
//Write the end of the form (required with CGIDEV)
WrtSection('*fini');
*INLR = *ON;
/end-free

www.help400.es

G. Si se ha encontrado el número de ar-

tículo, se utiliza el procedimiento updHTMLVar para devolver el valor de la variable de HTML al navegador. Por ejemplo, updHTMLVar(‘desc’ :

descript ); toma el valor de descript y actualiza (es decir, sustituye) cual- quier referencia a /%desc%/ en el for- mulario de salida. Al final del pro- ceso, se utiliza el procedimiento WrtSection 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úmero de artículo, se utiliza el procedi- miento updHTMLVar para actuali- zar /%number%/ en el formulario del mensaje de error y luego se copia el

formulario de error con el procedi- miento WrtSection.

I. Si el campo Request tiene otro valor

distinto 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 indicar que se ha acabado todo el trabajo y que debe devolverse la salida al navegador. Finalmente, un poco de mantenimiento: se cierran todos los archivos.

Cuando repase el código fuente verá que no tiene mucho en cuenta si la apli- cación utiliza la IU de un navegador. Y aunque este ejemplo es bastante senci- llo, en KOA hemos utilizado CGIDEV2 para desarrollar aplicaciones pareci- das a una aplicación de entrada/sali- da de un subarchivo. Estoy seguro de que 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 ejemplos del sitio web sobre CGIDEV2 de IBM

(www-922.ibm.com/easy400p/fra-

mer1.html?url=/cgidev2/start). Así es cómo nosotros aprendimos a utilizar CGIDEV2.

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

AGOSTO-SEPTIEMBRE 2005

ServerNEWS

17

por Bradley V. Stone La programación en CGI permite ofrecer información actualizada a los usuarios
por Bradley V. Stone
La programación en CGI permite ofrecer
información actualizada a los usuarios
finales a través de la Web

a programación de la Interfaz común de pasa- rela (CGI) existe en el iSeries desde hace unos cuantos años. Desde por lo menos el release V3R2, 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 a sus clientes y usuarios. Con tantas opciones disponibles y algunas mucho más comerciales que otras, solemos pasar por alto la mejor so- lución y la más sencilla. Utilizando las APIs disponibles en el iSeries, directamente o me- diante un programa de utilidad de terceros, los programadores que trabajan con iSeries descubrirán que la tecnología que IBM parece

estar intentando eliminar es la úni- ca que realmente tiene sentido utilizar.

La importancia del contacto con la Web

Si no está familiarizado con las aplicaciones web, es bastante probable 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 de automoción. En el pasado, si necesitaba determinada pieza, digamos, por ejemplo, un faro original de un Ford Focus de 1998, 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 ofrecen piezas originales y de segunda mano para casi cualquier marca y modelo de vehículo. Algunas de esas empresas son concesio- narios locales que han ampliado su

negocio de venta de componentes a Internet, aumentando su base de clientes exponencialmente. Localizarlos utilizando un motor de búsqueda es fácil y el resultado final es que recibiremos directa- mente la pieza en nuestro domici- lio. Además, nos ahorraremos un montón de dinero comparándolo con lo que nos habría costado si la hubiéramos comprado en nuestro concesionario local.

Gracias a Internet, ahora las empresas pueden llegar a clientes a los que normalmente nun- ca hubieran podido acceder. Este es sólo un ejemplo entre mil

del papel crucial que tiene Internet en el juego empresarial de 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 empresas crear aplicaciones dinámicas, funcionales e interactivas para

La programación en CGI es lo que permite a las empresas crear aplicaciones dinámicas, funcionales e interactivas para ayudarlas a crecer o para facilitar el trabajo de sus empleados.

www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 19
www.help400.es
AGOSTO-SEPTIEMBRE 2005
ServerNEWS
19

EN PORTADA

ayudarlas a crecer o para facilitar el trabajo de sus emplea- dos. La programación en CGI permite a empresas como eBay tener entornos cambiantes sin necesidad de tener que crear pá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 a cabo, 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 todas las páginas web (por no decir todas) se crean utilizando HTML. También pueden utilizarse otras formas de lenguajes de marcado (como XML o los lenguajes de códigos de disposi- tivos inalámbricos), pero en general utilizaremos páginas web, lo que significa 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. Este contenido pueden ser imágenes, formularios de entrada e in- formación detallada (como la lista de un inventario o toda una 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 escribir programas que creen código HTML dinámicamente para que lo vea un usuario final en tiempo real. De la misma forma que 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 nuestros usuarios 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. Los programas en CGI pueden escribirse en muchos lenguajes de programación distintos, incluyendo RPG, Cobol, Java y C. Cada uno de esos lenguajes dispone de herramientas que les permiten enviar contenido creado dinámicamente a un navegador web. Así que, en cierto sentido, toda la progra- mación en CGI consiste en crear series de datos (en este caso, código HTML) y luego en introducir esos datos en una

pá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 esos atributos es la destreza de la persona que cree el código HTML. Estos lenguajes de programación en CGI también dispo- nen de herramientas que les permiten leer la información de una página web. Si alguna vez ha estado en una página web donde 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 ha visto CGI en acción. Para que un programa pueda responder

a su interacción o leer la información de un formulario en

lí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 hacen más que lo que hemos hecho todos antes utilizando pantallas verdes o informes. La única cosa que ha cambiado es que ahora debemos interactuar con un navegador web en lugar de con una pantalla ver- de. Seguimos leyendo información de la interfaz y devolviendo infor- mación a esa interfaz.

Los programas en CGI pueden escribirse en muchos lenguajes de programación distintos, incluyendo RPG, Cobol, Java y C.

Aplicaciones web y comunicación

La siguiente pieza del rompecabezas que hemos de tener en

cuenta es la interacción entre el navegador web del usuario y

el iSeries.

Esta interacción se realiza utilizando un servidor web, tam- bién conocido como servidor HTTP. Un servidor web no es nada más que un trabajo o un grupo de trabajos que se ejecu- tan en segundo plano en el iSeries esperando peticiones y luego respondiéndolas. Las peticiones hechas al servidor web se hacen cuando un usuario escribe (o pulsa en) un enlace que contiene un URL que apunta al iSeries. Esta conexión se hace porque en todo URL hay un nombre de dominio (o dirección IP). Por ejemplo, “miempresa.com” es un nombre de dominio. Este nombre de dominio apunta a una dirección IP. La dirección IP se asigna al iSeries (o a un cortafuegos 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ón puede ser en forma de una página web estática o el resultado de ejecutar un programa CGI, que crea la información de la página web en tiempo real. En el iSeries tenemos dos opcio- nes para un servidor web. La primera posibilidad, que ya no es una opción viable en las máquinas con el release V5R3 o posterior 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 el famoso servidor web Apache que utilizan la mayoría de las máquinas en Internet en la actualidad. Con el servidor web se pueden establecer configuraciones para que el servidor web sepa qué hacer con determinadas

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 salida

Los programas en CGI funcionan con un entorno que es bas- tante nuevo para casi todos los programadores que trabajan con iSeries. Pero si aprende cómo funcionan esos programas en CGI, será capaz de crear mejores aplicaciones. Cuando los programas en CGI crean y copian contenido diná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 se envían los datos si no se especifica otra salida (por ejemplo, una im- presora). En la terminología de la programación en CGI, escribir da-

tos en una salida estándar signifi- ca que los datos se guardan en una ubicación a la que el navegador web del usuario visitante puede acceder y que luego puede utilizar para visualizar una página web. Cuando un usuario solicita un archivo HTML estático (creado previamente) al servidor web, no

hay 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 la salida estándar y los datos aparecen en el navegador web del usuario. Cuando un usuario hace una petición a un programa CGI, el servidor web ejecuta ese determinado programa CGI. Éste crea el código HTML dinámicamente en tiempo real y graba esos datos en la salida estándar donde, a continuación, el navegador web del usuario visualizará los datos como una página web. La entrada que se lee de una página web, por otro lado, se obtiene de dos formas distintas. La entrada normalmente son datos que se leen de lo que se conoce como un formulario de pá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 se conoce como entrada estándar. Cuando se leen los datos de la entrada estándar se hace desde el cuerpo de la solicitud. No es importante entender completamente esto. Lo que sí es importante es entender la diferencia entre entrada estándar y el otro método de entrada. La segunda forma en que se leen los datos es desde lo que llamamos variables de entorno. En el caso concreto de los datos de un formulario, se utiliza una variable de entorno conocida como QUERY_STRING. Esto significa que los datos se pasan con el URL de la petición. Si alguna vez se ha fijado en la barra de situación del navegador web, habrá visto una serie de datos que se incluyen en el URL después del nombre de dominio (generalmente precedidos por un signo de interro-

gación). Los datos que se ven allí son la variable de entorno QUERY_STRING. No es totalmente necesario entender estas dos formas de entrada, pero sí que es importante entender qué método se está utilizando para poder determinar qué API usar para leer los datos que se envían con una página web.

GET o POST

En la sección anterior hemos explicado dos métodos de leer

datos de una página web, casi siempre mediante el uso de un formulario de página web. La forma en que un formulario enví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 especifique al crear un formulario de página

web o incluso un hiperenlace. Cuando se crea un formulario de página web, normalmente se espe- cifica un identificador de método para ese formulario. Con ese identificador 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 la variable de entorno QUERY_STRING. Los datos también pueden pasársele a un programa CGI mediante la variable de entorno QUERY_STRING simplemente incluyendo datos a continuación de un hiperenlace en una página web. El método POST especifica que los datos del formulario deben pasarse al programa que los procesará mediante la entrada estándar. Esta es la razón por la que es importante que el programa que procesa los datos sepa qué método -GET o POST- se está utilizando. El programa debe saber qué API utilizar para leer los 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 entorno REQUEST_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 pueden ser confidenciales o si su tamaño es de unos pocos kilobytes. En estas situaciones, deberá utilizar el método POST. Como utilizando el método POST los datos que se pasan forman parte de las cabeceras de la petición HTTP, éstos no son visibles inmediatamente por el navegador web del usuario. Pero seguirán estando a disposición del programa que los procesará.

Las API disponibles de CGI

El iSeries incluye de serie un conjunto de API gratuitas que pueden utilizarse para crear páginas web e interactuar con ellas. Si está familiarizado con el uso de las API, no

Una vez conocido el método de petición, ejecutar la API adecuada para leer los datos no es ningún problema.

www.help400.es

AGOSTO-SEPTIEMBRE 2005

ServerNEWS

21

EN PORTADA

tendrá problemas con ellas. Si no lo está, piense en ellas como si fueran programas suministrados por IBM a los que basta con “llamar” desde el programa para que ejecu- ten una función. Estas API se incluyen en un programa de servicio llamado QZHBCGI, que se encuentra en la biblioteca QHTTPSVR. Si utiliza el mandato DSPSRVPGM (Visualizar programa de servicio) 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ás cosas acerca de las API, puesto que aquí sólo le daremos una breve 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 desea grabar datos a una página web. Basta con crear una serie de caracteres 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 navegador web. Esta API puede llamarse muchas veces sucesivamente, por lo que no hay que preocuparse por tener que crear una página web completa de una sola vez. Por el contrario, puede crearla por secciones, llamando a la API QtmhWrStout tan- tas veces como sea necesario. Otra API muy utilizada es QtmhGetEnv (Obtener variable de entorno). Esta API recupera el valor de una variable de entorno. Esta API puede utilizarse para recuperar el valor de los campos de un formulario web enviado utilizando el método GET. Los datos estarán disponibles en la variable de entorno QUERY_STRING, en pares campo/datos, donde cada par campo/datos está separado por el símbolo &. Para leer datos de un formulario que utiliza el método POST deberí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 la API QtmhCvtDB (Convertir a base de datos) para convertir los 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 en estructuras de datos fáciles de usar que no sólo dan acceso directo a todos los campos y a su contenido, sino que también llevan a cabo las conversiones de tipos de datos necesarias. Estas conversiones de tipos de datos son necesarias porque todos los datos leídos en una página web están en formato de tipo carácter. Otra API útil es QzhbCGIParse (Analizar datos de CGI). Esta API permite leer los datos de un campo de un formula- rio simplemente especificando el nombre del campo del que se desean recibir los datos. Esta API hace que la programa- ción en CGI en el iSeries sea mucho más sencilla.

Primeros pasos

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

22 ServerNEWS AGOSTO-SEPTIEMBRE 2005

(“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 que son 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 e inclusiones 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 con RPG para crear aplicaciones web. Saltarnos estos temas es como intentar conducir un coche sin saber cómo se utiliza el volante. 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, aunque existen otros en el mercado. Estos kits de herramientas per- miten externalizar el código HTML y hacen que actualizar las aplicaciones sea coser y cantar. Espero que este artículo haya despertado su interés por una posible solución para que el equipo empiece a escribir aplicaciones web en el iSeries. Como hablo con cientos de personas 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 web en RPG se está haciendo popular es porque hay algunos que se ponen en contacto conmigo y me dice que “nuestro socio nos 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 mentira descarada (o de un malentendido, concedámosles el beneficio de la duda). Cualquiera que tenga el mínimo conocimiento del 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 ser capaz 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 la exitosa serie de libros “e-RPG”, que puede verse en bvstools.com/erpg.También es el creador del kit de desarrollo de software eRPG (eRPG SDK), que puede obtenerse en erpgsdk.com. Bradley es propietario de BVSTools.com, donde ofrece software alternativo de bajo coste así como cursos de formación y servicios de consultoría para el iSeries desde hace más de diez años.

www.help400.es

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

Sobre las interfaces de usuario

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

por Jef Sutherland

¿ A cuántas interfaces de usuario (IU) se enfrenta cada

día? Despertadores, relojes, cafeteras, hornos

microondas, teléfonos, contestadores, teclados para in-

son sólo unos

troducir códigos de seguridad, coches

cuantos 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 ordenador y mirar a la pantalla. La forma en que los aparatos eléctricos suelen presentar la información a los humanos a menudo decide el destino y la

utilidad del dispositivo. Por supesto, lo mismo ocurre con las aplicaciones.

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 IU

Para los desarrolladores que trabajan con el iSeries que tie- nen más experiencia (yo no he dicho “viejos”), las decisiones de diseño sobre la interfaz de usuario solían ser más fáciles porque había un solo dispositivo con el que interactuar. El mé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 IBM les habían suministrado un maravilloso juego de estándares llamado SAA (Arquitectura para aplicaciones de sistemas)

Como desarrolladores, podemos tener la mejor lógica y las mejo- res rutinas de proceso bajo
Como desarrolladores, podemos
tener la mejor lógica y las mejo-
res rutinas de proceso bajo la
interfaz de usuario, pero si ésta
no obtiene la información correc-
ta de los usuarios o no se la pre-
senta de forma inteligible, habre-
mos despilfarrado la inversión
realizada en la aplicación. La
interfaz de usuario es vital y no
debe tomarse a la ligera.
que especificaba desde cuál debía
ser la apariencia que debía tener
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
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 del
iSeries básicamente siguieron
trabajando con las mismas filas
y
columnas, pero ahora maneja-
das mediante la emulación de
Las dos partes de una IU
terminales. Apenas había que hacer cambios, aunque hubie-
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 con
Microsoft Windows y se ponía a disposición de los
desarrolladores interesantes herramientas de desarrollo para
PC (como Visual Basic de Microsoft), a éstos se les ofreció un
nuevo conjunto de herramientas gráficas para la interfaz de
usuario, como ventanas múltiples, botones, recuadros de se-
Si descomponemos una IU, veremos que se compone de dos
partes. La primera es el dispositivo o aplicación utilizado para
presentar la información. Suelo pensar en ellos como los mé-
todos. Tanto si se trata del teléfono móvil como de Netscape
Navigator, la información se obtiene y se recopila a través de
esos métodos. La segunda parte es la forma en que se le pre-
senta la información al usuario. Coja dos teléfonos móviles
distintos y verá dos presentaciones diferentes de la informa-
ción. Utilice Navigator para ir a Google y Yahoo! Y verá dos
presentaciones 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 plataformas
má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 como
desarrollador del iSeries tiene ventajas cuando hablamos de
métodos de interfaces de usuario y opciones de presentación.
Pero recuerde que tanto si se trata de interfaces de usuario
lección, menús desplegables, recuadros de listas, botones de
selección y hasta fotos. El método de la interfaz fue más allá
de la emulación de terminales; convirtió todo el escritorio del
PC en una opción. Se desarrollaron aplicaciones cliente-ser-
vidor que permitían una nueva forma de presentación para
la misma información que antes se había mostrado en una
IU basada en texto.
El siguiente método de IU, y puede que el más reciente, es
el navegador. Hoy en día, el navegador no es meramente el
método para acceder a Internet
es el método de IU más
utilizado. Los navegadores han proliferado y ahora se pue-
den encontrar fuera del escritorio del PC, en los teléfonos
24
ServerNEWS AGOSTO-SEPTIEMBRE 2005
www.help400.es
Management
móviles y hasta en las neveras. Los navegadores generalmente usan lenguajes de códigos, como HTML,

móviles y hasta en las neveras. Los navegadores generalmente usan lenguajes de códigos, como HTML, para crear la parte

de la presentación, o son una fuente en la que copiar un applet desde un servidor para ofrecer la interfaz. Una pregunta que se hacen muchos desarrolladores de iSeries es si sus IU basadas en texto son arcaicas e inútiles comparadas con los navegadores y sus GUI. La respuesta es

Una vez más, la respuesta podría ser

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

que sí. Bueno, espere

de 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 pretende vendérsela a nadie. Al final, puede que tenga una apariencia agradable a la vista, pero si no funciona mejor habrá derro- chado el dinero de su empresa. La entrada de registros hora- 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 IU basadas en texto, incluso aunque la aplicación esté basada en PC. Ahora, volviendo a la idea de que los desarrolladores que trabajan 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 visualizar una IU gráfica. Como se explica en el artículo “Programación en CGI y el iSeries” (página 18), si decide utiliza CGI, podrá seguir trabajando con RPG como lenguaje de desarrollo para las IU. Y en caso de que desarrolle aplicaciones en Java, el artículo “Aplicaciones Java basadas en web: consideraciones tecnológicas”, que encontrará en la página 34, muestra cómo utilizar JSP y servlets. Explore estos métodos para el desarrollo de interfaces de usuario. 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 los servicios de información de Kampgrounds of America, Inc., Billings (Montana).

Management Suscríbase a y recibirá gratuitamente el suplemento técnico www.help400.es AGOSTO-SEPTIEMBRE 2005
Management
Suscríbase a
y recibirá
gratuitamente
el suplemento
técnico
www.help400.es
AGOSTO-SEPTIEMBRE 2005
ServerNEWS
25
Mejor portabilidad: introducción al “Enterprise Generation Language” por George Farr, Phil Coulthard y Kushal Munir

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

por George Farr, Phil Coulthard y Kushal Munir

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

desarrollo de Java, de mayo de 2005) describimos el desarrollo

de aplicaciones portables utilizando las herramientas de desa- rrollo para Java proporcionadas por WebSphere Development Studio Client (WDSc). En artículos anteriores nos hemos cen- trado en las herramientas de WDSc para desarrollar aplicaciones de interfaz de usuario para la web.

En este artículo seguiremos con nuestra explicación del cuarto paso de este itinerario, el que trata sobre una mejor portabilidad. Además de Java, otra tecnología llamada Enterprise Generation Language (EGL) puede ayudarnos a desarrollar aplicaciones portables. Empezaremos viendo qué es EGL. Después, pensaremos cómo permite que las aplicaciones sean portables y valoraremos cuáles son sus ventajas.También examinaremos algu- nas de las herramientas específicas para trabajar con EGL que existen en WDSc y cómo pueden utilizarse para desarrollar 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 partir de un lenguaje procedural que se utilizaba en VisualAge Generator, un antiguo producto de IBM. La versión actual de EGL permite utilizar un sencillo lenguaje procedural para crear 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 o en el contexto de uno de los siguientes contenedores de J2EE:

Después de crear un programa de EGL se genera el código fuente en Java o en Cobol a partir de él. Como lenguaje, EGL es un cruce entre Cobol y Java. Aunque es procedural, tiene elementos de constructores del lenguaje Java. Es un lengua- je sencillo pero potente que oculta muchos detalles de la implementación para permitir que el desarrollador se con- centre en resolver el problema y que llegue rápidamente a una solución que funcione. También puede utilizarse para el

desarrollo rápido de aplicaciones (por ejemplo, para crear un prototipo de una aplicación de gran ta- maño). El propio lenguaje no es nada restrictivo y puede usarse para desa-

Desarrollo en J2EE Mejor escalabilidad Mejor portabilidad Mejor arquitectura Mejor interfaz Mejores herramientas
Desarrollo en J2EE
Mejor
escalabilidad
Mejor
portabilidad
Mejor
arquitectura
Mejor
interfaz
Mejores
herramientas

rrollar aplicaciones completas.

¿Cuán portable es EGL?

EGL permite escribir aplicaciones portables porque oculta los siguientes detalles de la implementación:

Plataforma. EGL es un lenguaje de alto nivel y proporciona API indepen- dientes de la plataforma de manera que el programador no tiene que preocupar- se de las dependencias específicas de

cada plataforma o de las diferencias entre ellas. El código en Java generado se puede ejecutar en una plataforma iSeries, Windows, Linux o Unix, y el código en Cobol únicamente en el iSeries. Nivel de especificación. Los desarrolladores no tienen que preocuparse del nivel del código generado. Por ejemplo, si se está 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 los niveles 1.1, 2.0, etcétera, por ejemplo. Si desea utilizar otro nivel de especificación, simplemente especifíquelo y vuelva a generar el código. Almacenamientos de datos. Puede concentrarse en el pro- blema de la empresa que está intentando resolver en vez de hacerlo en las complejidades técnicas de los almacenamientos de datos como, por ejemplo, el acceso a la base de datos, SQL,

CICS o MQSeries. Se pueden utilizar instrucciones de E/S parecidas para acceder a distintos tipos de almacenamientos de datos externos, sean éstos archivos, bases de datos relacionales o colas de mensajes. Esto permite manejar los futuros cambios en el almacenamiento de datos sin tener que remodelar apenas el código.

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

ServerNEWS AGOSTO-SEPTIEMBRE 2005

www.help400.es

Management www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 27 ▲ ▲ ▲
Management
www.help400.es
AGOSTO-SEPTIEMBRE 2005
ServerNEWS
27
■ INTRODUCCIÓN AL “ENTERPRISE GENERATION LANGUAGE” Ventajas de utilizar EGL En el artículo anterior sobre

INTRODUCCIÓN AL “ENTERPRISE GENERATION LANGUAGE”

Ventajas de utilizar EGL

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

Herramientas para trabajar con EGL

WDSc ofrece un completo juego de herramientas para el de- sarrollo en EGL. Esas herramientas pueden utilizarse para editar, ejecutar, depurar, generar y crear aplicaciones en EGL (es decir, todo el ciclo del desarrollo de una aplicación). EGL puede utilizarse para desarrollar aplicaciones autónomas en Java o aplicaciones web.

Para empezar

Como 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

Estas son opciones globales que se aplicarán a todos F IGURA 1 Preferencias de EGL FIGURA

FIGURA 1

Preferencias de EGL

FIGURA 2
FIGURA 2

Asistente Nuevo proyecto web de EGL

los proyectos de EGL. Para acceder al recuadro de diálogo de preferencias, 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 del usuario de la base de datos). También debería establecer las clases necesarias para el depurador (por ejemplo, el controla- dor JDBC de la base de datos).

ServerNEWS AGOSTO-SEPTIEMBRE 2005

www.help400.es

Crear un proyecto de EGL El paso siguiente es crear un proyecto de EGL, que

Crear un proyecto de EGL

El paso siguiente es crear un proyecto de EGL, que conten- drá el código fuente de EGL de la aplicación. Para crear un proyecto nuevo en WDSc, seleccione Archivo|Nuevo|Proyecto. Esto muestra en pantalla el recuadro de diálogo Proyecto nuevo. Seleccione EGL a la izquierda del recuadro de diálo- go. Pueden crearse dos tipos de proyectos de EGL: Proyecto de EGL o Proyecto web de EGL. Si va a desarrollar una apli- cación autónoma en Java deberá utilizar el tipo Proyecto de EGL. Utilice Proyecto web de EGL para las aplicaciones web que contengan componentes JSP, Java Server Faces (JSF) y servlets. Cuando haya seleccionado el tipo de proyecto EGL, pulse Siguiente. Esto le llevará a la primera página de un asisten- te donde puede especificarse el nombre del proyecto de EGL y la plataforma de ejecución de destino, que debe ser Java (Figura 2). Si va a crear un proyecto web, puede seleccionar Configurar 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 opciones posibles 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 una plantilla de estilo por omisión para el sitio web. Escriba un nombre 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 tiene algunas 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 y web 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 los archivos de Java generados. Navigator es una vista genérica que permite trabajar con cualquier proyecto en WDSc. Tareas muestra los errores de compilación y cualquier ta- rea que especifique el usuario. En el caso de los errores de compilación, puede pulsarse dos veces en la vista Tareas para abrir automáticamente en un editor el fuente donde se ha producido el error. Esquema muestra el esquema del archivo abierto en el edi- tor. Esto permite saltar rápidamente a secciones concretas del fuente en el editor. Si, por otra parte, crea un proyecto web de EGL, WDSc le preguntará si desea cambiar a la perspectiva Web de EGL. Esta perspectiva es parecida a la perspectiva EGL pero tiene unas cuantas vistas más pensadas para ayudar a desarrollar un 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 haya desarrollado, que puede simplemente arrastrar y soltar para crear 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, los registros SQL de EGL. Galería contiene una lista de imágenes, elementos multimedia (audio y animación), hojas de estilos y plantillas de 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 que pueden arrastrarse hasta cualquier página HTML o JSP abierta 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 hay dos carpetas bajo el proyecto en la vista Project Navigator. Cree archivos fuente de EGL en la carpeta EGLSource y cree archivos fuente de Java (incluyendo los archivos fuente ge- nerados) en la carpeta JavaSource. Para un proyecto web de EGL, el fuente de Java se encuentra en la carpeta Java Resources. En la Figura 3 puede verse un entorno de un proyecto 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 EGL

Un proyecto de EGL puede contener uno o varios archivos de EGL. Un archivo de EGL contiene un conjunto de partes que son unidades de declaración de la declaración global del pro-

grama. Las partes pueden declararse en el orden que se quiera

y a todas se les puede asignar un nombre. Las partes pueden

categorizarse 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 una estructura, que es una presentación jerárquica de elementos de una estructura, cada uno de los cuales se corresponde con un á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 llamado desde otra función. La función que contiene el primer códi- go del programa se llama main (principal). Una función es parecida 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 de mostrar la página. El propio manejador de páginas incluye variables 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 pageHandler se genera automáticamente cuando se usan los asistentes de JSF y EGL, pero tendrá que añadir su propio código escrito en EGL para implementar la lógica.

www.help400.es

AGOSTO-SEPTIEMBRE 2005

ServerNEWS

■ INTRODUCCIÓN AL “ENTERPRISE GENERATION LANGUAGE” • una parte de biblioteca, que es un conjunto

INTRODUCCIÓN AL “ENTERPRISE GENERATION LANGUAGE”

• una parte de biblioteca, que es un conjunto de funciones y variables generadas y compiladas independientemente de los programas o los manejadores de páginas. El programa puede tener libre acceso a los recursos de la biblioteca.

Partes de construcción: definen el proceso de generación. Los descriptores de construcción se crean automáticamente cuando se crea un proyecto de EGL. Cada aplicación debe tener un descriptor de construcción asociado, que incluye in- formación sobre la forma en que se generará la aplicación (por ejemplo, si código que se ha de generar es Java o Cobol, información sobre cómo acceder a la base de datos, etcétera). Para crear una parte de datos, pulse con el botón derecho del ratón sobre la carpeta EGLSource y seleccione Nuevo|Ar- chivo fuente de EGL. Aparecerá el recuadro de diálogo Nue- va parte de EGL. Especifique un nombre para el archivo fuen- te. Al nombre del archivo se le asignará automáticamente la extensión .egl. Para crear una parte de programa de EGL, pulse con el botón derecho del ratón sobre la carpeta SourceEGL y seleccione Nuevo|Programa. Los descriptores de construcción se definen en un archivo con la extensión .eglbld. Entre las herramientas para trabajar con EGL de WDSc se encuentra un editor de partes de EGL que puede utilizarse para cambiar las opciones de construcción (es de- cir, de generación del código). Pulse dos veces en un archivo con extensión .egl para abrirlo en el editor de EGL. Éste con- tiene muchas funciones que le ayudarán a simplificar las ta- reas de desarrollo. Estas son algunas de las más destacadas:

Resaltado sintáctico: el editor resalta varias secciones del código fuente para facilitar su lectura. Las palabras clave, los tipos de datos, las series de caracteres y los comentarios se resaltan con colores distintos. Asistente de contenido: Al pulsar Ctrl+espacio en el editor aparece una lista de opciones que pueden añadirse al archi- vo. Por ejemplo, en la Figura 4 se muestra cómo añadir un registro de SQL a un archivo fuente de EGL utilizando el asistente de contenido. Fíjese que para cada opción propues- ta se ofrece una descripción de esa opción. Plantillas de EGL: cuando se utiliza el asistente de conte- nido para añadir un bloque de código al archivo fuente, el editor utilizar una plantilla previamente definida para la opción elegida. Puede consultar o modificar las plantillas de varios constructores en Preferencias; basta con seleccionar EGL|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 un esquema jerárquico del código escrito en EGL que puede uti- lizarse para identificar rápidamente secciones concretas del có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 la vista Tareas. En esa vista, pulse dos veces sobre un error para abrir el código en la posición en que se ha producido el error. Por último, si tiene muchos proyectos de EGL o muchas

Por último, si tiene muchos proyectos de EGL o muchas F IGURA 3 Típico entorno de

FIGURA 3

Típico entorno de un proyecto web de EGL

muchas F IGURA 3 Típico entorno de un proyecto web de EGL F IGURA 4 Añadir

FIGURA 4

Añadir un registro de SQL utilizando el asistente de contenido

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

Ejecutar y depurar aplicaciones de EGL

Para ejecutar o depurar una aplicación, WDSc requiere que el usuario cree una configuración de inicio. Con EGL, puede utilizarse el depurador interpretativo de EGL para depurar el 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, pulse con el botón derecho del ratón en un archivo de programa de EGL y seleccione Depurar programa de EGL para iniciar el depurador. 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-

ServerNEWS AGOSTO-SEPTIEMBRE 2005

www.help400.es

Management www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 31 ▲ ▲ ▲
Management
www.help400.es
AGOSTO-SEPTIEMBRE 2005
ServerNEWS
31
■ INTRODUCCIÓN AL “ENTERPRISE GENERATION LANGUAGE” rrupción, las variables, sus valores y una vista de

INTRODUCCIÓN AL “ENTERPRISE GENERATION LANGUAGE”

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

Generar Java a partir de EGL

Ahora que ya ha escrito y depurado su aplicación escrita en EGL es el momento de generar el código en Java a partir de ella. Con ese fin, pulse con el botón derecho del ratón sobre la carpeta EGLSource y seleccione Generar. Esto generará código en Java para todas las partes de EGL. El resultado de esa generación aparece en la vista Resultados de la generación de EGL. Para generar solamente determinadas partes de EGL, pul- se con el botón derecho del ratón sobre la carpeta EGLSource y seleccione Generar con asistente. Esto hará que aparezca un asistente en el que podrá seleccionar un subconjunto de partes. Además, puede pulsar con el botón derecho del ratón sobre un archivo fuente de EGL y seleccionar Generar o Ge- nerar con asistente para generar código en Java a partir de todas las partes del archivo fuente o de un subconjunto de ellas, respectivamente.

Simple y rápido

El 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 portabilidad entre 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 en Cobol. En el caso de Java, la aplicación puede ser autónoma o una aplicación web. Si se decide a desarrollar aplicaciones utilizando EGL y a dar el paso hacia una mejor portabilidad tal y como se esboza en el itinerario para los desarrolladores del iSeries, le reco- mendamos que utilice las herramientas de EGL que propor-

FIGURA 5
FIGURA 5

Recuadro de diálogo Plantillas de EGL

FIGURA 6
FIGURA 6

Definición de un punto de interrupción en la perspectiva Depurar

ciona WDSc. El completo juego de funciones incluido con el producto, 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 de IBM desde 2001. participa en el diseño, desarrollo y comprobación de las herramientas Explorador de sistemas remotos (RSE) que se incluye con WDSc. Phil Coulthard trabaja en el laboratorio de Toronto de IBM como arquitecto jefe del equipo de desarrollo de herramientas y lenguajes para el desarrollo de aplicaciones para el iSeries. George Farr trabaja en el laboratorio de Toronto de IBM como director de desarrollo técnico de los lenguajes de programación RPG y VisualAge para RPG y de las nuevas herramientas de WDSc para RPG y Cobol.

ServerNEWS AGOSTO-SEPTIEMBRE 2005

www.help400.es

Management www.help400.es AGOSTO-SEPTIEMBRE 2005 ServerNEWS 33 ▲ ▲ ▲
Management
www.help400.es
AGOSTO-SEPTIEMBRE 2005
ServerNEWS
33
Aplicaciones Java basadas en web Consideraciones tecnológicas: escoja sus armas sabiamente antes de empezar a

Aplicaciones Java basadas en web

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

por Don Denoncourt

A ntes de que su empresa se embarque en 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 la

té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 de Sun, 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 para sus aplicaciones.

JavaScript se utiliza para realizar operaciones de edición en el lado del cliente y para animar la IU del navegador (con cosas como menús que se desplazan por la ventana y HTML dinámico). Hay que comprender que las ediciones del código escrito en JavaScript –así como las más sofisticadas operaciones de va- lidación y manejo de errores– también deben programarse en Java en el lado del servidor de la aplicación. Esta indiscu- tible redundancia en el código aumenta la complejidad de la aplicación, pero a veces es necesaria para reducir el tiempo de ida y vuelta hasta el servidor.

Páginas JavaServer

Una página JSP es HTML con código Java incrustado. Pue- den escribirse aplicaciones web totalmente en JSP. He visto algunas. Lo que no he visto es aplicaciones escritas única- mente en JSP que puedan mantenerse. La experiencia nos dice que debe haber tan poco código escrito en Java como sea posible. Sirva de ejemplo el fragmento de código escrito en JSP de la Figura 1. El código escrito en Java que contiene es moderadamente complejo; sirve para procesar una lista de objetos Customer (Cliente) y ni siquiera muestra el código JSP 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 JSTL

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

HTML y JavaScript

Independientemente de la fiabilidad demostrada a lo largo de tanto tiempo de la interfaz 5250 del iSeries, HTML es la nueva interfaz de usuario. Las aplicaciones basadas en HTML ofrecen 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 por eventos como una GUI de Windows. Cuando un usuario pul- sa el botón Enviar, todos los datos de entrada del panel se envían al servidor. Ahí es donde entra en escena JavaScript. JavaScript (que no 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 puede hacer para responder a un evento. No puede acceder a una base de datos. No puede grabar a disco. No puede ejecutar programas escritos en RPG. Todo lo que puede hacer JavaScript es modificar la información mostrada con HTML.

ServerNEWS AGOSTO-SEPTIEMBRE 2005

www.help400.es

F IGURA 1 Ejemplo de una aplicación escrita únicamente en JSP <table>

FIGURA 1

Ejemplo de una aplicación escrita únicamente en JSP

<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>

FIGURA 2

Página de JSP que utiliza códigos básicos de JSTL y expresiones de EL

<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>

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

a JSP 2.0 y a Servlet 2.4. Los códigos HTML de JSTL pueden agruparse en cuatro categorías:

• Básicos

• Manipulación de XML

• SQL

• Internacionalización y formato

Junto con esos cuatro juegos de bibliotecas de códigos, JSTL incluía una característica nueva llamada Lenguaje de expre- sión (Expression Language, EL). EL permite utilizar a los autores de páginas una sintaxis más sencilla para que pue- dan manipular datos de aplicación. En la Figura 2 puede verse una página de JSP que incluye el uso de códigos de JSTL 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 en Java 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 de

2003):

“MVC divide una aplicación en tres componentes: el mode- lo de la lógica de empresa, la vista o IU y un controlador que los relaciona a los tres. El objetivo es separar la vista del modelo para que los cambios que se produzcan en la primera no afecten al segundo y viceversa. El controlador permite esta separació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 controlador correlaciona, de forma estándar, el flujo de información y los eventos entre la vista y el modelo. Por lo que hace al diseño, esto significa que los cambios en los controles o en los elementos individuales de la IU no afec- tan al modelo. Por lo que hace a la arquitectura, significa que los cambios en el cliente no afectan al modelo.” El resultado de emplear la técnica de diseño MVC es que el código escrito en JSP es más fácil de mantener por los pro- gramadores que no saben Java. Además, el código puede mantenerse con diferentes editores WYSIWYG, como Dreamweaver, FrontPage o WebSphere Development Studio Client (WDSc). Las aplicaciones MVC también pueden ser “refactorizadas” más fácilmente. Y, lo que tal vez sea más importante, los componentes de la lógica de la empresa pue- den comprobarse –sin utilizar la capa de presentación– utili- zando metodologías de comprobación de facto como JUnit (junit.org) y de comprobación automática con Ant. Encontra- rá más información sobre JUnit en la web. MVC no es un producto ni una especificación de Sun; es una técnica de diseño, una estrategia estándar para separar la presentación de la programación. Pero no intente crear su propia arquitectura MVC. Ya se ha hecho. Hay más de una docena de infraestructuras MVC de código libre, pero la que se ha convertido en un estándar de facto es Jakarta Struts.

Jakarta Struts

Struts 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 sido generalizada. De hecho, todos los IDE de Java más impor- tantes son compatibles con Struts. Struts proporciona una infraestructura para una aplicación web. Gestiona el flujo de una 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 hasta las 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 de Struts” (publicados en los números 147 y 148, de octubre y noviembre de 2004, respectivamente) o el libro “Programming Jakarta Struts”, de Chuck Cavaness (O’Reilly, 2004).

www.help400.es

AGOSTO-SEPTIEMBR 2005

ServerNEWS

■ APLICACIONES JAVA BASADAS EN WEB A parte de su arquitectura de control de la

APLICACIONES JAVA BASADAS EN WEB

A parte de su arquitectura de control de la aplicación y de otras características muy interesantes, Struts tiene dos re- cursos que me gustaría destacar. El primero es un conjunto de bibliotecas de códigos de JSP. Estos prácticos códigos sim- plifican el desarrollo de JSP. Uno de mis códigos favoritos de Struts es iterate. En la Figura 3 puede verse un fragmento de código escrito en JSP en que se usa el código iterate para mostrar 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 poner la semántica de validación en un archivo de configuración XML. Y hay que señalar que la infraestructura de validación de Struts puede generar código en JavaScript, eliminando por lo tanto el problema de programación por duplicado que mencionaba antes.

JavaServer Faces

La especificación JSF es la más reciente de las tecnologías que se describen en este artículo. Se publicó formalmente en marzo de 2004. A primera vista, JSF parece la competencia de Struts. Y es curioso, porque uno de los promotores de la especificación JSF, Craig McClanahan, es el creador original de Struts. Pero mientras que Struts es una infraestructura para desarrollar aplicaciones web, JSF es una infraestructu- ra para interfaces de usuario. Struts maneja el flujo de una aplicació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 modo que Struts y JSF se solapan, pero las características de IU de JSF eclipsan las de Struts. Eso no significa que no puedan utilizarse Struts y JSF a la vez. De hecho, actualmente Jakarta tiene un proyecto llamado Struts-Faces que ayuda a combinar ambas tecnologías. (Craig McClanahan es arquitecto de Sun Java Studio Creator –un rival de WDSc. Puede leer sus opiniones sobre JSF y Struts en blogs.sun.com/roller/page/craigmcc/

20040927).

Como pasa con JSTL y Struts, JSF tiene un conjunto de códigos HTML. Pero JSF es mucho más que un conjunto de

FIGURA 3

Fragmento de código escrito en JSP que utiliza el código iterate

<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>

FIGURA 4

Ejemplo de código escrito en Java que utiliza un enlace de valor

<%@ 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>

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

bibliotecas de códigos. JSF se diseñó con el fin de ofrecer ca-

• <f:validateDoubleRange>

racterísticas parecidas a las del modelo controlado por even-

• <f:validateLength>

tos de las aplicaciones de Windows. Todos los códigos de JSF tienen asociados sus correspondientes componentes IU (como recuadros de texto, listas, paneles con pestañas y cuadrículas de datos) con lo que pueden asociarse (o enlazarse, para utilizar el término que se usa en JSF) beans de datos y procesos 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 de la 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 desarrollo rápido de aplicaciones (RAD) de VisualBasic, PowerBuilder

• <f:validateLongRange>

Pero también es muy fácil escribir sus propios validadores. Así mismo, pueden encontrarse validadores personalizados en Internet. De forma parecida a Struts, los mensajes de los errores 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 Struts era la programación del proceso de presentación, validación y 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 la

y

Delphi. Al igual que Struts, JSF tiene funciones de validación. Pero

mayoría de sus capítulos a ofrecer soluciones a los problemas de desarrollo con Struts. De todas formas, JSF no tienen nin-

el

código de validación de JSF está en el sitio al que pertene-

guno de esos problemas. Los beans de datos se asocian con

ServerNEWS AGOSTO-SEPTIEMBRE 2005

www.help400.es

Programación y sistemas www.help400.es AGOSTO-SEPTIEMBR 2005 ServerNEWS 37 ▲ ▲ ▲
Programación y sistemas
www.help400.es
AGOSTO-SEPTIEMBR 2005
ServerNEWS
37
■ APLICACIONES JAVA BASADAS EN WEB los componentes de entrada gracias a una característica denominada

APLICACIONES JAVA BASADAS EN WEB

los componentes de entrada gracias a una característica denominada enlace de valor (en la Figura 4 se utiliza un enlace 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), dando formato a datos como fechas, símbolos del dólar, numéricos o lo 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 que tenían en el formulario de beans de datos (por ejemplo, String, Date o BigDecimal). De nuevo, los desarrolladores pueden crear fácilmente sus propios representadores y conversores. La configuración de JSF (que también es parecida a la de Struts) se escribe en un archivo de XML y la gestiona un controlador de servlets. Pero JSF introduce un sofisticado servicio llamado beans gestionados. Los beans gestionados son JavaBeans que mantiene el controlador de JSF. Estos beans 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 con un componente de entrada de JSF con una propiedad action:

<h:commandButton value=”Process” action=”#{entryHandler.process}” />

Recursos sobre JSF

Sitios web jamesholmes.com/JavaServerFaces Una 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.html Una sencilla aplicación de ejemplo “Adivina el número” basada en JSF

www-106.ibm.com/developerworks/websphere/techjournal/

0401_barcia/barcia.html

Desarrollo de aplicaciones en JSF utilizando WebSphere Studio V5.1

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

Libros JavaServer Faces Programming”, Budi Kurniawan (McGraw- Hill, 2003) “JavaServer Faces”, Hans Bergsten (O’Reilly, 2004) “JavaServer Faces in Action”, Kito Mann (Manning, 2004)

(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 vez del del dólar). Para desarrollar e instalar aplicaciones en JSF es necesa- rio un servidor de aplicaciones compatibles con JSP 1.2 y Servlet 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) y la de IBM. Tenga en cuenta que la implementación de IBM se ofrece con WebSphere 5.1, pero nada impide que utilice la de 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 armas

Antes de empezar a programar su aplicación web basada en Java, necesita obtener las tecnologías que utilizará. HTML y JSP 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ás importantes son compatibles con Struts y hay más de una docena de libros publicados sobre Struts. JSF indudablemente tiene un conjunto de funciones relacionadas con la IU más sofisticado, pero si la aplicación web es relativamente senci- lla, JSF puede ser excesivo. Sin embargo, si necesita una IU muy conseguida, añadir funciones con los códigos de Struts o con código propio puede ser decididamente más complejo que con JSF. Sí, JSF es una tecnología nueva, pero la versión Early Access existe desde hace dos años y en diciembre de 2003 ya se habían publicado por lo menos cuatro buenos libros sobre JSF. En cualquier caso, independientemente de lo que digan los fabricantes de los 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 Applications Specialists, Inc.

ServerNEWS AGOSTO-SEPTIEMBRE 2005

www.help400.es

Programación y sistemas www.help400.es AGOSTO-SEPTIEMBR 2005 ServerNEWS 39 ▲ ▲ ▲
Programación y sistemas
www.help400.es
AGOSTO-SEPTIEMBR 2005
ServerNEWS
39
GUIA 40 ServerNEWS AGOSTO-SEPTIEMBRE 2005 www.help400.es
GUIA
40 ServerNEWS
AGOSTO-SEPTIEMBRE 2005
www.help400.es
MANTENIMIENTO Y BROKERAGE INFORMÁTICO, S.L. Mantenimiento / Alquiler y Brokerage / Venta / Redes Backup

MANTENIMIENTO Y BROKERAGE INFORMÁTICO, S.L.

Mantenimiento / Alquiler y Brokerage / Venta / Redes Backup Center

Pere IV 78-82, 7º 3ª 08005 - Barcelona (Spain) T. 34 934 854 427 Fax 34 934 850 168

- Barcelona (Spain) T. 34 934 854 427 Fax 34 934 850 168 www.help400.es GUIA P.T.A.

www.help400.es

GUIA

P.T.A. Edificio CENTRO EMPRESAS 29590 Málaga
P.T.A. Edificio CENTRO EMPRESAS 29590 Málaga
Fax 34 934 850 168 www.help400.es GUIA P.T.A. Edificio CENTRO EMPRESAS 29590 Málaga AGOSTO-SEPTIEMBRE 2005 ServerNEWS
Fax 34 934 850 168 www.help400.es GUIA P.T.A. Edificio CENTRO EMPRESAS 29590 Málaga AGOSTO-SEPTIEMBRE 2005 ServerNEWS

AGOSTO-SEPTIEMBRE 2005

ServerNEWS

41

confidencial por Carlos Bell

confidencial

por Carlos Bell

EL MERCADO DEL ISERIES SE RECUPERA

por Carlos Bell EL MERCADO DEL ISERIES SE RECUPERA Uno se va de vacaciones con la
Uno se va de vacaciones con la esperanza de que en su ausencia no ocurra

Uno se va de vacaciones con la esperanza de que en su ausencia no ocurra nada digno de ser tenido en cuenta, pero en nuestro mundillo no suele ser así. El primer día, al regresar, aparte de pasarme un par de horas supri- miendo mensajes de spam (desde viagra y otros sucedáneos, hasta trolex, acciones y títulos académicos, pasando por aplicaciones ofimáticas por me- nos de la mitad de precio y otras ofertas comerciales de dudosa calidad) lo destiné por completo a revisar “mis fuentes” de información habituales. Me esperaban un montón de sorpresas. Aparte de las que comento en el artículo “RPG: un puente entre dos mundos” (incluido en la página 10) sobre la rebelión de los disidentes (ya sabes, aquellos que no están de acuerdo con el “pensamiento único” de IBM) que ha favorecido la ampliación y flexibilización del llamado “iSeries Developer Roadmap”, la “Hoja de ruta” a seguir para estar tecnológicamen- te al día, también me he encontrado con otras interesantes noticias.

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

Así, de la lectura del informe de los resultados de IBM correspondientes al segundo trimestre
Así, de la lectura del informe de los resultados de IBM correspondientes al segundo trimestre

Así, de la lectura del informe de los resultados de IBM correspondientes al segundo trimestre se desprende que en IBM se han vuelto a poner las pilas: “El crecimiento de STG (Grupo de Sistemas y Tecnología) en el área de servidores ha sido impulsado por los servidores UNIX pSeries, que han tenido un crecimiento del 36%, los servidores xSeries y los iSeries de gama media, que han crecido un 11% y un 10% respectivamente. Además de los servidores, los ingresos por sistemas de

almacenamiento han crecido un 19%

Sin duda, éste será el año triunfal del Power5. La buena noticia es que para el

” Sin duda, éste será el año triunfal del Power5. La buena noticia es que para
iSeries éste es el primer crecimiento de dos dígitos desde el primer trimestre del 2003,
iSeries éste es el primer crecimiento de dos dígitos desde el primer trimestre del 2003,

iSeries éste es el primer crecimiento de dos dígitos desde el primer trimestre del 2003, lo que demuestra el gran potencial del iSeries para seguir ganando cuota de mercado. Tal parece que los esfuerzos de marketing de IBM durante la primera

mitad del año han hecho renacer el interés por el iSeries puesto que, en lo
mitad del año han hecho renacer el interés por el iSeries puesto que, en lo

mitad del año han hecho renacer el interés por el iSeries puesto que, en lo que va de año, los resultados de nuestra plataforma han sido los mejores desde 1998. Aparentemente, aquellos días de los “Penosos resultados del iSeries” (número 148, de noviembre de 2004) han pasado a la historia. Según se comenta en el último informe de Gartner correspondiente al segundo trimestre de 2005, por noveno trimestre consecutivo IBM ocupa la primera posición por facturación en el mercado mundial de servidores. El informe destaca, asimismo, el importante crecimiento experimentado por la Compañía en los servidores Unix (más de 5,5 puntos interanuales).

System z9, larga vida al mainframe

¿Quién dijo que el mainframe había muerto? IBM defiende su 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 los servidores de la compañía. Así, IBM ha lanzado la iniciativa

INDICE DE ANUNCIANTES SEPTIEMBRE 2005

Empresa

Página

AMERICAN TOP TOOLS CACOVAI CPI SOFTWARE GUÍA IBM LAKEVIEW MAIN MEMORY MICROSOFT OCÉ SOFTWARE GREENHOUSE SUSCRIPCION NEWS/400

27, 40

37

19

40, 41 Contraportada

31

Interior Portada Interior Contraportada

13

23

25, 39

TANGO/04

9

TRANSTOOLS

33

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 de tener un entorno flexible, fácil de gestionar y con ahorro de costes"), el compromiso con los estándares abiertos ("para que el cliente tenga la libertad de poder integrar todo aquello que quiera o necesite") y la colaboración para innovar. Los primeros anuncios que efectúa IBM bajo el paraguas de su Systems Agenda son Virtualization Engine 2.0, la crea- ción de Blade.org (asociación promovida junto a Intel) y el nuevo mainframe IBM System z9 que, según Álvaro Álvarez Santullano, director de ventas de zSeries de IBM, es un pro- ducto “para todo tipo de empresas, incluidas las medianas o pequeñas, y piedra angular de Systems Agenda”. De acuerdo con IBM, el z9 es uno de los sistemas de cómputo más confiables y seguros que jamás se hayan construido. Además, duplica en potencia de procesamiento, capacidad y memoria a 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 casi nadie habla y cuyo acrónimo nos sugiere una convergencia entre las series i, p, y z de la empresa, basada en la arquitec- tura del chip Power6, previsto para finales de 2006.

tura del chip Power6, previsto para finales de 2006. ■ Como sabes, esta información es estrictamente

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

42

ServerNEWS

AGOSTO-SEPTIEMBRE 2005

www.help400.es