SlideShare ist ein Scribd-Unternehmen logo
Einführung
 Java Komponenten in RPG
           AppServer4RPG
       Beispiel im Vergleich




Hinter den Kulissen von ArdGate
                 effiziente Aufrufe
                von Java aus RPG


                    Dieter Bender




              Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                                     Vorstellung
                      Java Komponenten in RPG
                                                     Architektur von ArdGate
                                AppServer4RPG
                                                     Das Gleiberg Projekt
                            Beispiel im Vergleich


Vorstellung

        WWW.BENDER-DV.DE - Dieter@Bender-DV.de
        Dieter Bender, D35435 Wettenberg
        AS/400* Freelancer
               Java, SQL, ILE RPG, COBOL
               Anwendungs-Design, Datenbanken
        Kurse: Java, SQL, ILE RPG
        Open Source Komponenten
               ArdGate: SQL Zugriffe von AS400 auf alle Datenbanken
               AppServer4RPG: schnelle, skalierbare Zugriffe aus RPG auf
               Java
               einige RPG Komponenten
  *) AS/400 := AS/400 und alle kompatiblen Systeme




                                   Dieter Bender     Hinter den Kulissen von ArdGate
Einführung
                                                 Vorstellung
                   Java Komponenten in RPG
                                                 Architektur von ArdGate
                             AppServer4RPG
                                                 Das Gleiberg Projekt
                         Beispiel im Vergleich


ArdGate im Überblick

 *ARDPGM
 zwingend native
 JDBC zwingend
 Java
 sehr wenig RPG
 (blau)
 viel Java (rot)
 viele calls von
 Java aus RPG
 viele Benutzer
 Umgebung
 unbekannt
                                Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                                 Vorstellung
                   Java Komponenten in RPG
                                                 Architektur von ArdGate
                             AppServer4RPG
                                                 Das Gleiberg Projekt
                         Beispiel im Vergleich


ArdGate im Überblick

 *ARDPGM
 zwingend native
 JDBC zwingend
 Java
 sehr wenig RPG
 (blau)
 viel Java (rot)
 viele calls von
 Java aus RPG
 viele Benutzer
 Umgebung
 unbekannt
                                Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                                 Vorstellung
                   Java Komponenten in RPG
                                                 Architektur von ArdGate
                             AppServer4RPG
                                                 Das Gleiberg Projekt
                         Beispiel im Vergleich


ArdGate im Überblick

 *ARDPGM
 zwingend native
 JDBC zwingend
 Java
 sehr wenig RPG
 (blau)
 viel Java (rot)
 viele calls von
 Java aus RPG
 viele Benutzer
 Umgebung
 unbekannt
                                Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                                 Vorstellung
                   Java Komponenten in RPG
                                                 Architektur von ArdGate
                             AppServer4RPG
                                                 Das Gleiberg Projekt
                         Beispiel im Vergleich


ArdGate im Überblick

 *ARDPGM
 zwingend native
 JDBC zwingend
 Java
 sehr wenig RPG
 (blau)
 viel Java (rot)
 viele calls von
 Java aus RPG
 viele Benutzer
 Umgebung
 unbekannt
                                Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                                 Vorstellung
                   Java Komponenten in RPG
                                                 Architektur von ArdGate
                             AppServer4RPG
                                                 Das Gleiberg Projekt
                         Beispiel im Vergleich


ArdGate im Überblick

 *ARDPGM
 zwingend native
 JDBC zwingend
 Java
 sehr wenig RPG
 (blau)
 viel Java (rot)
 viele calls von
 Java aus RPG
 viele Benutzer
 Umgebung
 unbekannt
                                Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                                 Vorstellung
                   Java Komponenten in RPG
                                                 Architektur von ArdGate
                             AppServer4RPG
                                                 Das Gleiberg Projekt
                         Beispiel im Vergleich


ArdGate im Überblick

 *ARDPGM
 zwingend native
 JDBC zwingend
 Java
 sehr wenig RPG
 (blau)
 viel Java (rot)
 viele calls von
 Java aus RPG
 viele Benutzer
 Umgebung
 unbekannt
                                Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                                 Vorstellung
                   Java Komponenten in RPG
                                                 Architektur von ArdGate
                             AppServer4RPG
                                                 Das Gleiberg Projekt
                         Beispiel im Vergleich


ArdGate im Überblick

 *ARDPGM
 zwingend native
 JDBC zwingend
 Java
 sehr wenig RPG
 (blau)
 viel Java (rot)
 viele calls von
 Java aus RPG
 viele Benutzer
 Umgebung
 unbekannt
                                Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                              Vorstellung
                Java Komponenten in RPG
                                              Architektur von ArdGate
                          AppServer4RPG
                                              Das Gleiberg Projekt
                      Beispiel im Vergleich


Warum Gleiberg Projekt?


 AppServer4RPG
 meine Heimat
 Open Source
 zum Schutz des
 Copyrights eines
 Freelancers
 Ergebnis von
 mehr als 10
 Jahren Projekte
 und Kurse


                             Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                              Vorstellung
                Java Komponenten in RPG
                                              Architektur von ArdGate
                          AppServer4RPG
                                              Das Gleiberg Projekt
                      Beispiel im Vergleich


Warum Gleiberg Projekt?


 AppServer4RPG
 meine Heimat
 Open Source
 zum Schutz des
 Copyrights eines
 Freelancers
 Ergebnis von
 mehr als 10
 Jahren Projekte
 und Kurse


                             Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                              Vorstellung
                Java Komponenten in RPG
                                              Architektur von ArdGate
                          AppServer4RPG
                                              Das Gleiberg Projekt
                      Beispiel im Vergleich


Warum Gleiberg Projekt?


 AppServer4RPG
 meine Heimat
 Open Source
 zum Schutz des
 Copyrights eines
 Freelancers
 Ergebnis von
 mehr als 10
 Jahren Projekte
 und Kurse


                             Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                              Vorstellung
                Java Komponenten in RPG
                                              Architektur von ArdGate
                          AppServer4RPG
                                              Das Gleiberg Projekt
                      Beispiel im Vergleich


Warum Gleiberg Projekt?


 AppServer4RPG
 meine Heimat
 Open Source
 zum Schutz des
 Copyrights eines
 Freelancers
 Ergebnis von
 mehr als 10
 Jahren Projekte
 und Kurse


                             Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                             Wofür braucht man das?
               Java Komponenten in RPG
                                             Java Aufrufe aus RPG
                         AppServer4RPG
                                             RPGs Java Unterstützung
                     Beispiel im Vergleich


Java ist ungleich mächtiger als RPG


      Java Anwendungen sind Multithreaded
      Es gibt viele frei verfügbare Java Komponenten
      Open Source Tools, die man für RPG für Geld nicht bekommt.
      Programmierer Performace mit OO ungleich größer (bei
      vergleichbarer Erfahrung)
      Beispiele für Komponenten:
          WebServices und XML
          Erstellung PDF, HTML and EXCEL
          Datenbankzugriffe mit JDBC




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                             Wofür braucht man das?
               Java Komponenten in RPG
                                             Java Aufrufe aus RPG
                         AppServer4RPG
                                             RPGs Java Unterstützung
                     Beispiel im Vergleich


Java ist ungleich mächtiger als RPG


      Java Anwendungen sind Multithreaded
      Es gibt viele frei verfügbare Java Komponenten
      Open Source Tools, die man für RPG für Geld nicht bekommt.
      Programmierer Performace mit OO ungleich größer (bei
      vergleichbarer Erfahrung)
      Beispiele für Komponenten:
          WebServices und XML
          Erstellung PDF, HTML and EXCEL
          Datenbankzugriffe mit JDBC




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                             Wofür braucht man das?
               Java Komponenten in RPG
                                             Java Aufrufe aus RPG
                         AppServer4RPG
                                             RPGs Java Unterstützung
                     Beispiel im Vergleich


Java ist ungleich mächtiger als RPG


      Java Anwendungen sind Multithreaded
      Es gibt viele frei verfügbare Java Komponenten
      Open Source Tools, die man für RPG für Geld nicht bekommt.
      Programmierer Performace mit OO ungleich größer (bei
      vergleichbarer Erfahrung)
      Beispiele für Komponenten:
          WebServices und XML
          Erstellung PDF, HTML and EXCEL
          Datenbankzugriffe mit JDBC




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                             Wofür braucht man das?
               Java Komponenten in RPG
                                             Java Aufrufe aus RPG
                         AppServer4RPG
                                             RPGs Java Unterstützung
                     Beispiel im Vergleich


Java ist ungleich mächtiger als RPG


      Java Anwendungen sind Multithreaded
      Es gibt viele frei verfügbare Java Komponenten
      Open Source Tools, die man für RPG für Geld nicht bekommt.
      Programmierer Performace mit OO ungleich größer (bei
      vergleichbarer Erfahrung)
      Beispiele für Komponenten:
          WebServices und XML
          Erstellung PDF, HTML and EXCEL
          Datenbankzugriffe mit JDBC




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                             Wofür braucht man das?
               Java Komponenten in RPG
                                             Java Aufrufe aus RPG
                         AppServer4RPG
                                             RPGs Java Unterstützung
                     Beispiel im Vergleich


Java ist ungleich mächtiger als RPG


      Java Anwendungen sind Multithreaded
      Es gibt viele frei verfügbare Java Komponenten
      Open Source Tools, die man für RPG für Geld nicht bekommt.
      Programmierer Performace mit OO ungleich größer (bei
      vergleichbarer Erfahrung)
      Beispiele für Komponenten:
          WebServices und XML
          Erstellung PDF, HTML and EXCEL
          Datenbankzugriffe mit JDBC




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                             Wofür braucht man das?
               Java Komponenten in RPG
                                             Java Aufrufe aus RPG
                         AppServer4RPG
                                             RPGs Java Unterstützung
                     Beispiel im Vergleich


RPG ruft Java auf

      RUNJVA und QSH CMD(java ...)
          nur für Java Applikationen
          keine Rückgabewerte möglich (außer Errorlevel)
          damit kriegt man jeden Rechner platt!
      Java stored Procedures
          Methoden müssen static sein
          skaliert schlecht im embedded SQL
          im SQL server Modus (CLI) keien wirksame Kontrolle der JVM
      JNI Java native Interface
          JNI ist vorgesehen für Implementierung der JVM und der Java
          Tools
          unlesbare und schlecht wartbare Programme
          Fehlerbehandlung und Analyse aufwändig


                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                             Wofür braucht man das?
               Java Komponenten in RPG
                                             Java Aufrufe aus RPG
                         AppServer4RPG
                                             RPGs Java Unterstützung
                     Beispiel im Vergleich


RPG ruft Java auf

      RUNJVA und QSH CMD(java ...)
          nur für Java Applikationen
          keine Rückgabewerte möglich (außer Errorlevel)
          damit kriegt man jeden Rechner platt!
      Java stored Procedures
          Methoden müssen static sein
          skaliert schlecht im embedded SQL
          im SQL server Modus (CLI) keien wirksame Kontrolle der JVM
      JNI Java native Interface
          JNI ist vorgesehen für Implementierung der JVM und der Java
          Tools
          unlesbare und schlecht wartbare Programme
          Fehlerbehandlung und Analyse aufwändig


                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                             Wofür braucht man das?
               Java Komponenten in RPG
                                             Java Aufrufe aus RPG
                         AppServer4RPG
                                             RPGs Java Unterstützung
                     Beispiel im Vergleich


RPG ruft Java auf

      RUNJVA und QSH CMD(java ...)
          nur für Java Applikationen
          keine Rückgabewerte möglich (außer Errorlevel)
          damit kriegt man jeden Rechner platt!
      Java stored Procedures
          Methoden müssen static sein
          skaliert schlecht im embedded SQL
          im SQL server Modus (CLI) keien wirksame Kontrolle der JVM
      JNI Java native Interface
          JNI ist vorgesehen für Implementierung der JVM und der Java
          Tools
          unlesbare und schlecht wartbare Programme
          Fehlerbehandlung und Analyse aufwändig


                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                            Wofür braucht man das?
              Java Komponenten in RPG
                                            Java Aufrufe aus RPG
                        AppServer4RPG
                                            RPGs Java Unterstützung
                    Beispiel im Vergleich


Warum ich kein embedded Java in RPG mag

     Kontrolle der implizit gestarteten JVM nahezu unmöglich
     Verwendung normaler Java Komponentem führt zu embedded
     Java in RPG
     aufwändig zu programmieren, testen und ändern
     erste Aufruf ist quälend langsam, zahlreiche JVMs machen
     jeden Rechner platt (zur Freude von IBM)
     JNI Unterstützung des RPG Compilers ist schlampig
     implementiert, abstürzende JVMs nicht kontrollierbar! (keine
     abstürzenden JVMs sonst beobachtet!!!)
     zu viel Aufwand für klägliche Ergebnisse



                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                            Wofür braucht man das?
              Java Komponenten in RPG
                                            Java Aufrufe aus RPG
                        AppServer4RPG
                                            RPGs Java Unterstützung
                    Beispiel im Vergleich


Warum ich kein embedded Java in RPG mag

     Kontrolle der implizit gestarteten JVM nahezu unmöglich
     Verwendung normaler Java Komponentem führt zu embedded
     Java in RPG
     aufwändig zu programmieren, testen und ändern
     erste Aufruf ist quälend langsam, zahlreiche JVMs machen
     jeden Rechner platt (zur Freude von IBM)
     JNI Unterstützung des RPG Compilers ist schlampig
     implementiert, abstürzende JVMs nicht kontrollierbar! (keine
     abstürzenden JVMs sonst beobachtet!!!)
     zu viel Aufwand für klägliche Ergebnisse



                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                            Wofür braucht man das?
              Java Komponenten in RPG
                                            Java Aufrufe aus RPG
                        AppServer4RPG
                                            RPGs Java Unterstützung
                    Beispiel im Vergleich


Warum ich kein embedded Java in RPG mag

     Kontrolle der implizit gestarteten JVM nahezu unmöglich
     Verwendung normaler Java Komponentem führt zu embedded
     Java in RPG
     aufwändig zu programmieren, testen und ändern
     erste Aufruf ist quälend langsam, zahlreiche JVMs machen
     jeden Rechner platt (zur Freude von IBM)
     JNI Unterstützung des RPG Compilers ist schlampig
     implementiert, abstürzende JVMs nicht kontrollierbar! (keine
     abstürzenden JVMs sonst beobachtet!!!)
     zu viel Aufwand für klägliche Ergebnisse



                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                            Wofür braucht man das?
              Java Komponenten in RPG
                                            Java Aufrufe aus RPG
                        AppServer4RPG
                                            RPGs Java Unterstützung
                    Beispiel im Vergleich


Warum ich kein embedded Java in RPG mag

     Kontrolle der implizit gestarteten JVM nahezu unmöglich
     Verwendung normaler Java Komponentem führt zu embedded
     Java in RPG
     aufwändig zu programmieren, testen und ändern
     erste Aufruf ist quälend langsam, zahlreiche JVMs machen
     jeden Rechner platt (zur Freude von IBM)
     JNI Unterstützung des RPG Compilers ist schlampig
     implementiert, abstürzende JVMs nicht kontrollierbar! (keine
     abstürzenden JVMs sonst beobachtet!!!)
     zu viel Aufwand für klägliche Ergebnisse



                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                            Wofür braucht man das?
              Java Komponenten in RPG
                                            Java Aufrufe aus RPG
                        AppServer4RPG
                                            RPGs Java Unterstützung
                    Beispiel im Vergleich


Warum ich kein embedded Java in RPG mag

     Kontrolle der implizit gestarteten JVM nahezu unmöglich
     Verwendung normaler Java Komponentem führt zu embedded
     Java in RPG
     aufwändig zu programmieren, testen und ändern
     erste Aufruf ist quälend langsam, zahlreiche JVMs machen
     jeden Rechner platt (zur Freude von IBM)
     JNI Unterstützung des RPG Compilers ist schlampig
     implementiert, abstürzende JVMs nicht kontrollierbar! (keine
     abstürzenden JVMs sonst beobachtet!!!)
     zu viel Aufwand für klägliche Ergebnisse



                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                            Wofür braucht man das?
              Java Komponenten in RPG
                                            Java Aufrufe aus RPG
                        AppServer4RPG
                                            RPGs Java Unterstützung
                    Beispiel im Vergleich


Warum ich kein embedded Java in RPG mag

     Kontrolle der implizit gestarteten JVM nahezu unmöglich
     Verwendung normaler Java Komponentem führt zu embedded
     Java in RPG
     aufwändig zu programmieren, testen und ändern
     erste Aufruf ist quälend langsam, zahlreiche JVMs machen
     jeden Rechner platt (zur Freude von IBM)
     JNI Unterstützung des RPG Compilers ist schlampig
     implementiert, abstürzende JVMs nicht kontrollierbar! (keine
     abstürzenden JVMs sonst beobachtet!!!)
     zu viel Aufwand für klägliche Ergebnisse



                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                               Architektur von AppServer4RPG
                 Java Komponenten in RPG
                                               Das EventHandler Interface
                           AppServer4RPG
                                               Das PORDS2POJO Muster
                       Beispiel im Vergleich


Architektur Überblick
 eine
 vorgestartete
 JVM arbeitet für
 viele RPG
 Clients
 Kommunikation
 asynchron
 erweiterbares
 EventHandler
 Konzept
 RPG verwendet
 Datenstrukturen
 als Parameter
 (Java übersetzt)
                              Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                               Architektur von AppServer4RPG
                 Java Komponenten in RPG
                                               Das EventHandler Interface
                           AppServer4RPG
                                               Das PORDS2POJO Muster
                       Beispiel im Vergleich


Architektur Überblick
 eine
 vorgestartete
 JVM arbeitet für
 viele RPG
 Clients
 Kommunikation
 asynchron
 erweiterbares
 EventHandler
 Konzept
 RPG verwendet
 Datenstrukturen
 als Parameter
 (Java übersetzt)
                              Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                               Architektur von AppServer4RPG
                 Java Komponenten in RPG
                                               Das EventHandler Interface
                           AppServer4RPG
                                               Das PORDS2POJO Muster
                       Beispiel im Vergleich


Architektur Überblick
 eine
 vorgestartete
 JVM arbeitet für
 viele RPG
 Clients
 Kommunikation
 asynchron
 erweiterbares
 EventHandler
 Konzept
 RPG verwendet
 Datenstrukturen
 als Parameter
 (Java übersetzt)
                              Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                               Architektur von AppServer4RPG
                 Java Komponenten in RPG
                                               Das EventHandler Interface
                           AppServer4RPG
                                               Das PORDS2POJO Muster
                       Beispiel im Vergleich


Architektur Überblick
 eine
 vorgestartete
 JVM arbeitet für
 viele RPG
 Clients
 Kommunikation
 asynchron
 erweiterbares
 EventHandler
 Konzept
 RPG verwendet
 Datenstrukturen
 als Parameter
 (Java übersetzt)
                              Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                             Architektur von AppServer4RPG
               Java Komponenten in RPG
                                             Das EventHandler Interface
                         AppServer4RPG
                                             Das PORDS2POJO Muster
                     Beispiel im Vergleich


Die RPG Sicht




   RPG ruft Java
   Methode auf
   zu lesen als:
   outDS =
   ARDPGM(inDS)




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                             Architektur von AppServer4RPG
               Java Komponenten in RPG
                                             Das EventHandler Interface
                         AppServer4RPG
                                             Das PORDS2POJO Muster
                     Beispiel im Vergleich


Die RPG Sicht




   RPG ruft Java
   Methode auf
   zu lesen als:
   outDS =
   ARDPGM(inDS)




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                              Architektur von AppServer4RPG
                Java Komponenten in RPG
                                              Das EventHandler Interface
                          AppServer4RPG
                                              Das PORDS2POJO Muster
                      Beispiel im Vergleich


Die Java Sicht




   Action: was soll
   aufgerufen
   werden?
   Was muss ein
   EventHandler
   können?




                             Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                              Architektur von AppServer4RPG
                Java Komponenten in RPG
                                              Das EventHandler Interface
                          AppServer4RPG
                                              Das PORDS2POJO Muster
                      Beispiel im Vergleich


Die Java Sicht




   Action: was soll
   aufgerufen
   werden?
   Was muss ein
   EventHandler
   können?




                             Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                             Architektur von AppServer4RPG
               Java Komponenten in RPG
                                             Das EventHandler Interface
                         AppServer4RPG
                                             Das PORDS2POJO Muster
                     Beispiel im Vergleich


Hybrid Objekte




   Plain Old RPG
   DataStructure
   Plain Old Java
   Object




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                             Architektur von AppServer4RPG
               Java Komponenten in RPG
                                             Das EventHandler Interface
                         AppServer4RPG
                                             Das PORDS2POJO Muster
                     Beispiel im Vergleich


Hybrid Objekte




   Plain Old RPG
   DataStructure
   Plain Old Java
   Object




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                             Architektur von AppServer4RPG
               Java Komponenten in RPG
                                             Das EventHandler Interface
                         AppServer4RPG
                                             Das PORDS2POJO Muster
                     Beispiel im Vergleich


Doppelgesichtige Objekte als Dolmetscher



      PORDS2POJO:= ein Java Objekt, das die Übersetzung von
      Binärdaten (DS) in eine Java Bean kapselt.
          POJO mit allen Komponenten einer PORDS als Java Typen
          Objekt Variable für die Binärdaten der PORDS ( private byte[]
          huddle )
          setter und getter für huddle
          zeigt zu jeder Zeit die Java und die RPG Sicht derselben Daten
          häufig nur eine Richtung implementiert (DS rein Java Felder
          raus oder umgekehrt)




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                             Architektur von AppServer4RPG
               Java Komponenten in RPG
                                             Das EventHandler Interface
                         AppServer4RPG
                                             Das PORDS2POJO Muster
                     Beispiel im Vergleich


Doppelgesichtige Objekte als Dolmetscher



      PORDS2POJO:= ein Java Objekt, das die Übersetzung von
      Binärdaten (DS) in eine Java Bean kapselt.
          POJO mit allen Komponenten einer PORDS als Java Typen
          Objekt Variable für die Binärdaten der PORDS ( private byte[]
          huddle )
          setter und getter für huddle
          zeigt zu jeder Zeit die Java und die RPG Sicht derselben Daten
          häufig nur eine Richtung implementiert (DS rein Java Felder
          raus oder umgekehrt)




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                             Architektur von AppServer4RPG
               Java Komponenten in RPG
                                             Das EventHandler Interface
                         AppServer4RPG
                                             Das PORDS2POJO Muster
                     Beispiel im Vergleich


Doppelgesichtige Objekte als Dolmetscher



      PORDS2POJO:= ein Java Objekt, das die Übersetzung von
      Binärdaten (DS) in eine Java Bean kapselt.
          POJO mit allen Komponenten einer PORDS als Java Typen
          Objekt Variable für die Binärdaten der PORDS ( private byte[]
          huddle )
          setter und getter für huddle
          zeigt zu jeder Zeit die Java und die RPG Sicht derselben Daten
          häufig nur eine Richtung implementiert (DS rein Java Felder
          raus oder umgekehrt)




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                             Architektur von AppServer4RPG
               Java Komponenten in RPG
                                             Das EventHandler Interface
                         AppServer4RPG
                                             Das PORDS2POJO Muster
                     Beispiel im Vergleich


Doppelgesichtige Objekte als Dolmetscher



      PORDS2POJO:= ein Java Objekt, das die Übersetzung von
      Binärdaten (DS) in eine Java Bean kapselt.
          POJO mit allen Komponenten einer PORDS als Java Typen
          Objekt Variable für die Binärdaten der PORDS ( private byte[]
          huddle )
          setter und getter für huddle
          zeigt zu jeder Zeit die Java und die RPG Sicht derselben Daten
          häufig nur eine Richtung implementiert (DS rein Java Felder
          raus oder umgekehrt)




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung
                                             Architektur von AppServer4RPG
               Java Komponenten in RPG
                                             Das EventHandler Interface
                         AppServer4RPG
                                             Das PORDS2POJO Muster
                     Beispiel im Vergleich


Doppelgesichtige Objekte als Dolmetscher



      PORDS2POJO:= ein Java Objekt, das die Übersetzung von
      Binärdaten (DS) in eine Java Bean kapselt.
          POJO mit allen Komponenten einer PORDS als Java Typen
          Objekt Variable für die Binärdaten der PORDS ( private byte[]
          huddle )
          setter und getter für huddle
          zeigt zu jeder Zeit die Java und die RPG Sicht derselben Daten
          häufig nur eine Richtung implementiert (DS rein Java Felder
          raus oder umgekehrt)




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
               Java Komponenten in RPG       Die RUNJVA Variante
                         AppServer4RPG       embedded Java in RPG
                     Beispiel im Vergleich   Die Gleiberg Version


Aus dem richtigen Leben gegriffen



      Die Anforderung: RPG Applikation generiert HTML Rechnung
      Java macht aus HTML und CSS eine PDF Datei
      Java seitig gibt es iText und Flying Saucer
      Bedingung: 10.000 Rechnungen in 6 h
      erste Versuche (Kunde) mit HTML2PDF4I: 30 sec. bis
      mehrere Minuten pro Rechnung!
      kurze Gegenprüfung von mir mit Wintel: Sekundenbruchteile!




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
               Java Komponenten in RPG       Die RUNJVA Variante
                         AppServer4RPG       embedded Java in RPG
                     Beispiel im Vergleich   Die Gleiberg Version


Aus dem richtigen Leben gegriffen



      Die Anforderung: RPG Applikation generiert HTML Rechnung
      Java macht aus HTML und CSS eine PDF Datei
      Java seitig gibt es iText und Flying Saucer
      Bedingung: 10.000 Rechnungen in 6 h
      erste Versuche (Kunde) mit HTML2PDF4I: 30 sec. bis
      mehrere Minuten pro Rechnung!
      kurze Gegenprüfung von mir mit Wintel: Sekundenbruchteile!




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
               Java Komponenten in RPG       Die RUNJVA Variante
                         AppServer4RPG       embedded Java in RPG
                     Beispiel im Vergleich   Die Gleiberg Version


Aus dem richtigen Leben gegriffen



      Die Anforderung: RPG Applikation generiert HTML Rechnung
      Java macht aus HTML und CSS eine PDF Datei
      Java seitig gibt es iText und Flying Saucer
      Bedingung: 10.000 Rechnungen in 6 h
      erste Versuche (Kunde) mit HTML2PDF4I: 30 sec. bis
      mehrere Minuten pro Rechnung!
      kurze Gegenprüfung von mir mit Wintel: Sekundenbruchteile!




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
               Java Komponenten in RPG       Die RUNJVA Variante
                         AppServer4RPG       embedded Java in RPG
                     Beispiel im Vergleich   Die Gleiberg Version


Aus dem richtigen Leben gegriffen



      Die Anforderung: RPG Applikation generiert HTML Rechnung
      Java macht aus HTML und CSS eine PDF Datei
      Java seitig gibt es iText und Flying Saucer
      Bedingung: 10.000 Rechnungen in 6 h
      erste Versuche (Kunde) mit HTML2PDF4I: 30 sec. bis
      mehrere Minuten pro Rechnung!
      kurze Gegenprüfung von mir mit Wintel: Sekundenbruchteile!




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
               Java Komponenten in RPG       Die RUNJVA Variante
                         AppServer4RPG       embedded Java in RPG
                     Beispiel im Vergleich   Die Gleiberg Version


Aus dem richtigen Leben gegriffen



      Die Anforderung: RPG Applikation generiert HTML Rechnung
      Java macht aus HTML und CSS eine PDF Datei
      Java seitig gibt es iText und Flying Saucer
      Bedingung: 10.000 Rechnungen in 6 h
      erste Versuche (Kunde) mit HTML2PDF4I: 30 sec. bis
      mehrere Minuten pro Rechnung!
      kurze Gegenprüfung von mir mit Wintel: Sekundenbruchteile!




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
              Java Komponenten in RPG       Die RUNJVA Variante
                        AppServer4RPG       embedded Java in RPG
                    Beispiel im Vergleich   Die Gleiberg Version


HTML2PDF4I von Aaron Bartell



     Artikel in IBM Systems Magazine
     Open Source auf http://mowyourlawn.com
     Java Applikation als Aufrufhülse for iText und Flying Saucer
     Aufruf aus RPG mit RUNJVA und gebasteltem Classpath
     Auf Holgers PUB1 10 sec.
         für jeden Aufruf neuer Job und Start einer JVM
         langsam, skaliert aber linear (JVM beendet sich)




                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
              Java Komponenten in RPG       Die RUNJVA Variante
                        AppServer4RPG       embedded Java in RPG
                    Beispiel im Vergleich   Die Gleiberg Version


HTML2PDF4I von Aaron Bartell



     Artikel in IBM Systems Magazine
     Open Source auf http://mowyourlawn.com
     Java Applikation als Aufrufhülse for iText und Flying Saucer
     Aufruf aus RPG mit RUNJVA und gebasteltem Classpath
     Auf Holgers PUB1 10 sec.
         für jeden Aufruf neuer Job und Start einer JVM
         langsam, skaliert aber linear (JVM beendet sich)




                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
              Java Komponenten in RPG       Die RUNJVA Variante
                        AppServer4RPG       embedded Java in RPG
                    Beispiel im Vergleich   Die Gleiberg Version


HTML2PDF4I von Aaron Bartell



     Artikel in IBM Systems Magazine
     Open Source auf http://mowyourlawn.com
     Java Applikation als Aufrufhülse for iText und Flying Saucer
     Aufruf aus RPG mit RUNJVA und gebasteltem Classpath
     Auf Holgers PUB1 10 sec.
         für jeden Aufruf neuer Job und Start einer JVM
         langsam, skaliert aber linear (JVM beendet sich)




                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
              Java Komponenten in RPG       Die RUNJVA Variante
                        AppServer4RPG       embedded Java in RPG
                    Beispiel im Vergleich   Die Gleiberg Version


Das Classpath Problem


     zum ersten: es werden 3 jar files im Classpath benötigt
         kontrollierter JVM Start zu Beginn des Jobs => Zahl der
         JVMs = Zahl der Jobs
         Start der JVM direkt vor Verwendung => geht schief, wenn
         bereits aktiv mit falschem Classpath
         SBMJOB und kontrollierter Start JVM => RUNJVA Variante
         mit mehr Programmieraufwand!
         Classpath global setzen => kann zu Konflikten mit anderen
         Anwendungen führen
         Java Extension Mechanismus (extdirs) => noch schlechter:
         höhere Priorität als Classpath




                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
              Java Komponenten in RPG       Die RUNJVA Variante
                        AppServer4RPG       embedded Java in RPG
                    Beispiel im Vergleich   Die Gleiberg Version


Das Classpath Problem


     zum ersten: es werden 3 jar files im Classpath benötigt
         kontrollierter JVM Start zu Beginn des Jobs => Zahl der
         JVMs = Zahl der Jobs
         Start der JVM direkt vor Verwendung => geht schief, wenn
         bereits aktiv mit falschem Classpath
         SBMJOB und kontrollierter Start JVM => RUNJVA Variante
         mit mehr Programmieraufwand!
         Classpath global setzen => kann zu Konflikten mit anderen
         Anwendungen führen
         Java Extension Mechanismus (extdirs) => noch schlechter:
         höhere Priorität als Classpath




                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
              Java Komponenten in RPG       Die RUNJVA Variante
                        AppServer4RPG       embedded Java in RPG
                    Beispiel im Vergleich   Die Gleiberg Version


Das Classpath Problem


     zum ersten: es werden 3 jar files im Classpath benötigt
         kontrollierter JVM Start zu Beginn des Jobs => Zahl der
         JVMs = Zahl der Jobs
         Start der JVM direkt vor Verwendung => geht schief, wenn
         bereits aktiv mit falschem Classpath
         SBMJOB und kontrollierter Start JVM => RUNJVA Variante
         mit mehr Programmieraufwand!
         Classpath global setzen => kann zu Konflikten mit anderen
         Anwendungen führen
         Java Extension Mechanismus (extdirs) => noch schlechter:
         höhere Priorität als Classpath




                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
              Java Komponenten in RPG       Die RUNJVA Variante
                        AppServer4RPG       embedded Java in RPG
                    Beispiel im Vergleich   Die Gleiberg Version


Das Classpath Problem


     zum ersten: es werden 3 jar files im Classpath benötigt
         kontrollierter JVM Start zu Beginn des Jobs => Zahl der
         JVMs = Zahl der Jobs
         Start der JVM direkt vor Verwendung => geht schief, wenn
         bereits aktiv mit falschem Classpath
         SBMJOB und kontrollierter Start JVM => RUNJVA Variante
         mit mehr Programmieraufwand!
         Classpath global setzen => kann zu Konflikten mit anderen
         Anwendungen führen
         Java Extension Mechanismus (extdirs) => noch schlechter:
         höhere Priorität als Classpath




                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
              Java Komponenten in RPG       Die RUNJVA Variante
                        AppServer4RPG       embedded Java in RPG
                    Beispiel im Vergleich   Die Gleiberg Version


Das Classpath Problem


     zum ersten: es werden 3 jar files im Classpath benötigt
         kontrollierter JVM Start zu Beginn des Jobs => Zahl der
         JVMs = Zahl der Jobs
         Start der JVM direkt vor Verwendung => geht schief, wenn
         bereits aktiv mit falschem Classpath
         SBMJOB und kontrollierter Start JVM => RUNJVA Variante
         mit mehr Programmieraufwand!
         Classpath global setzen => kann zu Konflikten mit anderen
         Anwendungen führen
         Java Extension Mechanismus (extdirs) => noch schlechter:
         höhere Priorität als Classpath




                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
               Java Komponenten in RPG       Die RUNJVA Variante
                         AppServer4RPG       embedded Java in RPG
                     Beispiel im Vergleich   Die Gleiberg Version


Warum ich es dann gelassen habe


     zum zweiten: jedes Java Statement führt zu mehreren Zeilen
     RPG.
         10 Minuten Programmierung Java <=> ein Tag embedded
         Java in RPG
     zum dritten: Fehelerbehebung mühsam, Fehleranalyse in
     Produktion unmöglich!
         Keine Möglichkeit für Einsatz von log4j
     wahrscheinlich für mehrere Aufrufe schneller als RUNJVA
     Skalierbarkeit eher schlechter bis katastrophal (wenn das jeder
     nutzt)



                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
               Java Komponenten in RPG       Die RUNJVA Variante
                         AppServer4RPG       embedded Java in RPG
                     Beispiel im Vergleich   Die Gleiberg Version


Warum ich es dann gelassen habe


     zum zweiten: jedes Java Statement führt zu mehreren Zeilen
     RPG.
         10 Minuten Programmierung Java <=> ein Tag embedded
         Java in RPG
     zum dritten: Fehelerbehebung mühsam, Fehleranalyse in
     Produktion unmöglich!
         Keine Möglichkeit für Einsatz von log4j
     wahrscheinlich für mehrere Aufrufe schneller als RUNJVA
     Skalierbarkeit eher schlechter bis katastrophal (wenn das jeder
     nutzt)



                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
               Java Komponenten in RPG       Die RUNJVA Variante
                         AppServer4RPG       embedded Java in RPG
                     Beispiel im Vergleich   Die Gleiberg Version


Warum ich es dann gelassen habe


     zum zweiten: jedes Java Statement führt zu mehreren Zeilen
     RPG.
         10 Minuten Programmierung Java <=> ein Tag embedded
         Java in RPG
     zum dritten: Fehelerbehebung mühsam, Fehleranalyse in
     Produktion unmöglich!
         Keine Möglichkeit für Einsatz von log4j
     wahrscheinlich für mehrere Aufrufe schneller als RUNJVA
     Skalierbarkeit eher schlechter bis katastrophal (wenn das jeder
     nutzt)



                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
                 Java Komponenten in RPG       Die RUNJVA Variante
                           AppServer4RPG       embedded Java in RPG
                       Beispiel im Vergleich   Die Gleiberg Version


Die RPG Sicht




  what we want
  install
  AppServer4RPG
  implement the call




                              Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
                 Java Komponenten in RPG       Die RUNJVA Variante
                           AppServer4RPG       embedded Java in RPG
                       Beispiel im Vergleich   Die Gleiberg Version


Die RPG Sicht




  what we want
  install
  AppServer4RPG
  implement the call




                              Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
                 Java Komponenten in RPG       Die RUNJVA Variante
                           AppServer4RPG       embedded Java in RPG
                       Beispiel im Vergleich   Die Gleiberg Version


Die RPG Sicht




  what we want
  install
  AppServer4RPG
  implement the call




                              Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
               Java Komponenten in RPG       Die RUNJVA Variante
                         AppServer4RPG       embedded Java in RPG
                     Beispiel im Vergleich   Die Gleiberg Version


Closing the Chain to Java




  now we need an
  EventHandler to be
  called
  configure
  AppServer4RPG




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
               Java Komponenten in RPG       Die RUNJVA Variante
                         AppServer4RPG       embedded Java in RPG
                     Beispiel im Vergleich   Die Gleiberg Version


Closing the Chain to Java




  now we need an
  EventHandler to be
  called
  configure
  AppServer4RPG




                            Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
              Java Komponenten in RPG       Die RUNJVA Variante
                        AppServer4RPG       embedded Java in RPG
                    Beispiel im Vergleich   Die Gleiberg Version


What Happens Now Calling the RPG Programm?
     the RPG part puts its input parameters to the request DS and
     calls fireEventP
     the RPG part of JVAGATE creates a response DTAQ
     sends the data (and an identifier for the caller Job) in
     packages to the JAVAQ
     listens on the responseQ for the answer
     Now the Java part of AppServer4RPG does its work (hopefully
     it was started)
         starts a new worker Thread to be ready for the next request
         creates a Handler for the requested Event,
         creates Request and Response Objects and calls the
         performWork of the Handler
         sends the response Data back in packages to the ResponseQ.
         known by the identifier passed with the request

                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
              Java Komponenten in RPG       Die RUNJVA Variante
                        AppServer4RPG       embedded Java in RPG
                    Beispiel im Vergleich   Die Gleiberg Version


What Happens Now Calling the RPG Programm?
     the RPG part puts its input parameters to the request DS and
     calls fireEventP
     the RPG part of JVAGATE creates a response DTAQ
     sends the data (and an identifier for the caller Job) in
     packages to the JAVAQ
     listens on the responseQ for the answer
     Now the Java part of AppServer4RPG does its work (hopefully
     it was started)
         starts a new worker Thread to be ready for the next request
         creates a Handler for the requested Event,
         creates Request and Response Objects and calls the
         performWork of the Handler
         sends the response Data back in packages to the ResponseQ.
         known by the identifier passed with the request

                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
              Java Komponenten in RPG       Die RUNJVA Variante
                        AppServer4RPG       embedded Java in RPG
                    Beispiel im Vergleich   Die Gleiberg Version


What Happens Now Calling the RPG Programm?
     the RPG part puts its input parameters to the request DS and
     calls fireEventP
     the RPG part of JVAGATE creates a response DTAQ
     sends the data (and an identifier for the caller Job) in
     packages to the JAVAQ
     listens on the responseQ for the answer
     Now the Java part of AppServer4RPG does its work (hopefully
     it was started)
         starts a new worker Thread to be ready for the next request
         creates a Handler for the requested Event,
         creates Request and Response Objects and calls the
         performWork of the Handler
         sends the response Data back in packages to the ResponseQ.
         known by the identifier passed with the request

                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
                 Java Komponenten in RPG       Die RUNJVA Variante
                           AppServer4RPG       embedded Java in RPG
                       Beispiel im Vergleich   Die Gleiberg Version


The EventHandler



  gets a Request
  a simple
  PORDS2POJO
  binary is set with
  Constructor
  getter for properties
  the EventHandler




                              Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
                 Java Komponenten in RPG       Die RUNJVA Variante
                           AppServer4RPG       embedded Java in RPG
                       Beispiel im Vergleich   Die Gleiberg Version


The EventHandler




  gets a Request
  a simple
  PORDS2POJO
  binary is set with
  Constructor
  getter for properties
  the EventHandler




                              Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
                 Java Komponenten in RPG       Die RUNJVA Variante
                           AppServer4RPG       embedded Java in RPG
                       Beispiel im Vergleich   Die Gleiberg Version


The EventHandler




  gets a Request
  a simple
  PORDS2POJO
  binary is set with
  Constructor
  getter for properties
  the EventHandler




                              Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
                Java Komponenten in RPG       Die RUNJVA Variante
                          AppServer4RPG       embedded Java in RPG
                      Beispiel im Vergleich   Die Gleiberg Version


The Results

      Transaction Times of subseconds
      first call in a Job as fast as following (JVM is prestarted)
      very scalable (one JVM serves multiple RPG Jobs)
      no Classpath issues, simply throw the needed jar files to the lib
      directory of AppServer4RPG
      multiple instances of AppServer4RPG could run on the same
      box with diffrent JVM settings
      AppServer4RPG could be installed on a dedicated server
      less programming effort than embedded Java in RPG
      flexible logging with log4j simplifies trouble shooting


                             Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
                Java Komponenten in RPG       Die RUNJVA Variante
                          AppServer4RPG       embedded Java in RPG
                      Beispiel im Vergleich   Die Gleiberg Version


The Results

      Transaction Times of subseconds
      first call in a Job as fast as following (JVM is prestarted)
      very scalable (one JVM serves multiple RPG Jobs)
      no Classpath issues, simply throw the needed jar files to the lib
      directory of AppServer4RPG
      multiple instances of AppServer4RPG could run on the same
      box with diffrent JVM settings
      AppServer4RPG could be installed on a dedicated server
      less programming effort than embedded Java in RPG
      flexible logging with log4j simplifies trouble shooting


                             Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
                Java Komponenten in RPG       Die RUNJVA Variante
                          AppServer4RPG       embedded Java in RPG
                      Beispiel im Vergleich   Die Gleiberg Version


The Results

      Transaction Times of subseconds
      first call in a Job as fast as following (JVM is prestarted)
      very scalable (one JVM serves multiple RPG Jobs)
      no Classpath issues, simply throw the needed jar files to the lib
      directory of AppServer4RPG
      multiple instances of AppServer4RPG could run on the same
      box with diffrent JVM settings
      AppServer4RPG could be installed on a dedicated server
      less programming effort than embedded Java in RPG
      flexible logging with log4j simplifies trouble shooting


                             Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
                Java Komponenten in RPG       Die RUNJVA Variante
                          AppServer4RPG       embedded Java in RPG
                      Beispiel im Vergleich   Die Gleiberg Version


The Results

      Transaction Times of subseconds
      first call in a Job as fast as following (JVM is prestarted)
      very scalable (one JVM serves multiple RPG Jobs)
      no Classpath issues, simply throw the needed jar files to the lib
      directory of AppServer4RPG
      multiple instances of AppServer4RPG could run on the same
      box with diffrent JVM settings
      AppServer4RPG could be installed on a dedicated server
      less programming effort than embedded Java in RPG
      flexible logging with log4j simplifies trouble shooting


                             Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
                Java Komponenten in RPG       Die RUNJVA Variante
                          AppServer4RPG       embedded Java in RPG
                      Beispiel im Vergleich   Die Gleiberg Version


The Results

      Transaction Times of subseconds
      first call in a Job as fast as following (JVM is prestarted)
      very scalable (one JVM serves multiple RPG Jobs)
      no Classpath issues, simply throw the needed jar files to the lib
      directory of AppServer4RPG
      multiple instances of AppServer4RPG could run on the same
      box with diffrent JVM settings
      AppServer4RPG could be installed on a dedicated server
      less programming effort than embedded Java in RPG
      flexible logging with log4j simplifies trouble shooting


                             Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
                Java Komponenten in RPG       Die RUNJVA Variante
                          AppServer4RPG       embedded Java in RPG
                      Beispiel im Vergleich   Die Gleiberg Version


The Results

      Transaction Times of subseconds
      first call in a Job as fast as following (JVM is prestarted)
      very scalable (one JVM serves multiple RPG Jobs)
      no Classpath issues, simply throw the needed jar files to the lib
      directory of AppServer4RPG
      multiple instances of AppServer4RPG could run on the same
      box with diffrent JVM settings
      AppServer4RPG could be installed on a dedicated server
      less programming effort than embedded Java in RPG
      flexible logging with log4j simplifies trouble shooting


                             Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
              Java Komponenten in RPG       Die RUNJVA Variante
                        AppServer4RPG       embedded Java in RPG
                    Beispiel im Vergleich   Die Gleiberg Version


Summary


    Don’t try to write Java code in RPG, provide Java methods
    with Datastructure parameter interfaces for RPG usage!
    Let your Java Code run in a prestarted resident JVM,
    communicating asynchronous with your native programms.


    Outlook (Nice to have!)
          Dynamic PORDS2POJO Beans.
          True Tomcat Version of AppServer4RPG.




                           Dieter Bender    Hinter den Kulissen von ArdGate
Einführung   Generierung PDF aus HTML
             Java Komponenten in RPG       Die RUNJVA Variante
                       AppServer4RPG       embedded Java in RPG
                   Beispiel im Vergleich   Die Gleiberg Version


Questions?




                          Dieter Bender    Hinter den Kulissen von ArdGate

Weitere ähnliche Inhalte

Andere mochten auch

Ablauf UnternehmensCheck
Ablauf UnternehmensCheckAblauf UnternehmensCheck
Ablauf UnternehmensCheckulrichboldt
 
Fitness
Fitness Fitness
Seminararbeit m11 fre kle-koe-sco-oss 28092010
Seminararbeit m11 fre kle-koe-sco-oss 28092010Seminararbeit m11 fre kle-koe-sco-oss 28092010
Seminararbeit m11 fre kle-koe-sco-oss 28092010Carsten Freundl
 
Iris Klaßen: Professionelles Studierendenmarketing
Iris Klaßen: Professionelles StudierendenmarketingIris Klaßen: Professionelles Studierendenmarketing
Iris Klaßen: Professionelles Studierendenmarketing
Stefanie Kollenberg, Raabe Verlag
 
Christoph Fasel: Der Amtsschimmel wiehert
Christoph Fasel: Der Amtsschimmel wiehertChristoph Fasel: Der Amtsschimmel wiehert
Christoph Fasel: Der Amtsschimmel wiehert
Stefanie Kollenberg, Raabe Verlag
 
AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?
AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?
AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?panagenda
 
Während des Lernens
Während des LernensWährend des Lernens
Während des LernensSrl2012
 
Webbasierte Partizipation in Museen
Webbasierte Partizipation in MuseenWebbasierte Partizipation in Museen
Webbasierte Partizipation in Museen
Bianca Bocatius
 
The biggest Mystery - Das Geheimnis der Welt- Energie
The biggest Mystery - Das Geheimnis der Welt- EnergieThe biggest Mystery - Das Geheimnis der Welt- Energie
The biggest Mystery - Das Geheimnis der Welt- Energie
Gerold Szonn
 
Lemmen qualitaetssicherung als baustelle-wzb-tagung.2006
Lemmen qualitaetssicherung als baustelle-wzb-tagung.2006Lemmen qualitaetssicherung als baustelle-wzb-tagung.2006
Lemmen qualitaetssicherung als baustelle-wzb-tagung.2006Deutsche AIDS-Hilfe
 
Rumbelle
RumbelleRumbelle
Rumbelle
Sirele
 
Nachmachen erwünscht! Transfer soDeutsch Tschechisches Gesprächsforum
Nachmachen erwünscht! Transfer soDeutsch Tschechisches GesprächsforumNachmachen erwünscht! Transfer soDeutsch Tschechisches Gesprächsforum
Nachmachen erwünscht! Transfer soDeutsch Tschechisches GesprächsforumKaP
 
Social Media Einblicke
Social Media Einblicke Social Media Einblicke
Social Media Einblicke
Kirche 2.0
 
Und dann kam
Und dann kamUnd dann kam
Und dann kam
mariahagenauer
 
28 11 el rayo del superhombre www.gftaognosticaespiritual.org
28 11 el rayo del superhombre www.gftaognosticaespiritual.org28 11 el rayo del superhombre www.gftaognosticaespiritual.org
28 11 el rayo del superhombre www.gftaognosticaespiritual.org
Gran Fratervidad Tao Gnostica Espiritual Org
 
imatics Kurzpräsentation
imatics Kurzpräsentationimatics Kurzpräsentation
imatics Kurzpräsentation
imatics Software GmbH
 
Untertitelung: Eine Sonderform der Übersetzung
Untertitelung: Eine Sonderform der ÜbersetzungUntertitelung: Eine Sonderform der Übersetzung
Untertitelung: Eine Sonderform der Übersetzung
CEG de Leipzig
 

Andere mochten auch (20)

Ablauf UnternehmensCheck
Ablauf UnternehmensCheckAblauf UnternehmensCheck
Ablauf UnternehmensCheck
 
Test
TestTest
Test
 
Fitness
Fitness Fitness
Fitness
 
Seminararbeit m11 fre kle-koe-sco-oss 28092010
Seminararbeit m11 fre kle-koe-sco-oss 28092010Seminararbeit m11 fre kle-koe-sco-oss 28092010
Seminararbeit m11 fre kle-koe-sco-oss 28092010
 
Iris Klaßen: Professionelles Studierendenmarketing
Iris Klaßen: Professionelles StudierendenmarketingIris Klaßen: Professionelles Studierendenmarketing
Iris Klaßen: Professionelles Studierendenmarketing
 
Christoph Fasel: Der Amtsschimmel wiehert
Christoph Fasel: Der Amtsschimmel wiehertChristoph Fasel: Der Amtsschimmel wiehert
Christoph Fasel: Der Amtsschimmel wiehert
 
AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?
AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?
AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?
 
MANUALIDADES
MANUALIDADESMANUALIDADES
MANUALIDADES
 
Während des Lernens
Während des LernensWährend des Lernens
Während des Lernens
 
Webbasierte Partizipation in Museen
Webbasierte Partizipation in MuseenWebbasierte Partizipation in Museen
Webbasierte Partizipation in Museen
 
The biggest Mystery - Das Geheimnis der Welt- Energie
The biggest Mystery - Das Geheimnis der Welt- EnergieThe biggest Mystery - Das Geheimnis der Welt- Energie
The biggest Mystery - Das Geheimnis der Welt- Energie
 
Lemmen qualitaetssicherung als baustelle-wzb-tagung.2006
Lemmen qualitaetssicherung als baustelle-wzb-tagung.2006Lemmen qualitaetssicherung als baustelle-wzb-tagung.2006
Lemmen qualitaetssicherung als baustelle-wzb-tagung.2006
 
Rumbelle
RumbelleRumbelle
Rumbelle
 
Test
TestTest
Test
 
Nachmachen erwünscht! Transfer soDeutsch Tschechisches Gesprächsforum
Nachmachen erwünscht! Transfer soDeutsch Tschechisches GesprächsforumNachmachen erwünscht! Transfer soDeutsch Tschechisches Gesprächsforum
Nachmachen erwünscht! Transfer soDeutsch Tschechisches Gesprächsforum
 
Social Media Einblicke
Social Media Einblicke Social Media Einblicke
Social Media Einblicke
 
Und dann kam
Und dann kamUnd dann kam
Und dann kam
 
28 11 el rayo del superhombre www.gftaognosticaespiritual.org
28 11 el rayo del superhombre www.gftaognosticaespiritual.org28 11 el rayo del superhombre www.gftaognosticaespiritual.org
28 11 el rayo del superhombre www.gftaognosticaespiritual.org
 
imatics Kurzpräsentation
imatics Kurzpräsentationimatics Kurzpräsentation
imatics Kurzpräsentation
 
Untertitelung: Eine Sonderform der Übersetzung
Untertitelung: Eine Sonderform der ÜbersetzungUntertitelung: Eine Sonderform der Übersetzung
Untertitelung: Eine Sonderform der Übersetzung
 

Mehr von COMMON Europe

What's New in WebSphere Application Server
What's New in WebSphere Application ServerWhat's New in WebSphere Application Server
What's New in WebSphere Application Server
COMMON Europe
 
Compiling the Compiler
Compiling the CompilerCompiling the Compiler
Compiling the Compiler
COMMON Europe
 
Workload Groups overview updates
Workload Groups overview updatesWorkload Groups overview updates
Workload Groups overview updates
COMMON Europe
 
Why i - Common Europe 2012
Why i - Common Europe 2012Why i - Common Europe 2012
Why i - Common Europe 2012
COMMON Europe
 
The Ruby OpenSSL extension
The Ruby OpenSSL extensionThe Ruby OpenSSL extension
The Ruby OpenSSL extension
COMMON Europe
 
Using Ruby on IBM i (i5/OS)
Using Ruby on IBM i (i5/OS)Using Ruby on IBM i (i5/OS)
Using Ruby on IBM i (i5/OS)
COMMON Europe
 
IBM Systems Director Navigator for i
IBM Systems Director Navigator for iIBM Systems Director Navigator for i
IBM Systems Director Navigator for i
COMMON Europe
 
IBM i Trends & Directions Common Europe 2012
IBM i Trends & Directions Common Europe 2012IBM i Trends & Directions Common Europe 2012
IBM i Trends & Directions Common Europe 2012
COMMON Europe
 
IBM i Technology Refreshes Overview 2012 06-04
IBM i Technology Refreshes Overview 2012 06-04IBM i Technology Refreshes Overview 2012 06-04
IBM i Technology Refreshes Overview 2012 06-04
COMMON Europe
 
IBM i 7.1 & TRs CEC 2012
IBM i 7.1 & TRs CEC 2012IBM i 7.1 & TRs CEC 2012
IBM i 7.1 & TRs CEC 2012
COMMON Europe
 
DB2 Web Query whats new
DB2 Web Query whats newDB2 Web Query whats new
DB2 Web Query whats new
COMMON Europe
 
Access client solutions overview
Access client solutions overviewAccess client solutions overview
Access client solutions overview
COMMON Europe
 
What's new with Zend server
What's new with Zend serverWhat's new with Zend server
What's new with Zend server
COMMON Europe
 
RPG investment
RPG investmentRPG investment
RPG investment
COMMON Europe
 
Php arrays for RPG programmers
Php arrays for RPG programmersPhp arrays for RPG programmers
Php arrays for RPG programmers
COMMON Europe
 
Open source report writing tools for IBM i Vienna 2012
Open source report writing tools for IBM i  Vienna 2012Open source report writing tools for IBM i  Vienna 2012
Open source report writing tools for IBM i Vienna 2012
COMMON Europe
 
Moving 5.4 to 7.1 AB
Moving 5.4 to 7.1 ABMoving 5.4 to 7.1 AB
Moving 5.4 to 7.1 AB
COMMON Europe
 
Introduction to My SQL
Introduction to My SQLIntroduction to My SQL
Introduction to My SQL
COMMON Europe
 
IBM CEC 2012 Storage june 11, 2012
IBM CEC 2012 Storage june 11, 2012IBM CEC 2012 Storage june 11, 2012
IBM CEC 2012 Storage june 11, 2012
COMMON Europe
 
Getting started with PHP on IBM i
Getting started with PHP on IBM iGetting started with PHP on IBM i
Getting started with PHP on IBM i
COMMON Europe
 

Mehr von COMMON Europe (20)

What's New in WebSphere Application Server
What's New in WebSphere Application ServerWhat's New in WebSphere Application Server
What's New in WebSphere Application Server
 
Compiling the Compiler
Compiling the CompilerCompiling the Compiler
Compiling the Compiler
 
Workload Groups overview updates
Workload Groups overview updatesWorkload Groups overview updates
Workload Groups overview updates
 
Why i - Common Europe 2012
Why i - Common Europe 2012Why i - Common Europe 2012
Why i - Common Europe 2012
 
The Ruby OpenSSL extension
The Ruby OpenSSL extensionThe Ruby OpenSSL extension
The Ruby OpenSSL extension
 
Using Ruby on IBM i (i5/OS)
Using Ruby on IBM i (i5/OS)Using Ruby on IBM i (i5/OS)
Using Ruby on IBM i (i5/OS)
 
IBM Systems Director Navigator for i
IBM Systems Director Navigator for iIBM Systems Director Navigator for i
IBM Systems Director Navigator for i
 
IBM i Trends & Directions Common Europe 2012
IBM i Trends & Directions Common Europe 2012IBM i Trends & Directions Common Europe 2012
IBM i Trends & Directions Common Europe 2012
 
IBM i Technology Refreshes Overview 2012 06-04
IBM i Technology Refreshes Overview 2012 06-04IBM i Technology Refreshes Overview 2012 06-04
IBM i Technology Refreshes Overview 2012 06-04
 
IBM i 7.1 & TRs CEC 2012
IBM i 7.1 & TRs CEC 2012IBM i 7.1 & TRs CEC 2012
IBM i 7.1 & TRs CEC 2012
 
DB2 Web Query whats new
DB2 Web Query whats newDB2 Web Query whats new
DB2 Web Query whats new
 
Access client solutions overview
Access client solutions overviewAccess client solutions overview
Access client solutions overview
 
What's new with Zend server
What's new with Zend serverWhat's new with Zend server
What's new with Zend server
 
RPG investment
RPG investmentRPG investment
RPG investment
 
Php arrays for RPG programmers
Php arrays for RPG programmersPhp arrays for RPG programmers
Php arrays for RPG programmers
 
Open source report writing tools for IBM i Vienna 2012
Open source report writing tools for IBM i  Vienna 2012Open source report writing tools for IBM i  Vienna 2012
Open source report writing tools for IBM i Vienna 2012
 
Moving 5.4 to 7.1 AB
Moving 5.4 to 7.1 ABMoving 5.4 to 7.1 AB
Moving 5.4 to 7.1 AB
 
Introduction to My SQL
Introduction to My SQLIntroduction to My SQL
Introduction to My SQL
 
IBM CEC 2012 Storage june 11, 2012
IBM CEC 2012 Storage june 11, 2012IBM CEC 2012 Storage june 11, 2012
IBM CEC 2012 Storage june 11, 2012
 
Getting started with PHP on IBM i
Getting started with PHP on IBM iGetting started with PHP on IBM i
Getting started with PHP on IBM i
 

App server4rp gd - German

  • 1. Einführung Java Komponenten in RPG AppServer4RPG Beispiel im Vergleich Hinter den Kulissen von ArdGate effiziente Aufrufe von Java aus RPG Dieter Bender Dieter Bender Hinter den Kulissen von ArdGate
  • 2. Einführung Vorstellung Java Komponenten in RPG Architektur von ArdGate AppServer4RPG Das Gleiberg Projekt Beispiel im Vergleich Vorstellung WWW.BENDER-DV.DE - Dieter@Bender-DV.de Dieter Bender, D35435 Wettenberg AS/400* Freelancer Java, SQL, ILE RPG, COBOL Anwendungs-Design, Datenbanken Kurse: Java, SQL, ILE RPG Open Source Komponenten ArdGate: SQL Zugriffe von AS400 auf alle Datenbanken AppServer4RPG: schnelle, skalierbare Zugriffe aus RPG auf Java einige RPG Komponenten *) AS/400 := AS/400 und alle kompatiblen Systeme Dieter Bender Hinter den Kulissen von ArdGate
  • 3. Einführung Vorstellung Java Komponenten in RPG Architektur von ArdGate AppServer4RPG Das Gleiberg Projekt Beispiel im Vergleich ArdGate im Überblick *ARDPGM zwingend native JDBC zwingend Java sehr wenig RPG (blau) viel Java (rot) viele calls von Java aus RPG viele Benutzer Umgebung unbekannt Dieter Bender Hinter den Kulissen von ArdGate
  • 4. Einführung Vorstellung Java Komponenten in RPG Architektur von ArdGate AppServer4RPG Das Gleiberg Projekt Beispiel im Vergleich ArdGate im Überblick *ARDPGM zwingend native JDBC zwingend Java sehr wenig RPG (blau) viel Java (rot) viele calls von Java aus RPG viele Benutzer Umgebung unbekannt Dieter Bender Hinter den Kulissen von ArdGate
  • 5. Einführung Vorstellung Java Komponenten in RPG Architektur von ArdGate AppServer4RPG Das Gleiberg Projekt Beispiel im Vergleich ArdGate im Überblick *ARDPGM zwingend native JDBC zwingend Java sehr wenig RPG (blau) viel Java (rot) viele calls von Java aus RPG viele Benutzer Umgebung unbekannt Dieter Bender Hinter den Kulissen von ArdGate
  • 6. Einführung Vorstellung Java Komponenten in RPG Architektur von ArdGate AppServer4RPG Das Gleiberg Projekt Beispiel im Vergleich ArdGate im Überblick *ARDPGM zwingend native JDBC zwingend Java sehr wenig RPG (blau) viel Java (rot) viele calls von Java aus RPG viele Benutzer Umgebung unbekannt Dieter Bender Hinter den Kulissen von ArdGate
  • 7. Einführung Vorstellung Java Komponenten in RPG Architektur von ArdGate AppServer4RPG Das Gleiberg Projekt Beispiel im Vergleich ArdGate im Überblick *ARDPGM zwingend native JDBC zwingend Java sehr wenig RPG (blau) viel Java (rot) viele calls von Java aus RPG viele Benutzer Umgebung unbekannt Dieter Bender Hinter den Kulissen von ArdGate
  • 8. Einführung Vorstellung Java Komponenten in RPG Architektur von ArdGate AppServer4RPG Das Gleiberg Projekt Beispiel im Vergleich ArdGate im Überblick *ARDPGM zwingend native JDBC zwingend Java sehr wenig RPG (blau) viel Java (rot) viele calls von Java aus RPG viele Benutzer Umgebung unbekannt Dieter Bender Hinter den Kulissen von ArdGate
  • 9. Einführung Vorstellung Java Komponenten in RPG Architektur von ArdGate AppServer4RPG Das Gleiberg Projekt Beispiel im Vergleich ArdGate im Überblick *ARDPGM zwingend native JDBC zwingend Java sehr wenig RPG (blau) viel Java (rot) viele calls von Java aus RPG viele Benutzer Umgebung unbekannt Dieter Bender Hinter den Kulissen von ArdGate
  • 10. Einführung Vorstellung Java Komponenten in RPG Architektur von ArdGate AppServer4RPG Das Gleiberg Projekt Beispiel im Vergleich Warum Gleiberg Projekt? AppServer4RPG meine Heimat Open Source zum Schutz des Copyrights eines Freelancers Ergebnis von mehr als 10 Jahren Projekte und Kurse Dieter Bender Hinter den Kulissen von ArdGate
  • 11. Einführung Vorstellung Java Komponenten in RPG Architektur von ArdGate AppServer4RPG Das Gleiberg Projekt Beispiel im Vergleich Warum Gleiberg Projekt? AppServer4RPG meine Heimat Open Source zum Schutz des Copyrights eines Freelancers Ergebnis von mehr als 10 Jahren Projekte und Kurse Dieter Bender Hinter den Kulissen von ArdGate
  • 12. Einführung Vorstellung Java Komponenten in RPG Architektur von ArdGate AppServer4RPG Das Gleiberg Projekt Beispiel im Vergleich Warum Gleiberg Projekt? AppServer4RPG meine Heimat Open Source zum Schutz des Copyrights eines Freelancers Ergebnis von mehr als 10 Jahren Projekte und Kurse Dieter Bender Hinter den Kulissen von ArdGate
  • 13. Einführung Vorstellung Java Komponenten in RPG Architektur von ArdGate AppServer4RPG Das Gleiberg Projekt Beispiel im Vergleich Warum Gleiberg Projekt? AppServer4RPG meine Heimat Open Source zum Schutz des Copyrights eines Freelancers Ergebnis von mehr als 10 Jahren Projekte und Kurse Dieter Bender Hinter den Kulissen von ArdGate
  • 14. Einführung Wofür braucht man das? Java Komponenten in RPG Java Aufrufe aus RPG AppServer4RPG RPGs Java Unterstützung Beispiel im Vergleich Java ist ungleich mächtiger als RPG Java Anwendungen sind Multithreaded Es gibt viele frei verfügbare Java Komponenten Open Source Tools, die man für RPG für Geld nicht bekommt. Programmierer Performace mit OO ungleich größer (bei vergleichbarer Erfahrung) Beispiele für Komponenten: WebServices und XML Erstellung PDF, HTML and EXCEL Datenbankzugriffe mit JDBC Dieter Bender Hinter den Kulissen von ArdGate
  • 15. Einführung Wofür braucht man das? Java Komponenten in RPG Java Aufrufe aus RPG AppServer4RPG RPGs Java Unterstützung Beispiel im Vergleich Java ist ungleich mächtiger als RPG Java Anwendungen sind Multithreaded Es gibt viele frei verfügbare Java Komponenten Open Source Tools, die man für RPG für Geld nicht bekommt. Programmierer Performace mit OO ungleich größer (bei vergleichbarer Erfahrung) Beispiele für Komponenten: WebServices und XML Erstellung PDF, HTML and EXCEL Datenbankzugriffe mit JDBC Dieter Bender Hinter den Kulissen von ArdGate
  • 16. Einführung Wofür braucht man das? Java Komponenten in RPG Java Aufrufe aus RPG AppServer4RPG RPGs Java Unterstützung Beispiel im Vergleich Java ist ungleich mächtiger als RPG Java Anwendungen sind Multithreaded Es gibt viele frei verfügbare Java Komponenten Open Source Tools, die man für RPG für Geld nicht bekommt. Programmierer Performace mit OO ungleich größer (bei vergleichbarer Erfahrung) Beispiele für Komponenten: WebServices und XML Erstellung PDF, HTML and EXCEL Datenbankzugriffe mit JDBC Dieter Bender Hinter den Kulissen von ArdGate
  • 17. Einführung Wofür braucht man das? Java Komponenten in RPG Java Aufrufe aus RPG AppServer4RPG RPGs Java Unterstützung Beispiel im Vergleich Java ist ungleich mächtiger als RPG Java Anwendungen sind Multithreaded Es gibt viele frei verfügbare Java Komponenten Open Source Tools, die man für RPG für Geld nicht bekommt. Programmierer Performace mit OO ungleich größer (bei vergleichbarer Erfahrung) Beispiele für Komponenten: WebServices und XML Erstellung PDF, HTML and EXCEL Datenbankzugriffe mit JDBC Dieter Bender Hinter den Kulissen von ArdGate
  • 18. Einführung Wofür braucht man das? Java Komponenten in RPG Java Aufrufe aus RPG AppServer4RPG RPGs Java Unterstützung Beispiel im Vergleich Java ist ungleich mächtiger als RPG Java Anwendungen sind Multithreaded Es gibt viele frei verfügbare Java Komponenten Open Source Tools, die man für RPG für Geld nicht bekommt. Programmierer Performace mit OO ungleich größer (bei vergleichbarer Erfahrung) Beispiele für Komponenten: WebServices und XML Erstellung PDF, HTML and EXCEL Datenbankzugriffe mit JDBC Dieter Bender Hinter den Kulissen von ArdGate
  • 19. Einführung Wofür braucht man das? Java Komponenten in RPG Java Aufrufe aus RPG AppServer4RPG RPGs Java Unterstützung Beispiel im Vergleich RPG ruft Java auf RUNJVA und QSH CMD(java ...) nur für Java Applikationen keine Rückgabewerte möglich (außer Errorlevel) damit kriegt man jeden Rechner platt! Java stored Procedures Methoden müssen static sein skaliert schlecht im embedded SQL im SQL server Modus (CLI) keien wirksame Kontrolle der JVM JNI Java native Interface JNI ist vorgesehen für Implementierung der JVM und der Java Tools unlesbare und schlecht wartbare Programme Fehlerbehandlung und Analyse aufwändig Dieter Bender Hinter den Kulissen von ArdGate
  • 20. Einführung Wofür braucht man das? Java Komponenten in RPG Java Aufrufe aus RPG AppServer4RPG RPGs Java Unterstützung Beispiel im Vergleich RPG ruft Java auf RUNJVA und QSH CMD(java ...) nur für Java Applikationen keine Rückgabewerte möglich (außer Errorlevel) damit kriegt man jeden Rechner platt! Java stored Procedures Methoden müssen static sein skaliert schlecht im embedded SQL im SQL server Modus (CLI) keien wirksame Kontrolle der JVM JNI Java native Interface JNI ist vorgesehen für Implementierung der JVM und der Java Tools unlesbare und schlecht wartbare Programme Fehlerbehandlung und Analyse aufwändig Dieter Bender Hinter den Kulissen von ArdGate
  • 21. Einführung Wofür braucht man das? Java Komponenten in RPG Java Aufrufe aus RPG AppServer4RPG RPGs Java Unterstützung Beispiel im Vergleich RPG ruft Java auf RUNJVA und QSH CMD(java ...) nur für Java Applikationen keine Rückgabewerte möglich (außer Errorlevel) damit kriegt man jeden Rechner platt! Java stored Procedures Methoden müssen static sein skaliert schlecht im embedded SQL im SQL server Modus (CLI) keien wirksame Kontrolle der JVM JNI Java native Interface JNI ist vorgesehen für Implementierung der JVM und der Java Tools unlesbare und schlecht wartbare Programme Fehlerbehandlung und Analyse aufwändig Dieter Bender Hinter den Kulissen von ArdGate
  • 22. Einführung Wofür braucht man das? Java Komponenten in RPG Java Aufrufe aus RPG AppServer4RPG RPGs Java Unterstützung Beispiel im Vergleich Warum ich kein embedded Java in RPG mag Kontrolle der implizit gestarteten JVM nahezu unmöglich Verwendung normaler Java Komponentem führt zu embedded Java in RPG aufwändig zu programmieren, testen und ändern erste Aufruf ist quälend langsam, zahlreiche JVMs machen jeden Rechner platt (zur Freude von IBM) JNI Unterstützung des RPG Compilers ist schlampig implementiert, abstürzende JVMs nicht kontrollierbar! (keine abstürzenden JVMs sonst beobachtet!!!) zu viel Aufwand für klägliche Ergebnisse Dieter Bender Hinter den Kulissen von ArdGate
  • 23. Einführung Wofür braucht man das? Java Komponenten in RPG Java Aufrufe aus RPG AppServer4RPG RPGs Java Unterstützung Beispiel im Vergleich Warum ich kein embedded Java in RPG mag Kontrolle der implizit gestarteten JVM nahezu unmöglich Verwendung normaler Java Komponentem führt zu embedded Java in RPG aufwändig zu programmieren, testen und ändern erste Aufruf ist quälend langsam, zahlreiche JVMs machen jeden Rechner platt (zur Freude von IBM) JNI Unterstützung des RPG Compilers ist schlampig implementiert, abstürzende JVMs nicht kontrollierbar! (keine abstürzenden JVMs sonst beobachtet!!!) zu viel Aufwand für klägliche Ergebnisse Dieter Bender Hinter den Kulissen von ArdGate
  • 24. Einführung Wofür braucht man das? Java Komponenten in RPG Java Aufrufe aus RPG AppServer4RPG RPGs Java Unterstützung Beispiel im Vergleich Warum ich kein embedded Java in RPG mag Kontrolle der implizit gestarteten JVM nahezu unmöglich Verwendung normaler Java Komponentem führt zu embedded Java in RPG aufwändig zu programmieren, testen und ändern erste Aufruf ist quälend langsam, zahlreiche JVMs machen jeden Rechner platt (zur Freude von IBM) JNI Unterstützung des RPG Compilers ist schlampig implementiert, abstürzende JVMs nicht kontrollierbar! (keine abstürzenden JVMs sonst beobachtet!!!) zu viel Aufwand für klägliche Ergebnisse Dieter Bender Hinter den Kulissen von ArdGate
  • 25. Einführung Wofür braucht man das? Java Komponenten in RPG Java Aufrufe aus RPG AppServer4RPG RPGs Java Unterstützung Beispiel im Vergleich Warum ich kein embedded Java in RPG mag Kontrolle der implizit gestarteten JVM nahezu unmöglich Verwendung normaler Java Komponentem führt zu embedded Java in RPG aufwändig zu programmieren, testen und ändern erste Aufruf ist quälend langsam, zahlreiche JVMs machen jeden Rechner platt (zur Freude von IBM) JNI Unterstützung des RPG Compilers ist schlampig implementiert, abstürzende JVMs nicht kontrollierbar! (keine abstürzenden JVMs sonst beobachtet!!!) zu viel Aufwand für klägliche Ergebnisse Dieter Bender Hinter den Kulissen von ArdGate
  • 26. Einführung Wofür braucht man das? Java Komponenten in RPG Java Aufrufe aus RPG AppServer4RPG RPGs Java Unterstützung Beispiel im Vergleich Warum ich kein embedded Java in RPG mag Kontrolle der implizit gestarteten JVM nahezu unmöglich Verwendung normaler Java Komponentem führt zu embedded Java in RPG aufwändig zu programmieren, testen und ändern erste Aufruf ist quälend langsam, zahlreiche JVMs machen jeden Rechner platt (zur Freude von IBM) JNI Unterstützung des RPG Compilers ist schlampig implementiert, abstürzende JVMs nicht kontrollierbar! (keine abstürzenden JVMs sonst beobachtet!!!) zu viel Aufwand für klägliche Ergebnisse Dieter Bender Hinter den Kulissen von ArdGate
  • 27. Einführung Wofür braucht man das? Java Komponenten in RPG Java Aufrufe aus RPG AppServer4RPG RPGs Java Unterstützung Beispiel im Vergleich Warum ich kein embedded Java in RPG mag Kontrolle der implizit gestarteten JVM nahezu unmöglich Verwendung normaler Java Komponentem führt zu embedded Java in RPG aufwändig zu programmieren, testen und ändern erste Aufruf ist quälend langsam, zahlreiche JVMs machen jeden Rechner platt (zur Freude von IBM) JNI Unterstützung des RPG Compilers ist schlampig implementiert, abstürzende JVMs nicht kontrollierbar! (keine abstürzenden JVMs sonst beobachtet!!!) zu viel Aufwand für klägliche Ergebnisse Dieter Bender Hinter den Kulissen von ArdGate
  • 28. Einführung Architektur von AppServer4RPG Java Komponenten in RPG Das EventHandler Interface AppServer4RPG Das PORDS2POJO Muster Beispiel im Vergleich Architektur Überblick eine vorgestartete JVM arbeitet für viele RPG Clients Kommunikation asynchron erweiterbares EventHandler Konzept RPG verwendet Datenstrukturen als Parameter (Java übersetzt) Dieter Bender Hinter den Kulissen von ArdGate
  • 29. Einführung Architektur von AppServer4RPG Java Komponenten in RPG Das EventHandler Interface AppServer4RPG Das PORDS2POJO Muster Beispiel im Vergleich Architektur Überblick eine vorgestartete JVM arbeitet für viele RPG Clients Kommunikation asynchron erweiterbares EventHandler Konzept RPG verwendet Datenstrukturen als Parameter (Java übersetzt) Dieter Bender Hinter den Kulissen von ArdGate
  • 30. Einführung Architektur von AppServer4RPG Java Komponenten in RPG Das EventHandler Interface AppServer4RPG Das PORDS2POJO Muster Beispiel im Vergleich Architektur Überblick eine vorgestartete JVM arbeitet für viele RPG Clients Kommunikation asynchron erweiterbares EventHandler Konzept RPG verwendet Datenstrukturen als Parameter (Java übersetzt) Dieter Bender Hinter den Kulissen von ArdGate
  • 31. Einführung Architektur von AppServer4RPG Java Komponenten in RPG Das EventHandler Interface AppServer4RPG Das PORDS2POJO Muster Beispiel im Vergleich Architektur Überblick eine vorgestartete JVM arbeitet für viele RPG Clients Kommunikation asynchron erweiterbares EventHandler Konzept RPG verwendet Datenstrukturen als Parameter (Java übersetzt) Dieter Bender Hinter den Kulissen von ArdGate
  • 32. Einführung Architektur von AppServer4RPG Java Komponenten in RPG Das EventHandler Interface AppServer4RPG Das PORDS2POJO Muster Beispiel im Vergleich Die RPG Sicht RPG ruft Java Methode auf zu lesen als: outDS = ARDPGM(inDS) Dieter Bender Hinter den Kulissen von ArdGate
  • 33. Einführung Architektur von AppServer4RPG Java Komponenten in RPG Das EventHandler Interface AppServer4RPG Das PORDS2POJO Muster Beispiel im Vergleich Die RPG Sicht RPG ruft Java Methode auf zu lesen als: outDS = ARDPGM(inDS) Dieter Bender Hinter den Kulissen von ArdGate
  • 34. Einführung Architektur von AppServer4RPG Java Komponenten in RPG Das EventHandler Interface AppServer4RPG Das PORDS2POJO Muster Beispiel im Vergleich Die Java Sicht Action: was soll aufgerufen werden? Was muss ein EventHandler können? Dieter Bender Hinter den Kulissen von ArdGate
  • 35. Einführung Architektur von AppServer4RPG Java Komponenten in RPG Das EventHandler Interface AppServer4RPG Das PORDS2POJO Muster Beispiel im Vergleich Die Java Sicht Action: was soll aufgerufen werden? Was muss ein EventHandler können? Dieter Bender Hinter den Kulissen von ArdGate
  • 36. Einführung Architektur von AppServer4RPG Java Komponenten in RPG Das EventHandler Interface AppServer4RPG Das PORDS2POJO Muster Beispiel im Vergleich Hybrid Objekte Plain Old RPG DataStructure Plain Old Java Object Dieter Bender Hinter den Kulissen von ArdGate
  • 37. Einführung Architektur von AppServer4RPG Java Komponenten in RPG Das EventHandler Interface AppServer4RPG Das PORDS2POJO Muster Beispiel im Vergleich Hybrid Objekte Plain Old RPG DataStructure Plain Old Java Object Dieter Bender Hinter den Kulissen von ArdGate
  • 38. Einführung Architektur von AppServer4RPG Java Komponenten in RPG Das EventHandler Interface AppServer4RPG Das PORDS2POJO Muster Beispiel im Vergleich Doppelgesichtige Objekte als Dolmetscher PORDS2POJO:= ein Java Objekt, das die Übersetzung von Binärdaten (DS) in eine Java Bean kapselt. POJO mit allen Komponenten einer PORDS als Java Typen Objekt Variable für die Binärdaten der PORDS ( private byte[] huddle ) setter und getter für huddle zeigt zu jeder Zeit die Java und die RPG Sicht derselben Daten häufig nur eine Richtung implementiert (DS rein Java Felder raus oder umgekehrt) Dieter Bender Hinter den Kulissen von ArdGate
  • 39. Einführung Architektur von AppServer4RPG Java Komponenten in RPG Das EventHandler Interface AppServer4RPG Das PORDS2POJO Muster Beispiel im Vergleich Doppelgesichtige Objekte als Dolmetscher PORDS2POJO:= ein Java Objekt, das die Übersetzung von Binärdaten (DS) in eine Java Bean kapselt. POJO mit allen Komponenten einer PORDS als Java Typen Objekt Variable für die Binärdaten der PORDS ( private byte[] huddle ) setter und getter für huddle zeigt zu jeder Zeit die Java und die RPG Sicht derselben Daten häufig nur eine Richtung implementiert (DS rein Java Felder raus oder umgekehrt) Dieter Bender Hinter den Kulissen von ArdGate
  • 40. Einführung Architektur von AppServer4RPG Java Komponenten in RPG Das EventHandler Interface AppServer4RPG Das PORDS2POJO Muster Beispiel im Vergleich Doppelgesichtige Objekte als Dolmetscher PORDS2POJO:= ein Java Objekt, das die Übersetzung von Binärdaten (DS) in eine Java Bean kapselt. POJO mit allen Komponenten einer PORDS als Java Typen Objekt Variable für die Binärdaten der PORDS ( private byte[] huddle ) setter und getter für huddle zeigt zu jeder Zeit die Java und die RPG Sicht derselben Daten häufig nur eine Richtung implementiert (DS rein Java Felder raus oder umgekehrt) Dieter Bender Hinter den Kulissen von ArdGate
  • 41. Einführung Architektur von AppServer4RPG Java Komponenten in RPG Das EventHandler Interface AppServer4RPG Das PORDS2POJO Muster Beispiel im Vergleich Doppelgesichtige Objekte als Dolmetscher PORDS2POJO:= ein Java Objekt, das die Übersetzung von Binärdaten (DS) in eine Java Bean kapselt. POJO mit allen Komponenten einer PORDS als Java Typen Objekt Variable für die Binärdaten der PORDS ( private byte[] huddle ) setter und getter für huddle zeigt zu jeder Zeit die Java und die RPG Sicht derselben Daten häufig nur eine Richtung implementiert (DS rein Java Felder raus oder umgekehrt) Dieter Bender Hinter den Kulissen von ArdGate
  • 42. Einführung Architektur von AppServer4RPG Java Komponenten in RPG Das EventHandler Interface AppServer4RPG Das PORDS2POJO Muster Beispiel im Vergleich Doppelgesichtige Objekte als Dolmetscher PORDS2POJO:= ein Java Objekt, das die Übersetzung von Binärdaten (DS) in eine Java Bean kapselt. POJO mit allen Komponenten einer PORDS als Java Typen Objekt Variable für die Binärdaten der PORDS ( private byte[] huddle ) setter und getter für huddle zeigt zu jeder Zeit die Java und die RPG Sicht derselben Daten häufig nur eine Richtung implementiert (DS rein Java Felder raus oder umgekehrt) Dieter Bender Hinter den Kulissen von ArdGate
  • 43. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Aus dem richtigen Leben gegriffen Die Anforderung: RPG Applikation generiert HTML Rechnung Java macht aus HTML und CSS eine PDF Datei Java seitig gibt es iText und Flying Saucer Bedingung: 10.000 Rechnungen in 6 h erste Versuche (Kunde) mit HTML2PDF4I: 30 sec. bis mehrere Minuten pro Rechnung! kurze Gegenprüfung von mir mit Wintel: Sekundenbruchteile! Dieter Bender Hinter den Kulissen von ArdGate
  • 44. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Aus dem richtigen Leben gegriffen Die Anforderung: RPG Applikation generiert HTML Rechnung Java macht aus HTML und CSS eine PDF Datei Java seitig gibt es iText und Flying Saucer Bedingung: 10.000 Rechnungen in 6 h erste Versuche (Kunde) mit HTML2PDF4I: 30 sec. bis mehrere Minuten pro Rechnung! kurze Gegenprüfung von mir mit Wintel: Sekundenbruchteile! Dieter Bender Hinter den Kulissen von ArdGate
  • 45. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Aus dem richtigen Leben gegriffen Die Anforderung: RPG Applikation generiert HTML Rechnung Java macht aus HTML und CSS eine PDF Datei Java seitig gibt es iText und Flying Saucer Bedingung: 10.000 Rechnungen in 6 h erste Versuche (Kunde) mit HTML2PDF4I: 30 sec. bis mehrere Minuten pro Rechnung! kurze Gegenprüfung von mir mit Wintel: Sekundenbruchteile! Dieter Bender Hinter den Kulissen von ArdGate
  • 46. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Aus dem richtigen Leben gegriffen Die Anforderung: RPG Applikation generiert HTML Rechnung Java macht aus HTML und CSS eine PDF Datei Java seitig gibt es iText und Flying Saucer Bedingung: 10.000 Rechnungen in 6 h erste Versuche (Kunde) mit HTML2PDF4I: 30 sec. bis mehrere Minuten pro Rechnung! kurze Gegenprüfung von mir mit Wintel: Sekundenbruchteile! Dieter Bender Hinter den Kulissen von ArdGate
  • 47. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Aus dem richtigen Leben gegriffen Die Anforderung: RPG Applikation generiert HTML Rechnung Java macht aus HTML und CSS eine PDF Datei Java seitig gibt es iText und Flying Saucer Bedingung: 10.000 Rechnungen in 6 h erste Versuche (Kunde) mit HTML2PDF4I: 30 sec. bis mehrere Minuten pro Rechnung! kurze Gegenprüfung von mir mit Wintel: Sekundenbruchteile! Dieter Bender Hinter den Kulissen von ArdGate
  • 48. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version HTML2PDF4I von Aaron Bartell Artikel in IBM Systems Magazine Open Source auf http://mowyourlawn.com Java Applikation als Aufrufhülse for iText und Flying Saucer Aufruf aus RPG mit RUNJVA und gebasteltem Classpath Auf Holgers PUB1 10 sec. für jeden Aufruf neuer Job und Start einer JVM langsam, skaliert aber linear (JVM beendet sich) Dieter Bender Hinter den Kulissen von ArdGate
  • 49. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version HTML2PDF4I von Aaron Bartell Artikel in IBM Systems Magazine Open Source auf http://mowyourlawn.com Java Applikation als Aufrufhülse for iText und Flying Saucer Aufruf aus RPG mit RUNJVA und gebasteltem Classpath Auf Holgers PUB1 10 sec. für jeden Aufruf neuer Job und Start einer JVM langsam, skaliert aber linear (JVM beendet sich) Dieter Bender Hinter den Kulissen von ArdGate
  • 50. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version HTML2PDF4I von Aaron Bartell Artikel in IBM Systems Magazine Open Source auf http://mowyourlawn.com Java Applikation als Aufrufhülse for iText und Flying Saucer Aufruf aus RPG mit RUNJVA und gebasteltem Classpath Auf Holgers PUB1 10 sec. für jeden Aufruf neuer Job und Start einer JVM langsam, skaliert aber linear (JVM beendet sich) Dieter Bender Hinter den Kulissen von ArdGate
  • 51. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Das Classpath Problem zum ersten: es werden 3 jar files im Classpath benötigt kontrollierter JVM Start zu Beginn des Jobs => Zahl der JVMs = Zahl der Jobs Start der JVM direkt vor Verwendung => geht schief, wenn bereits aktiv mit falschem Classpath SBMJOB und kontrollierter Start JVM => RUNJVA Variante mit mehr Programmieraufwand! Classpath global setzen => kann zu Konflikten mit anderen Anwendungen führen Java Extension Mechanismus (extdirs) => noch schlechter: höhere Priorität als Classpath Dieter Bender Hinter den Kulissen von ArdGate
  • 52. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Das Classpath Problem zum ersten: es werden 3 jar files im Classpath benötigt kontrollierter JVM Start zu Beginn des Jobs => Zahl der JVMs = Zahl der Jobs Start der JVM direkt vor Verwendung => geht schief, wenn bereits aktiv mit falschem Classpath SBMJOB und kontrollierter Start JVM => RUNJVA Variante mit mehr Programmieraufwand! Classpath global setzen => kann zu Konflikten mit anderen Anwendungen führen Java Extension Mechanismus (extdirs) => noch schlechter: höhere Priorität als Classpath Dieter Bender Hinter den Kulissen von ArdGate
  • 53. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Das Classpath Problem zum ersten: es werden 3 jar files im Classpath benötigt kontrollierter JVM Start zu Beginn des Jobs => Zahl der JVMs = Zahl der Jobs Start der JVM direkt vor Verwendung => geht schief, wenn bereits aktiv mit falschem Classpath SBMJOB und kontrollierter Start JVM => RUNJVA Variante mit mehr Programmieraufwand! Classpath global setzen => kann zu Konflikten mit anderen Anwendungen führen Java Extension Mechanismus (extdirs) => noch schlechter: höhere Priorität als Classpath Dieter Bender Hinter den Kulissen von ArdGate
  • 54. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Das Classpath Problem zum ersten: es werden 3 jar files im Classpath benötigt kontrollierter JVM Start zu Beginn des Jobs => Zahl der JVMs = Zahl der Jobs Start der JVM direkt vor Verwendung => geht schief, wenn bereits aktiv mit falschem Classpath SBMJOB und kontrollierter Start JVM => RUNJVA Variante mit mehr Programmieraufwand! Classpath global setzen => kann zu Konflikten mit anderen Anwendungen führen Java Extension Mechanismus (extdirs) => noch schlechter: höhere Priorität als Classpath Dieter Bender Hinter den Kulissen von ArdGate
  • 55. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Das Classpath Problem zum ersten: es werden 3 jar files im Classpath benötigt kontrollierter JVM Start zu Beginn des Jobs => Zahl der JVMs = Zahl der Jobs Start der JVM direkt vor Verwendung => geht schief, wenn bereits aktiv mit falschem Classpath SBMJOB und kontrollierter Start JVM => RUNJVA Variante mit mehr Programmieraufwand! Classpath global setzen => kann zu Konflikten mit anderen Anwendungen führen Java Extension Mechanismus (extdirs) => noch schlechter: höhere Priorität als Classpath Dieter Bender Hinter den Kulissen von ArdGate
  • 56. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Warum ich es dann gelassen habe zum zweiten: jedes Java Statement führt zu mehreren Zeilen RPG. 10 Minuten Programmierung Java <=> ein Tag embedded Java in RPG zum dritten: Fehelerbehebung mühsam, Fehleranalyse in Produktion unmöglich! Keine Möglichkeit für Einsatz von log4j wahrscheinlich für mehrere Aufrufe schneller als RUNJVA Skalierbarkeit eher schlechter bis katastrophal (wenn das jeder nutzt) Dieter Bender Hinter den Kulissen von ArdGate
  • 57. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Warum ich es dann gelassen habe zum zweiten: jedes Java Statement führt zu mehreren Zeilen RPG. 10 Minuten Programmierung Java <=> ein Tag embedded Java in RPG zum dritten: Fehelerbehebung mühsam, Fehleranalyse in Produktion unmöglich! Keine Möglichkeit für Einsatz von log4j wahrscheinlich für mehrere Aufrufe schneller als RUNJVA Skalierbarkeit eher schlechter bis katastrophal (wenn das jeder nutzt) Dieter Bender Hinter den Kulissen von ArdGate
  • 58. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Warum ich es dann gelassen habe zum zweiten: jedes Java Statement führt zu mehreren Zeilen RPG. 10 Minuten Programmierung Java <=> ein Tag embedded Java in RPG zum dritten: Fehelerbehebung mühsam, Fehleranalyse in Produktion unmöglich! Keine Möglichkeit für Einsatz von log4j wahrscheinlich für mehrere Aufrufe schneller als RUNJVA Skalierbarkeit eher schlechter bis katastrophal (wenn das jeder nutzt) Dieter Bender Hinter den Kulissen von ArdGate
  • 59. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Die RPG Sicht what we want install AppServer4RPG implement the call Dieter Bender Hinter den Kulissen von ArdGate
  • 60. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Die RPG Sicht what we want install AppServer4RPG implement the call Dieter Bender Hinter den Kulissen von ArdGate
  • 61. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Die RPG Sicht what we want install AppServer4RPG implement the call Dieter Bender Hinter den Kulissen von ArdGate
  • 62. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Closing the Chain to Java now we need an EventHandler to be called configure AppServer4RPG Dieter Bender Hinter den Kulissen von ArdGate
  • 63. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Closing the Chain to Java now we need an EventHandler to be called configure AppServer4RPG Dieter Bender Hinter den Kulissen von ArdGate
  • 64. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version What Happens Now Calling the RPG Programm? the RPG part puts its input parameters to the request DS and calls fireEventP the RPG part of JVAGATE creates a response DTAQ sends the data (and an identifier for the caller Job) in packages to the JAVAQ listens on the responseQ for the answer Now the Java part of AppServer4RPG does its work (hopefully it was started) starts a new worker Thread to be ready for the next request creates a Handler for the requested Event, creates Request and Response Objects and calls the performWork of the Handler sends the response Data back in packages to the ResponseQ. known by the identifier passed with the request Dieter Bender Hinter den Kulissen von ArdGate
  • 65. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version What Happens Now Calling the RPG Programm? the RPG part puts its input parameters to the request DS and calls fireEventP the RPG part of JVAGATE creates a response DTAQ sends the data (and an identifier for the caller Job) in packages to the JAVAQ listens on the responseQ for the answer Now the Java part of AppServer4RPG does its work (hopefully it was started) starts a new worker Thread to be ready for the next request creates a Handler for the requested Event, creates Request and Response Objects and calls the performWork of the Handler sends the response Data back in packages to the ResponseQ. known by the identifier passed with the request Dieter Bender Hinter den Kulissen von ArdGate
  • 66. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version What Happens Now Calling the RPG Programm? the RPG part puts its input parameters to the request DS and calls fireEventP the RPG part of JVAGATE creates a response DTAQ sends the data (and an identifier for the caller Job) in packages to the JAVAQ listens on the responseQ for the answer Now the Java part of AppServer4RPG does its work (hopefully it was started) starts a new worker Thread to be ready for the next request creates a Handler for the requested Event, creates Request and Response Objects and calls the performWork of the Handler sends the response Data back in packages to the ResponseQ. known by the identifier passed with the request Dieter Bender Hinter den Kulissen von ArdGate
  • 67. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version The EventHandler gets a Request a simple PORDS2POJO binary is set with Constructor getter for properties the EventHandler Dieter Bender Hinter den Kulissen von ArdGate
  • 68. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version The EventHandler gets a Request a simple PORDS2POJO binary is set with Constructor getter for properties the EventHandler Dieter Bender Hinter den Kulissen von ArdGate
  • 69. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version The EventHandler gets a Request a simple PORDS2POJO binary is set with Constructor getter for properties the EventHandler Dieter Bender Hinter den Kulissen von ArdGate
  • 70. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version The Results Transaction Times of subseconds first call in a Job as fast as following (JVM is prestarted) very scalable (one JVM serves multiple RPG Jobs) no Classpath issues, simply throw the needed jar files to the lib directory of AppServer4RPG multiple instances of AppServer4RPG could run on the same box with diffrent JVM settings AppServer4RPG could be installed on a dedicated server less programming effort than embedded Java in RPG flexible logging with log4j simplifies trouble shooting Dieter Bender Hinter den Kulissen von ArdGate
  • 71. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version The Results Transaction Times of subseconds first call in a Job as fast as following (JVM is prestarted) very scalable (one JVM serves multiple RPG Jobs) no Classpath issues, simply throw the needed jar files to the lib directory of AppServer4RPG multiple instances of AppServer4RPG could run on the same box with diffrent JVM settings AppServer4RPG could be installed on a dedicated server less programming effort than embedded Java in RPG flexible logging with log4j simplifies trouble shooting Dieter Bender Hinter den Kulissen von ArdGate
  • 72. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version The Results Transaction Times of subseconds first call in a Job as fast as following (JVM is prestarted) very scalable (one JVM serves multiple RPG Jobs) no Classpath issues, simply throw the needed jar files to the lib directory of AppServer4RPG multiple instances of AppServer4RPG could run on the same box with diffrent JVM settings AppServer4RPG could be installed on a dedicated server less programming effort than embedded Java in RPG flexible logging with log4j simplifies trouble shooting Dieter Bender Hinter den Kulissen von ArdGate
  • 73. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version The Results Transaction Times of subseconds first call in a Job as fast as following (JVM is prestarted) very scalable (one JVM serves multiple RPG Jobs) no Classpath issues, simply throw the needed jar files to the lib directory of AppServer4RPG multiple instances of AppServer4RPG could run on the same box with diffrent JVM settings AppServer4RPG could be installed on a dedicated server less programming effort than embedded Java in RPG flexible logging with log4j simplifies trouble shooting Dieter Bender Hinter den Kulissen von ArdGate
  • 74. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version The Results Transaction Times of subseconds first call in a Job as fast as following (JVM is prestarted) very scalable (one JVM serves multiple RPG Jobs) no Classpath issues, simply throw the needed jar files to the lib directory of AppServer4RPG multiple instances of AppServer4RPG could run on the same box with diffrent JVM settings AppServer4RPG could be installed on a dedicated server less programming effort than embedded Java in RPG flexible logging with log4j simplifies trouble shooting Dieter Bender Hinter den Kulissen von ArdGate
  • 75. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version The Results Transaction Times of subseconds first call in a Job as fast as following (JVM is prestarted) very scalable (one JVM serves multiple RPG Jobs) no Classpath issues, simply throw the needed jar files to the lib directory of AppServer4RPG multiple instances of AppServer4RPG could run on the same box with diffrent JVM settings AppServer4RPG could be installed on a dedicated server less programming effort than embedded Java in RPG flexible logging with log4j simplifies trouble shooting Dieter Bender Hinter den Kulissen von ArdGate
  • 76. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Summary Don’t try to write Java code in RPG, provide Java methods with Datastructure parameter interfaces for RPG usage! Let your Java Code run in a prestarted resident JVM, communicating asynchronous with your native programms. Outlook (Nice to have!) Dynamic PORDS2POJO Beans. True Tomcat Version of AppServer4RPG. Dieter Bender Hinter den Kulissen von ArdGate
  • 77. Einführung Generierung PDF aus HTML Java Komponenten in RPG Die RUNJVA Variante AppServer4RPG embedded Java in RPG Beispiel im Vergleich Die Gleiberg Version Questions? Dieter Bender Hinter den Kulissen von ArdGate