RPG - Integración con Java

Utilizando Java desde RPG - RPG Meets Java


En los últimos años, IBM ha potenciado el lenguaje RPG en AS/400 con la finalidad de ofrecer nuevas y mejores oportunidades a desarrolladores y arquitectos de software, para utilizar las ventajas del código abierto y la potencia de otros lenguajes de programación como Java.

En este sentido, una de las principales mejoras que ha tenido RPG, es la facilidad para utilizar objetos creados en clases Java. En este artículo, les presento como utilizar los objetos Java en RPG.

Referenciar Objetos Java en RPG

Para referenciar objetos Java en RPG se debe especificar las variables de objetos Java en RPG del modo siguiente:

Modo formato Fijo:
D Cad     S          O   CLASS(*JAVA:'java.lang.String')

Modo Free-Format:
DCL-S Cad OBJECT(*JAVA:'java.lang.String');

Constructores 

Las variables declaradas como un objeto, son solo de referencia. Con la finalidad de utilizar esas referencias a objetos, se necesita crear una instancia a ese objeto. Para poder utilizar el objeto, se debe acceder al método constructor de la clase. Cuando se crea el objeto en la memoria, el programa utiliza la variable de referencia para identificar el lugar de la memoria donde se encuentra el objeto.

Un método contructor es invocado en un programa RPG utilizando la palabra clave *CONTRUCTOR cuando se define el prototipo en EXTPROC. 

Por ejemplo, para crear la referencia al constructor del objeto String en RPG, se debe realizar lo siguiente:

Modo formato Fijo:
 cl_Cad          PR                 extproc(*JAVA:
D                                     'java.lang.String':
D                                     *CONSTRUCTOR)
D Cadena                     65535A   varying const

D getBytes        PR         65535A   EXTPROC(*JAVA:
D                                       'java.lang.String':

D                                       'getBytes') VARYING

Modo free-format:
DCL-PR cl_Cad extproc(*JAVA:'java.lang.String':*CONSTRUCTOR);
    Cadena varchar(65535) const;
End-pr;

DCL-PR getBytes varchar(65535) varying EXTPROC(*JAVA:'java.lang.String':'getBytes') END-PR;

El Típico "Hola Mundo"

Todo programa Java debe ejecutarse sobre una instancia de la JVM. En este caso para RPG sucede lo mismo. Cuando RPG intenta realizar el llamado a métodos Java, el sistema valida si una instancia de JVM ha sido activada, sino existe, el sistema la ejecuta automaticamente. 

Vamos a ver un ejemplo sencillo

 /free
  CTL-OPT THREAD(*SERIALIZE);
  dcl-s fld varchar(20);
  cad=cl_Cad('Hola Mundo');
  fld=getBytes(cad);
  DSPLY fld;
  *inlr = *ON;
/end-free

Nota final: si se están utilizando clases propias de Java se debe configurar la variable de ambiente CLASSPATH. Por ejemplo:

ADDENVVAR ENVVAR(CLASSPATH) VALUE('/misclases/*')

0 comentarios:

Publicar un comentario

Popular Posts

Recent Posts

Video of the Month

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *