SlideShare a Scribd company logo
1 of 77
Download to read offline
Introduction
    RPG Calls Java
   AppServer4RPG
Benchmark Example




       Inside ArdGate
   fast, stable and scalable
      RPG to Java calls


          Dieter Bender




     Dieter Bender   Inside ArdGate
Introduction
                                        Who is Dieter Bender
                       RPG Calls Java
                                        Architecture of ArdGate
                      AppServer4RPG
                                        The Gleiberg Project
                   Benchmark Example


Who is Dieter Bender

     WWW.BENDER-DV.DE
     Dieter Bender, 35435 Wettenberg, Germany
     AS/400 consultant
         Java, SQL, ILE RPG, COBOL
         Application integration, Database
     Training: Java, SQL, ILE RPG
     Open source components
         ArdGate: access any database from i with SQL
         AppServer4RPG: stable, scalable and fast RPG to Java
         integration
         some RPG components
     Dieter@Bender-DV.de


                        Dieter Bender   Inside ArdGate
Introduction
                                           Who is Dieter Bender
                          RPG Calls Java
                                           Architecture of ArdGate
                         AppServer4RPG
                                           The Gleiberg Project
                      Benchmark Example


Architecture

 *ARDPGM must
 be native
 JDBC must be
 Java
 very few RPG
 (blue)
 lots of Java (red)
 lots of calls from
 RPG to Java
 multiple users
 no controll of
 environment
                           Dieter Bender   Inside ArdGate
Introduction
                                           Who is Dieter Bender
                          RPG Calls Java
                                           Architecture of ArdGate
                         AppServer4RPG
                                           The Gleiberg Project
                      Benchmark Example


Architecture

 *ARDPGM must
 be native
 JDBC must be
 Java
 very few RPG
 (blue)
 lots of Java (red)
 lots of calls from
 RPG to Java
 multiple users
 no controll of
 environment
                           Dieter Bender   Inside ArdGate
Introduction
                                           Who is Dieter Bender
                          RPG Calls Java
                                           Architecture of ArdGate
                         AppServer4RPG
                                           The Gleiberg Project
                      Benchmark Example


Architecture

 *ARDPGM must
 be native
 JDBC must be
 Java
 very few RPG
 (blue)
 lots of Java (red)
 lots of calls from
 RPG to Java
 multiple users
 no controll of
 environment
                           Dieter Bender   Inside ArdGate
Introduction
                                           Who is Dieter Bender
                          RPG Calls Java
                                           Architecture of ArdGate
                         AppServer4RPG
                                           The Gleiberg Project
                      Benchmark Example


Architecture

 *ARDPGM must
 be native
 JDBC must be
 Java
 very few RPG
 (blue)
 lots of Java (red)
 lots of calls from
 RPG to Java
 multiple users
 no controll of
 environment
                           Dieter Bender   Inside ArdGate
Introduction
                                           Who is Dieter Bender
                          RPG Calls Java
                                           Architecture of ArdGate
                         AppServer4RPG
                                           The Gleiberg Project
                      Benchmark Example


Architecture

 *ARDPGM must
 be native
 JDBC must be
 Java
 very few RPG
 (blue)
 lots of Java (red)
 lots of calls from
 RPG to Java
 multiple users
 no controll of
 environment
                           Dieter Bender   Inside ArdGate
Introduction
                                           Who is Dieter Bender
                          RPG Calls Java
                                           Architecture of ArdGate
                         AppServer4RPG
                                           The Gleiberg Project
                      Benchmark Example


Architecture

 *ARDPGM must
 be native
 JDBC must be
 Java
 very few RPG
 (blue)
 lots of Java (red)
 lots of calls from
 RPG to Java
 multiple users
 no controll of
 environment
                           Dieter Bender   Inside ArdGate
Introduction
                                           Who is Dieter Bender
                          RPG Calls Java
                                           Architecture of ArdGate
                         AppServer4RPG
                                           The Gleiberg Project
                      Benchmark Example


Architecture

 *ARDPGM must
 be native
 JDBC must be
 Java
 very few RPG
 (blue)
 lots of Java (red)
 lots of calls from
 RPG to Java
 multiple users
 no controll of
 environment
                           Dieter Bender   Inside ArdGate
Introduction
                                          Who is Dieter Bender
                         RPG Calls Java
                                          Architecture of ArdGate
                        AppServer4RPG
                                          The Gleiberg Project
                     Benchmark Example


Why Gleiberg Project?



 AppServer4RPG
 I’m living nearby
 open source to
 protect copyright
 of a Freelancer
 result of > 10
 years teaching
 and project
 experience



                          Dieter Bender   Inside ArdGate
Introduction
                                          Who is Dieter Bender
                         RPG Calls Java
                                          Architecture of ArdGate
                        AppServer4RPG
                                          The Gleiberg Project
                     Benchmark Example


Why Gleiberg Project?



 AppServer4RPG
 I’m living nearby
 open source to
 protect copyright
 of a Freelancer
 result of > 10
 years teaching
 and project
 experience



                          Dieter Bender   Inside ArdGate
Introduction
                                          Who is Dieter Bender
                         RPG Calls Java
                                          Architecture of ArdGate
                        AppServer4RPG
                                          The Gleiberg Project
                     Benchmark Example


Why Gleiberg Project?



 AppServer4RPG
 I’m living nearby
 open source to
 protect copyright
 of a Freelancer
 result of > 10
 years teaching
 and project
 experience



                          Dieter Bender   Inside ArdGate
Introduction
                                          Who is Dieter Bender
                         RPG Calls Java
                                          Architecture of ArdGate
                        AppServer4RPG
                                          The Gleiberg Project
                     Benchmark Example


Why Gleiberg Project?



 AppServer4RPG
 I’m living nearby
 open source to
 protect copyright
 of a Freelancer
 result of > 10
 years teaching
 and project
 experience



                          Dieter Bender   Inside ArdGate
Introduction
                                         Why is this Important?
                        RPG Calls Java
                                         Ways to Call Java from RPG
                       AppServer4RPG
                                         RPGs JNI Support
                    Benchmark Example


RPG is only a Subset of Java


      Java is designed for multithreading
      Java has lots of high quality open source components
      Java has lots of high quality open source tools RPG doesn’t
      have for money
      programmer productivity with OO languages is by far higher
      (by same level of experience)
      some examples:
          WebServices and XML
          generating PDF, HTML and EXCEL
          JDBC access to databases



                         Dieter Bender   Inside ArdGate
Introduction
                                         Why is this Important?
                        RPG Calls Java
                                         Ways to Call Java from RPG
                       AppServer4RPG
                                         RPGs JNI Support
                    Benchmark Example


RPG is only a Subset of Java


      Java is designed for multithreading
      Java has lots of high quality open source components
      Java has lots of high quality open source tools RPG doesn’t
      have for money
      programmer productivity with OO languages is by far higher
      (by same level of experience)
      some examples:
          WebServices and XML
          generating PDF, HTML and EXCEL
          JDBC access to databases



                         Dieter Bender   Inside ArdGate
Introduction
                                         Why is this Important?
                        RPG Calls Java
                                         Ways to Call Java from RPG
                       AppServer4RPG
                                         RPGs JNI Support
                    Benchmark Example


RPG is only a Subset of Java


      Java is designed for multithreading
      Java has lots of high quality open source components
      Java has lots of high quality open source tools RPG doesn’t
      have for money
      programmer productivity with OO languages is by far higher
      (by same level of experience)
      some examples:
          WebServices and XML
          generating PDF, HTML and EXCEL
          JDBC access to databases



                         Dieter Bender   Inside ArdGate
Introduction
                                         Why is this Important?
                        RPG Calls Java
                                         Ways to Call Java from RPG
                       AppServer4RPG
                                         RPGs JNI Support
                    Benchmark Example


RPG is only a Subset of Java


      Java is designed for multithreading
      Java has lots of high quality open source components
      Java has lots of high quality open source tools RPG doesn’t
      have for money
      programmer productivity with OO languages is by far higher
      (by same level of experience)
      some examples:
          WebServices and XML
          generating PDF, HTML and EXCEL
          JDBC access to databases



                         Dieter Bender   Inside ArdGate
Introduction
                                         Why is this Important?
                        RPG Calls Java
                                         Ways to Call Java from RPG
                       AppServer4RPG
                                         RPGs JNI Support
                    Benchmark Example


RPG is only a Subset of Java


      Java is designed for multithreading
      Java has lots of high quality open source components
      Java has lots of high quality open source tools RPG doesn’t
      have for money
      programmer productivity with OO languages is by far higher
      (by same level of experience)
      some examples:
          WebServices and XML
          generating PDF, HTML and EXCEL
          JDBC access to databases



                         Dieter Bender   Inside ArdGate
Introduction
                                        Why is this Important?
                       RPG Calls Java
                                        Ways to Call Java from RPG
                      AppServer4RPG
                                        RPGs JNI Support
                   Benchmark Example


RPG Calls Java

     RUNJVA and QSH CMD(java ...)
         only Java applications could be called
         only error level is coming back
         horrible Overhead
     Java stored procedures
         only static methods could be called
         in SQL client mode not scaling
         in SQL server mode no controll over JVM properties
     JNI Java native interface
         was designed for C implementation of JVM and
         implementation of the Java tools
         cryptic programming and bad maintainability of code
         error recovery and analysis is complicated


                        Dieter Bender   Inside ArdGate
Introduction
                                        Why is this Important?
                       RPG Calls Java
                                        Ways to Call Java from RPG
                      AppServer4RPG
                                        RPGs JNI Support
                   Benchmark Example


RPG Calls Java

     RUNJVA and QSH CMD(java ...)
         only Java applications could be called
         only error level is coming back
         horrible Overhead
     Java stored procedures
         only static methods could be called
         in SQL client mode not scaling
         in SQL server mode no controll over JVM properties
     JNI Java native interface
         was designed for C implementation of JVM and
         implementation of the Java tools
         cryptic programming and bad maintainability of code
         error recovery and analysis is complicated


                        Dieter Bender   Inside ArdGate
Introduction
                                        Why is this Important?
                       RPG Calls Java
                                        Ways to Call Java from RPG
                      AppServer4RPG
                                        RPGs JNI Support
                   Benchmark Example


RPG Calls Java

     RUNJVA and QSH CMD(java ...)
         only Java applications could be called
         only error level is coming back
         horrible Overhead
     Java stored procedures
         only static methods could be called
         in SQL client mode not scaling
         in SQL server mode no controll over JVM properties
     JNI Java native interface
         was designed for C implementation of JVM and
         implementation of the Java tools
         cryptic programming and bad maintainability of code
         error recovery and analysis is complicated


                        Dieter Bender   Inside ArdGate
Introduction
                                        Why is this Important?
                       RPG Calls Java
                                        Ways to Call Java from RPG
                      AppServer4RPG
                                        RPGs JNI Support
                   Benchmark Example


Why I Don’t Like Embedded Java in RPG

     controll of the Java environment is near to impossible, because
     the JVM is started automatically
     using normal Java components produces embedded Java in
     RPG
     these programms are hard to develop, debug and maintain
     first call is very slow and starting hundreds or thousands JVM
     makes IBM happy, but doesn’t scale well
     the implementation of the JNI support in the RPG compiler is
     buggy and crashing JVMs are not recovereable! (BTW: never
     saw a crashing JVM outside the JNI support of RPG!!!)
     too much programming effort for suboptimal results


                        Dieter Bender   Inside ArdGate
Introduction
                                        Why is this Important?
                       RPG Calls Java
                                        Ways to Call Java from RPG
                      AppServer4RPG
                                        RPGs JNI Support
                   Benchmark Example


Why I Don’t Like Embedded Java in RPG

     controll of the Java environment is near to impossible, because
     the JVM is started automatically
     using normal Java components produces embedded Java in
     RPG
     these programms are hard to develop, debug and maintain
     first call is very slow and starting hundreds or thousands JVM
     makes IBM happy, but doesn’t scale well
     the implementation of the JNI support in the RPG compiler is
     buggy and crashing JVMs are not recovereable! (BTW: never
     saw a crashing JVM outside the JNI support of RPG!!!)
     too much programming effort for suboptimal results


                        Dieter Bender   Inside ArdGate
Introduction
                                        Why is this Important?
                       RPG Calls Java
                                        Ways to Call Java from RPG
                      AppServer4RPG
                                        RPGs JNI Support
                   Benchmark Example


Why I Don’t Like Embedded Java in RPG

     controll of the Java environment is near to impossible, because
     the JVM is started automatically
     using normal Java components produces embedded Java in
     RPG
     these programms are hard to develop, debug and maintain
     first call is very slow and starting hundreds or thousands JVM
     makes IBM happy, but doesn’t scale well
     the implementation of the JNI support in the RPG compiler is
     buggy and crashing JVMs are not recovereable! (BTW: never
     saw a crashing JVM outside the JNI support of RPG!!!)
     too much programming effort for suboptimal results


                        Dieter Bender   Inside ArdGate
Introduction
                                        Why is this Important?
                       RPG Calls Java
                                        Ways to Call Java from RPG
                      AppServer4RPG
                                        RPGs JNI Support
                   Benchmark Example


Why I Don’t Like Embedded Java in RPG

     controll of the Java environment is near to impossible, because
     the JVM is started automatically
     using normal Java components produces embedded Java in
     RPG
     these programms are hard to develop, debug and maintain
     first call is very slow and starting hundreds or thousands JVM
     makes IBM happy, but doesn’t scale well
     the implementation of the JNI support in the RPG compiler is
     buggy and crashing JVMs are not recovereable! (BTW: never
     saw a crashing JVM outside the JNI support of RPG!!!)
     too much programming effort for suboptimal results


                        Dieter Bender   Inside ArdGate
Introduction
                                        Why is this Important?
                       RPG Calls Java
                                        Ways to Call Java from RPG
                      AppServer4RPG
                                        RPGs JNI Support
                   Benchmark Example


Why I Don’t Like Embedded Java in RPG

     controll of the Java environment is near to impossible, because
     the JVM is started automatically
     using normal Java components produces embedded Java in
     RPG
     these programms are hard to develop, debug and maintain
     first call is very slow and starting hundreds or thousands JVM
     makes IBM happy, but doesn’t scale well
     the implementation of the JNI support in the RPG compiler is
     buggy and crashing JVMs are not recovereable! (BTW: never
     saw a crashing JVM outside the JNI support of RPG!!!)
     too much programming effort for suboptimal results


                        Dieter Bender   Inside ArdGate
Introduction
                                        Why is this Important?
                       RPG Calls Java
                                        Ways to Call Java from RPG
                      AppServer4RPG
                                        RPGs JNI Support
                   Benchmark Example


Why I Don’t Like Embedded Java in RPG

     controll of the Java environment is near to impossible, because
     the JVM is started automatically
     using normal Java components produces embedded Java in
     RPG
     these programms are hard to develop, debug and maintain
     first call is very slow and starting hundreds or thousands JVM
     makes IBM happy, but doesn’t scale well
     the implementation of the JNI support in the RPG compiler is
     buggy and crashing JVMs are not recovereable! (BTW: never
     saw a crashing JVM outside the JNI support of RPG!!!)
     too much programming effort for suboptimal results


                        Dieter Bender   Inside ArdGate
Introduction
                                       Architecture of AppServer4RPG
                      RPG Calls Java
                                       The EventHandler Interface
                     AppServer4RPG
                                       The PORDS2POJO Pattern
                  Benchmark Example


Architecture Overview
 one resident
 JVM serves
 multiple RPG
 clients
 asynchronous
 communication
 extendable
 EventHandler
 concept
 RPG sends and
 receives
 DataStructure
 (translated by
 Java)
                       Dieter Bender   Inside ArdGate
Introduction
                                       Architecture of AppServer4RPG
                      RPG Calls Java
                                       The EventHandler Interface
                     AppServer4RPG
                                       The PORDS2POJO Pattern
                  Benchmark Example


Architecture Overview
 one resident
 JVM serves
 multiple RPG
 clients
 asynchronous
 communication
 extendable
 EventHandler
 concept
 RPG sends and
 receives
 DataStructure
 (translated by
 Java)
                       Dieter Bender   Inside ArdGate
Introduction
                                       Architecture of AppServer4RPG
                      RPG Calls Java
                                       The EventHandler Interface
                     AppServer4RPG
                                       The PORDS2POJO Pattern
                  Benchmark Example


Architecture Overview
 one resident
 JVM serves
 multiple RPG
 clients
 asynchronous
 communication
 extendable
 EventHandler
 concept
 RPG sends and
 receives
 DataStructure
 (translated by
 Java)
                       Dieter Bender   Inside ArdGate
Introduction
                                       Architecture of AppServer4RPG
                      RPG Calls Java
                                       The EventHandler Interface
                     AppServer4RPG
                                       The PORDS2POJO Pattern
                  Benchmark Example


Architecture Overview
 one resident
 JVM serves
 multiple RPG
 clients
 asynchronous
 communication
 extendable
 EventHandler
 concept
 RPG sends and
 receives
 DataStructure
 (translated by
 Java)
                       Dieter Bender   Inside ArdGate
Introduction
                                         Architecture of AppServer4RPG
                        RPG Calls Java
                                         The EventHandler Interface
                       AppServer4RPG
                                         The PORDS2POJO Pattern
                    Benchmark Example


The RPG Perspective




   RPG calls Java
   method
   read as:
   outDS =
   ARDPGM(inDS)




                         Dieter Bender   Inside ArdGate
Introduction
                                         Architecture of AppServer4RPG
                        RPG Calls Java
                                         The EventHandler Interface
                       AppServer4RPG
                                         The PORDS2POJO Pattern
                    Benchmark Example


The RPG Perspective




   RPG calls Java
   method
   read as:
   outDS =
   ARDPGM(inDS)




                         Dieter Bender   Inside ArdGate
Introduction
                                            Architecture of AppServer4RPG
                           RPG Calls Java
                                            The EventHandler Interface
                          AppServer4RPG
                                            The PORDS2POJO Pattern
                       Benchmark Example


The Java Perspective




   Action: what
   should be called?
   how has the
   handler to look
   like?




                            Dieter Bender   Inside ArdGate
Introduction
                                            Architecture of AppServer4RPG
                           RPG Calls Java
                                            The EventHandler Interface
                          AppServer4RPG
                                            The PORDS2POJO Pattern
                       Benchmark Example


The Java Perspective




   Action: what
   should be called?
   how has the
   handler to look
   like?




                            Dieter Bender   Inside ArdGate
Introduction
                                         Architecture of AppServer4RPG
                        RPG Calls Java
                                         The EventHandler Interface
                       AppServer4RPG
                                         The PORDS2POJO Pattern
                    Benchmark Example


Hybrid Objects




   Plain Old RPG
   DataStructure
   Plain Old Java
   Object




                         Dieter Bender   Inside ArdGate
Introduction
                                         Architecture of AppServer4RPG
                        RPG Calls Java
                                         The EventHandler Interface
                       AppServer4RPG
                                         The PORDS2POJO Pattern
                    Benchmark Example


Hybrid Objects




   Plain Old RPG
   DataStructure
   Plain Old Java
   Object




                         Dieter Bender   Inside ArdGate
Introduction
                                         Architecture of AppServer4RPG
                        RPG Calls Java
                                         The EventHandler Interface
                       AppServer4RPG
                                         The PORDS2POJO Pattern
                    Benchmark Example


Translation Objects


      PORDS2POJO:= a Java object, encapsulating the
      translation between the binary representation of a PORDS and
      a POJO
          POJO with all components of the PORDS as Java types
          object variable to hold the PORDS ( private byte[] huddle )
          setter and getter for the binary huddle
          this Hybrid objects always reflect the Java and the RPG
          perspective of the same data
          sometimes only on direction is needed and implemented




                         Dieter Bender   Inside ArdGate
Introduction
                                         Architecture of AppServer4RPG
                        RPG Calls Java
                                         The EventHandler Interface
                       AppServer4RPG
                                         The PORDS2POJO Pattern
                    Benchmark Example


Translation Objects


      PORDS2POJO:= a Java object, encapsulating the
      translation between the binary representation of a PORDS and
      a POJO
          POJO with all components of the PORDS as Java types
          object variable to hold the PORDS ( private byte[] huddle )
          setter and getter for the binary huddle
          this Hybrid objects always reflect the Java and the RPG
          perspective of the same data
          sometimes only on direction is needed and implemented




                         Dieter Bender   Inside ArdGate
Introduction
                                         Architecture of AppServer4RPG
                        RPG Calls Java
                                         The EventHandler Interface
                       AppServer4RPG
                                         The PORDS2POJO Pattern
                    Benchmark Example


Translation Objects


      PORDS2POJO:= a Java object, encapsulating the
      translation between the binary representation of a PORDS and
      a POJO
          POJO with all components of the PORDS as Java types
          object variable to hold the PORDS ( private byte[] huddle )
          setter and getter for the binary huddle
          this Hybrid objects always reflect the Java and the RPG
          perspective of the same data
          sometimes only on direction is needed and implemented




                         Dieter Bender   Inside ArdGate
Introduction
                                         Architecture of AppServer4RPG
                        RPG Calls Java
                                         The EventHandler Interface
                       AppServer4RPG
                                         The PORDS2POJO Pattern
                    Benchmark Example


Translation Objects


      PORDS2POJO:= a Java object, encapsulating the
      translation between the binary representation of a PORDS and
      a POJO
          POJO with all components of the PORDS as Java types
          object variable to hold the PORDS ( private byte[] huddle )
          setter and getter for the binary huddle
          this Hybrid objects always reflect the Java and the RPG
          perspective of the same data
          sometimes only on direction is needed and implemented




                         Dieter Bender   Inside ArdGate
Introduction
                                         Architecture of AppServer4RPG
                        RPG Calls Java
                                         The EventHandler Interface
                       AppServer4RPG
                                         The PORDS2POJO Pattern
                    Benchmark Example


Translation Objects


      PORDS2POJO:= a Java object, encapsulating the
      translation between the binary representation of a PORDS and
      a POJO
          POJO with all components of the PORDS as Java types
          object variable to hold the PORDS ( private byte[] huddle )
          setter and getter for the binary huddle
          this Hybrid objects always reflect the Java and the RPG
          perspective of the same data
          sometimes only on direction is needed and implemented




                         Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                        RPG Calls Java   The RUNJVA Way
                       AppServer4RPG     The Embedded Java in RPG Way
                    Benchmark Example    The Gleiberg Version


A Real Life Example



      The idea: RPG application generates a HTML invoice
      Java generates from the HTML and a CSS a PDF invoice
      the Java Part is done by iText and Flying Saucer
      Requirement: 10.000 invoices in 6 h
      first customer evaluation: 30 sec. up to minutes for 1!
      my first evaluation on Wintel: subsecond!




                         Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                        RPG Calls Java   The RUNJVA Way
                       AppServer4RPG     The Embedded Java in RPG Way
                    Benchmark Example    The Gleiberg Version


A Real Life Example



      The idea: RPG application generates a HTML invoice
      Java generates from the HTML and a CSS a PDF invoice
      the Java Part is done by iText and Flying Saucer
      Requirement: 10.000 invoices in 6 h
      first customer evaluation: 30 sec. up to minutes for 1!
      my first evaluation on Wintel: subsecond!




                         Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                        RPG Calls Java   The RUNJVA Way
                       AppServer4RPG     The Embedded Java in RPG Way
                    Benchmark Example    The Gleiberg Version


A Real Life Example



      The idea: RPG application generates a HTML invoice
      Java generates from the HTML and a CSS a PDF invoice
      the Java Part is done by iText and Flying Saucer
      Requirement: 10.000 invoices in 6 h
      first customer evaluation: 30 sec. up to minutes for 1!
      my first evaluation on Wintel: subsecond!




                         Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                        RPG Calls Java   The RUNJVA Way
                       AppServer4RPG     The Embedded Java in RPG Way
                    Benchmark Example    The Gleiberg Version


A Real Life Example



      The idea: RPG application generates a HTML invoice
      Java generates from the HTML and a CSS a PDF invoice
      the Java Part is done by iText and Flying Saucer
      Requirement: 10.000 invoices in 6 h
      first customer evaluation: 30 sec. up to minutes for 1!
      my first evaluation on Wintel: subsecond!




                         Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                        RPG Calls Java   The RUNJVA Way
                       AppServer4RPG     The Embedded Java in RPG Way
                    Benchmark Example    The Gleiberg Version


A Real Life Example



      The idea: RPG application generates a HTML invoice
      Java generates from the HTML and a CSS a PDF invoice
      the Java Part is done by iText and Flying Saucer
      Requirement: 10.000 invoices in 6 h
      first customer evaluation: 30 sec. up to minutes for 1!
      my first evaluation on Wintel: subsecond!




                         Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                      RPG Calls Java   The RUNJVA Way
                     AppServer4RPG     The Embedded Java in RPG Way
                  Benchmark Example    The Gleiberg Version


HTML2PDF4I by Aaron Bartell


     Article in IBM Systems Magazine
     Open Source at http://mowyourlawn.com
     Java Application as a wrapper for iText and Flying Saucer
     called by RPG programm via RUNJVA with assembled
     classpath setting
     my evaluation 10 sec.
         opening a Job for each call of RUNJVA and starting a JVM
         slow, but scaling linear - JVM is closed after call.




                       Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                      RPG Calls Java   The RUNJVA Way
                     AppServer4RPG     The Embedded Java in RPG Way
                  Benchmark Example    The Gleiberg Version


HTML2PDF4I by Aaron Bartell


     Article in IBM Systems Magazine
     Open Source at http://mowyourlawn.com
     Java Application as a wrapper for iText and Flying Saucer
     called by RPG programm via RUNJVA with assembled
     classpath setting
     my evaluation 10 sec.
         opening a Job for each call of RUNJVA and starting a JVM
         slow, but scaling linear - JVM is closed after call.




                       Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                      RPG Calls Java   The RUNJVA Way
                     AppServer4RPG     The Embedded Java in RPG Way
                  Benchmark Example    The Gleiberg Version


HTML2PDF4I by Aaron Bartell


     Article in IBM Systems Magazine
     Open Source at http://mowyourlawn.com
     Java Application as a wrapper for iText and Flying Saucer
     called by RPG programm via RUNJVA with assembled
     classpath setting
     my evaluation 10 sec.
         opening a Job for each call of RUNJVA and starting a JVM
         slow, but scaling linear - JVM is closed after call.




                       Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                       RPG Calls Java   The RUNJVA Way
                      AppServer4RPG     The Embedded Java in RPG Way
                   Benchmark Example    The Gleiberg Version


The Classpath Problem


     first problem: you will need 3 jar files in your classpath
         starting the JVM at Job begin => a JVM is started, but
         maybe not used
         starting the JVM before usage => might fail, because started
         before
         submitting a job for usage => same problem as RUNJVA with
         more effort!
         setting global classpath => might interfere with other
         applications
         using extdir => even worse, has higher priority than classpath
         setting




                        Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                       RPG Calls Java   The RUNJVA Way
                      AppServer4RPG     The Embedded Java in RPG Way
                   Benchmark Example    The Gleiberg Version


The Classpath Problem


     first problem: you will need 3 jar files in your classpath
         starting the JVM at Job begin => a JVM is started, but
         maybe not used
         starting the JVM before usage => might fail, because started
         before
         submitting a job for usage => same problem as RUNJVA with
         more effort!
         setting global classpath => might interfere with other
         applications
         using extdir => even worse, has higher priority than classpath
         setting




                        Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                       RPG Calls Java   The RUNJVA Way
                      AppServer4RPG     The Embedded Java in RPG Way
                   Benchmark Example    The Gleiberg Version


The Classpath Problem


     first problem: you will need 3 jar files in your classpath
         starting the JVM at Job begin => a JVM is started, but
         maybe not used
         starting the JVM before usage => might fail, because started
         before
         submitting a job for usage => same problem as RUNJVA with
         more effort!
         setting global classpath => might interfere with other
         applications
         using extdir => even worse, has higher priority than classpath
         setting




                        Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                       RPG Calls Java   The RUNJVA Way
                      AppServer4RPG     The Embedded Java in RPG Way
                   Benchmark Example    The Gleiberg Version


The Classpath Problem


     first problem: you will need 3 jar files in your classpath
         starting the JVM at Job begin => a JVM is started, but
         maybe not used
         starting the JVM before usage => might fail, because started
         before
         submitting a job for usage => same problem as RUNJVA with
         more effort!
         setting global classpath => might interfere with other
         applications
         using extdir => even worse, has higher priority than classpath
         setting




                        Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                       RPG Calls Java   The RUNJVA Way
                      AppServer4RPG     The Embedded Java in RPG Way
                   Benchmark Example    The Gleiberg Version


The Classpath Problem


     first problem: you will need 3 jar files in your classpath
         starting the JVM at Job begin => a JVM is started, but
         maybe not used
         starting the JVM before usage => might fail, because started
         before
         submitting a job for usage => same problem as RUNJVA with
         more effort!
         setting global classpath => might interfere with other
         applications
         using extdir => even worse, has higher priority than classpath
         setting




                        Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                       RPG Calls Java   The RUNJVA Way
                      AppServer4RPG     The Embedded Java in RPG Way
                   Benchmark Example    The Gleiberg Version


Why I Gave Up

     second problem: for one java statement you need multiple
     RPG declarations and statements.
         10 minutes programming java <=> one day programming
         embedded Java in RPG
     third problem: hard to read debug and even worse in
     production!
         impossible to use log4j
     maybe faster for subsequent calls in the same job than
     RUNJVA
     scalability even worse (the programm could be called in every
     Job!)



                        Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                       RPG Calls Java   The RUNJVA Way
                      AppServer4RPG     The Embedded Java in RPG Way
                   Benchmark Example    The Gleiberg Version


Why I Gave Up

     second problem: for one java statement you need multiple
     RPG declarations and statements.
         10 minutes programming java <=> one day programming
         embedded Java in RPG
     third problem: hard to read debug and even worse in
     production!
         impossible to use log4j
     maybe faster for subsequent calls in the same job than
     RUNJVA
     scalability even worse (the programm could be called in every
     Job!)



                        Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                       RPG Calls Java   The RUNJVA Way
                      AppServer4RPG     The Embedded Java in RPG Way
                   Benchmark Example    The Gleiberg Version


Why I Gave Up

     second problem: for one java statement you need multiple
     RPG declarations and statements.
         10 minutes programming java <=> one day programming
         embedded Java in RPG
     third problem: hard to read debug and even worse in
     production!
         impossible to use log4j
     maybe faster for subsequent calls in the same job than
     RUNJVA
     scalability even worse (the programm could be called in every
     Job!)



                        Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                           RPG Calls Java   The RUNJVA Way
                          AppServer4RPG     The Embedded Java in RPG Way
                       Benchmark Example    The Gleiberg Version


The RPG Perspective




  what we want
  install
  AppServer4RPG
  implement the call




                            Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                           RPG Calls Java   The RUNJVA Way
                          AppServer4RPG     The Embedded Java in RPG Way
                       Benchmark Example    The Gleiberg Version


The RPG Perspective




  what we want
  install
  AppServer4RPG
  implement the call




                            Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                           RPG Calls Java   The RUNJVA Way
                          AppServer4RPG     The Embedded Java in RPG Way
                       Benchmark Example    The Gleiberg Version


The RPG Perspective




  what we want
  install
  AppServer4RPG
  implement the call




                            Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                       RPG Calls Java   The RUNJVA Way
                      AppServer4RPG     The Embedded Java in RPG Way
                   Benchmark Example    The Gleiberg Version


Closing the Chain to Java




  now we need an
  EventHandler to be
  called
  configure
  AppServer4RPG




                        Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                       RPG Calls Java   The RUNJVA Way
                      AppServer4RPG     The Embedded Java in RPG Way
                   Benchmark Example    The Gleiberg Version


Closing the Chain to Java




  now we need an
  EventHandler to be
  called
  configure
  AppServer4RPG




                        Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                      RPG Calls Java   The RUNJVA Way
                     AppServer4RPG     The Embedded Java in RPG Way
                  Benchmark Example    The 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   Inside ArdGate
Introduction   Generating PDF from HTML
                      RPG Calls Java   The RUNJVA Way
                     AppServer4RPG     The Embedded Java in RPG Way
                  Benchmark Example    The 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   Inside ArdGate
Introduction   Generating PDF from HTML
                      RPG Calls Java   The RUNJVA Way
                     AppServer4RPG     The Embedded Java in RPG Way
                  Benchmark Example    The 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   Inside ArdGate
Introduction   Generating PDF from HTML
                         RPG Calls Java   The RUNJVA Way
                        AppServer4RPG     The Embedded Java in RPG Way
                     Benchmark Example    The Gleiberg Version


The EventHandler



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




                          Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                         RPG Calls Java   The RUNJVA Way
                        AppServer4RPG     The Embedded Java in RPG Way
                     Benchmark Example    The Gleiberg Version


The EventHandler




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




                          Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                         RPG Calls Java   The RUNJVA Way
                        AppServer4RPG     The Embedded Java in RPG Way
                     Benchmark Example    The Gleiberg Version


The EventHandler




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




                          Dieter Bender   Inside ArdGate
Introduction   Generating PDF from HTML
                        RPG Calls Java   The RUNJVA Way
                       AppServer4RPG     The Embedded Java in RPG Way
                    Benchmark Example    The 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   Inside ArdGate
Introduction   Generating PDF from HTML
                        RPG Calls Java   The RUNJVA Way
                       AppServer4RPG     The Embedded Java in RPG Way
                    Benchmark Example    The 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   Inside ArdGate
Introduction   Generating PDF from HTML
                        RPG Calls Java   The RUNJVA Way
                       AppServer4RPG     The Embedded Java in RPG Way
                    Benchmark Example    The 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   Inside ArdGate
Introduction   Generating PDF from HTML
                        RPG Calls Java   The RUNJVA Way
                       AppServer4RPG     The Embedded Java in RPG Way
                    Benchmark Example    The 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   Inside ArdGate
Introduction   Generating PDF from HTML
                        RPG Calls Java   The RUNJVA Way
                       AppServer4RPG     The Embedded Java in RPG Way
                    Benchmark Example    The 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   Inside ArdGate
Introduction   Generating PDF from HTML
                        RPG Calls Java   The RUNJVA Way
                       AppServer4RPG     The Embedded Java in RPG Way
                    Benchmark Example    The 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   Inside ArdGate
Introduction   Generating PDF from HTML
                       RPG Calls Java   The RUNJVA Way
                      AppServer4RPG     The Embedded Java in RPG Way
                   Benchmark Example    The 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   Inside ArdGate
Introduction   Generating PDF from HTML
                 RPG Calls Java   The RUNJVA Way
                AppServer4RPG     The Embedded Java in RPG Way
             Benchmark Example    The Gleiberg Version


Questions?




                  Dieter Bender   Inside ArdGate

More Related Content

What's hot

Agile - Iteration 0 CodeMash 2010
Agile - Iteration 0 CodeMash 2010Agile - Iteration 0 CodeMash 2010
Agile - Iteration 0 CodeMash 2010kensipe
 
Tech Days 2015: Multi-language Programming with GPRbuild
Tech Days 2015: Multi-language Programming with GPRbuildTech Days 2015: Multi-language Programming with GPRbuild
Tech Days 2015: Multi-language Programming with GPRbuildAdaCore
 
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...Andrew Phillips
 
Open Source Jumpstart Tooling Up Intro
Open Source Jumpstart Tooling Up IntroOpen Source Jumpstart Tooling Up Intro
Open Source Jumpstart Tooling Up IntroSkills Matter
 
Marrying Jenkins and Gerrit-Berlin Expert Days 2013
Marrying Jenkins and Gerrit-Berlin Expert Days 2013Marrying Jenkins and Gerrit-Berlin Expert Days 2013
Marrying Jenkins and Gerrit-Berlin Expert Days 2013Dharmesh Sheta
 
Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...
Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...
Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...Embarcadero Technologies
 
Code, ci, infrastructure - the gophers way
Code, ci, infrastructure - the gophers wayCode, ci, infrastructure - the gophers way
Code, ci, infrastructure - the gophers wayAlex Baitov
 

What's hot (8)

Agile - Iteration 0 CodeMash 2010
Agile - Iteration 0 CodeMash 2010Agile - Iteration 0 CodeMash 2010
Agile - Iteration 0 CodeMash 2010
 
Tech Days 2015: Multi-language Programming with GPRbuild
Tech Days 2015: Multi-language Programming with GPRbuildTech Days 2015: Multi-language Programming with GPRbuild
Tech Days 2015: Multi-language Programming with GPRbuild
 
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
 
Scripting In Java
Scripting In JavaScripting In Java
Scripting In Java
 
Open Source Jumpstart Tooling Up Intro
Open Source Jumpstart Tooling Up IntroOpen Source Jumpstart Tooling Up Intro
Open Source Jumpstart Tooling Up Intro
 
Marrying Jenkins and Gerrit-Berlin Expert Days 2013
Marrying Jenkins and Gerrit-Berlin Expert Days 2013Marrying Jenkins and Gerrit-Berlin Expert Days 2013
Marrying Jenkins and Gerrit-Berlin Expert Days 2013
 
Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...
Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...
Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...
 
Code, ci, infrastructure - the gophers way
Code, ci, infrastructure - the gophers wayCode, ci, infrastructure - the gophers way
Code, ci, infrastructure - the gophers way
 

Similar to App server4rpg - English

Neo4 + Grails
Neo4 + GrailsNeo4 + Grails
Neo4 + Grailsstasimus
 
Dell PowerEdge R750 server featuring a modern 100Gb Broadcom 57508 NIC achiev...
Dell PowerEdge R750 server featuring a modern 100Gb Broadcom 57508 NIC achiev...Dell PowerEdge R750 server featuring a modern 100Gb Broadcom 57508 NIC achiev...
Dell PowerEdge R750 server featuring a modern 100Gb Broadcom 57508 NIC achiev...Principled Technologies
 
GraalVM - OpenSlava 2019-10-18
GraalVM - OpenSlava 2019-10-18GraalVM - OpenSlava 2019-10-18
GraalVM - OpenSlava 2019-10-18Jorge Hidalgo
 
AWS Meetup Paris - Short URL project by Pernod Ricard
AWS Meetup Paris - Short URL project by Pernod RicardAWS Meetup Paris - Short URL project by Pernod Ricard
AWS Meetup Paris - Short URL project by Pernod RicardCharles Rapp
 
GraalVM - MadridJUG 2019-10-22
GraalVM - MadridJUG 2019-10-22GraalVM - MadridJUG 2019-10-22
GraalVM - MadridJUG 2019-10-22Jorge Hidalgo
 
Common Java problems when developing with Android
Common Java problems when developing with AndroidCommon Java problems when developing with Android
Common Java problems when developing with AndroidStephen Gilmore
 
Meetup React Sanca - 29/11/18 - React Testing
Meetup React Sanca - 29/11/18 - React TestingMeetup React Sanca - 29/11/18 - React Testing
Meetup React Sanca - 29/11/18 - React TestingAugusto Lazaro
 
Debugging seL4 apps with the GNU Debugger
Debugging seL4 apps with the GNU DebuggerDebugging seL4 apps with the GNU Debugger
Debugging seL4 apps with the GNU DebuggerMatthew Russell
 
REST in Peace. Long live gRPC! @ Codineers
REST in Peace. Long live gRPC! @ CodineersREST in Peace. Long live gRPC! @ Codineers
REST in Peace. Long live gRPC! @ CodineersQAware GmbH
 
Adapter 2pp
Adapter 2ppAdapter 2pp
Adapter 2pprajjani
 
GradleのREPLプラグイン紹介 #jggug
GradleのREPLプラグイン紹介 #jggugGradleのREPLプラグイン紹介 #jggug
GradleのREPLプラグイン紹介 #jggugkyon mm
 
Evdokimov python arsenal for re
Evdokimov   python arsenal for reEvdokimov   python arsenal for re
Evdokimov python arsenal for reDefconRussia
 
Introducing the R2DBC async Java connector
Introducing the R2DBC async Java connectorIntroducing the R2DBC async Java connector
Introducing the R2DBC async Java connectorMariaDB plc
 
Gearman Introduction
Gearman IntroductionGearman Introduction
Gearman IntroductionGreen Wang
 
apidays Australia 2022 - Lessons from doing EdgeDevOps (GitOps) in the bush, ...
apidays Australia 2022 - Lessons from doing EdgeDevOps (GitOps) in the bush, ...apidays Australia 2022 - Lessons from doing EdgeDevOps (GitOps) in the bush, ...
apidays Australia 2022 - Lessons from doing EdgeDevOps (GitOps) in the bush, ...apidays
 
Go lambda-presentation
Go lambda-presentationGo lambda-presentation
Go lambda-presentationSteven White
 

Similar to App server4rpg - English (20)

Ruby with cucmber
Ruby with cucmberRuby with cucmber
Ruby with cucmber
 
Neo4J and Grails
Neo4J and GrailsNeo4J and Grails
Neo4J and Grails
 
Neo4 + Grails
Neo4 + GrailsNeo4 + Grails
Neo4 + Grails
 
Dell PowerEdge R750 server featuring a modern 100Gb Broadcom 57508 NIC achiev...
Dell PowerEdge R750 server featuring a modern 100Gb Broadcom 57508 NIC achiev...Dell PowerEdge R750 server featuring a modern 100Gb Broadcom 57508 NIC achiev...
Dell PowerEdge R750 server featuring a modern 100Gb Broadcom 57508 NIC achiev...
 
GraalVM - OpenSlava 2019-10-18
GraalVM - OpenSlava 2019-10-18GraalVM - OpenSlava 2019-10-18
GraalVM - OpenSlava 2019-10-18
 
AWS Meetup Paris - Short URL project by Pernod Ricard
AWS Meetup Paris - Short URL project by Pernod RicardAWS Meetup Paris - Short URL project by Pernod Ricard
AWS Meetup Paris - Short URL project by Pernod Ricard
 
GraalVM - MadridJUG 2019-10-22
GraalVM - MadridJUG 2019-10-22GraalVM - MadridJUG 2019-10-22
GraalVM - MadridJUG 2019-10-22
 
AISLER @ FOSDEM 2017
AISLER @ FOSDEM 2017AISLER @ FOSDEM 2017
AISLER @ FOSDEM 2017
 
Common Java problems when developing with Android
Common Java problems when developing with AndroidCommon Java problems when developing with Android
Common Java problems when developing with Android
 
Meetup React Sanca - 29/11/18 - React Testing
Meetup React Sanca - 29/11/18 - React TestingMeetup React Sanca - 29/11/18 - React Testing
Meetup React Sanca - 29/11/18 - React Testing
 
Debugging seL4 apps with the GNU Debugger
Debugging seL4 apps with the GNU DebuggerDebugging seL4 apps with the GNU Debugger
Debugging seL4 apps with the GNU Debugger
 
REST in Peace. Long live gRPC! @ Codineers
REST in Peace. Long live gRPC! @ CodineersREST in Peace. Long live gRPC! @ Codineers
REST in Peace. Long live gRPC! @ Codineers
 
Adapter 2pp
Adapter 2ppAdapter 2pp
Adapter 2pp
 
GradleのREPLプラグイン紹介 #jggug
GradleのREPLプラグイン紹介 #jggugGradleのREPLプラグイン紹介 #jggug
GradleのREPLプラグイン紹介 #jggug
 
Evdokimov python arsenal for re
Evdokimov   python arsenal for reEvdokimov   python arsenal for re
Evdokimov python arsenal for re
 
Introducing the R2DBC async Java connector
Introducing the R2DBC async Java connectorIntroducing the R2DBC async Java connector
Introducing the R2DBC async Java connector
 
Gearman Introduction
Gearman IntroductionGearman Introduction
Gearman Introduction
 
apidays Australia 2022 - Lessons from doing EdgeDevOps (GitOps) in the bush, ...
apidays Australia 2022 - Lessons from doing EdgeDevOps (GitOps) in the bush, ...apidays Australia 2022 - Lessons from doing EdgeDevOps (GitOps) in the bush, ...
apidays Australia 2022 - Lessons from doing EdgeDevOps (GitOps) in the bush, ...
 
Go lambda-presentation
Go lambda-presentationGo lambda-presentation
Go lambda-presentation
 
GraphQL-ify your APIs
GraphQL-ify your APIsGraphQL-ify your APIs
GraphQL-ify your APIs
 

More from 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 ServerCOMMON Europe
 
Compiling the Compiler
Compiling the CompilerCompiling the Compiler
Compiling the CompilerCOMMON Europe
 
Workload Groups overview updates
Workload Groups overview updatesWorkload Groups overview updates
Workload Groups overview updatesCOMMON Europe
 
Why i - Common Europe 2012
Why i - Common Europe 2012Why i - Common Europe 2012
Why i - Common Europe 2012COMMON Europe
 
The Ruby OpenSSL extension
The Ruby OpenSSL extensionThe Ruby OpenSSL extension
The Ruby OpenSSL extensionCOMMON 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 iCOMMON 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 2012COMMON 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-04COMMON 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 2012COMMON Europe
 
DB2 Web Query whats new
DB2 Web Query whats newDB2 Web Query whats new
DB2 Web Query whats newCOMMON Europe
 
Access client solutions overview
Access client solutions overviewAccess client solutions overview
Access client solutions overviewCOMMON Europe
 
What's new with Zend server
What's new with Zend serverWhat's new with Zend server
What's new with Zend serverCOMMON Europe
 
Php arrays for RPG programmers
Php arrays for RPG programmersPhp arrays for RPG programmers
Php arrays for RPG programmersCOMMON 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 2012COMMON 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 ABCOMMON Europe
 
Introduction to My SQL
Introduction to My SQLIntroduction to My SQL
Introduction to My SQLCOMMON 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, 2012COMMON 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 iCOMMON Europe
 

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

Recently uploaded

TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024Stephen Perrenod
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightSafe Software
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuidePixlogix Infotech
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Patrick Viafore
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxFIDO Alliance
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024Lorenzo Miniero
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...FIDO Alliance
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfSrushith Repakula
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxFIDO Alliance
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptxFIDO Alliance
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewDianaGray10
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Hiroshi SHIBATA
 
Vector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxVector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxjbellis
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform EngineeringMarcus Vechiato
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...FIDO Alliance
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!Memoori
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...FIDO Alliance
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Paige Cruz
 
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdfMuhammad Subhan
 

Recently uploaded (20)

TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overview
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024
 
Vector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxVector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptx
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
 
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
 

App server4rpg - English

  • 1. Introduction RPG Calls Java AppServer4RPG Benchmark Example Inside ArdGate fast, stable and scalable RPG to Java calls Dieter Bender Dieter Bender Inside ArdGate
  • 2. Introduction Who is Dieter Bender RPG Calls Java Architecture of ArdGate AppServer4RPG The Gleiberg Project Benchmark Example Who is Dieter Bender WWW.BENDER-DV.DE Dieter Bender, 35435 Wettenberg, Germany AS/400 consultant Java, SQL, ILE RPG, COBOL Application integration, Database Training: Java, SQL, ILE RPG Open source components ArdGate: access any database from i with SQL AppServer4RPG: stable, scalable and fast RPG to Java integration some RPG components Dieter@Bender-DV.de Dieter Bender Inside ArdGate
  • 3. Introduction Who is Dieter Bender RPG Calls Java Architecture of ArdGate AppServer4RPG The Gleiberg Project Benchmark Example Architecture *ARDPGM must be native JDBC must be Java very few RPG (blue) lots of Java (red) lots of calls from RPG to Java multiple users no controll of environment Dieter Bender Inside ArdGate
  • 4. Introduction Who is Dieter Bender RPG Calls Java Architecture of ArdGate AppServer4RPG The Gleiberg Project Benchmark Example Architecture *ARDPGM must be native JDBC must be Java very few RPG (blue) lots of Java (red) lots of calls from RPG to Java multiple users no controll of environment Dieter Bender Inside ArdGate
  • 5. Introduction Who is Dieter Bender RPG Calls Java Architecture of ArdGate AppServer4RPG The Gleiberg Project Benchmark Example Architecture *ARDPGM must be native JDBC must be Java very few RPG (blue) lots of Java (red) lots of calls from RPG to Java multiple users no controll of environment Dieter Bender Inside ArdGate
  • 6. Introduction Who is Dieter Bender RPG Calls Java Architecture of ArdGate AppServer4RPG The Gleiberg Project Benchmark Example Architecture *ARDPGM must be native JDBC must be Java very few RPG (blue) lots of Java (red) lots of calls from RPG to Java multiple users no controll of environment Dieter Bender Inside ArdGate
  • 7. Introduction Who is Dieter Bender RPG Calls Java Architecture of ArdGate AppServer4RPG The Gleiberg Project Benchmark Example Architecture *ARDPGM must be native JDBC must be Java very few RPG (blue) lots of Java (red) lots of calls from RPG to Java multiple users no controll of environment Dieter Bender Inside ArdGate
  • 8. Introduction Who is Dieter Bender RPG Calls Java Architecture of ArdGate AppServer4RPG The Gleiberg Project Benchmark Example Architecture *ARDPGM must be native JDBC must be Java very few RPG (blue) lots of Java (red) lots of calls from RPG to Java multiple users no controll of environment Dieter Bender Inside ArdGate
  • 9. Introduction Who is Dieter Bender RPG Calls Java Architecture of ArdGate AppServer4RPG The Gleiberg Project Benchmark Example Architecture *ARDPGM must be native JDBC must be Java very few RPG (blue) lots of Java (red) lots of calls from RPG to Java multiple users no controll of environment Dieter Bender Inside ArdGate
  • 10. Introduction Who is Dieter Bender RPG Calls Java Architecture of ArdGate AppServer4RPG The Gleiberg Project Benchmark Example Why Gleiberg Project? AppServer4RPG I’m living nearby open source to protect copyright of a Freelancer result of > 10 years teaching and project experience Dieter Bender Inside ArdGate
  • 11. Introduction Who is Dieter Bender RPG Calls Java Architecture of ArdGate AppServer4RPG The Gleiberg Project Benchmark Example Why Gleiberg Project? AppServer4RPG I’m living nearby open source to protect copyright of a Freelancer result of > 10 years teaching and project experience Dieter Bender Inside ArdGate
  • 12. Introduction Who is Dieter Bender RPG Calls Java Architecture of ArdGate AppServer4RPG The Gleiberg Project Benchmark Example Why Gleiberg Project? AppServer4RPG I’m living nearby open source to protect copyright of a Freelancer result of > 10 years teaching and project experience Dieter Bender Inside ArdGate
  • 13. Introduction Who is Dieter Bender RPG Calls Java Architecture of ArdGate AppServer4RPG The Gleiberg Project Benchmark Example Why Gleiberg Project? AppServer4RPG I’m living nearby open source to protect copyright of a Freelancer result of > 10 years teaching and project experience Dieter Bender Inside ArdGate
  • 14. Introduction Why is this Important? RPG Calls Java Ways to Call Java from RPG AppServer4RPG RPGs JNI Support Benchmark Example RPG is only a Subset of Java Java is designed for multithreading Java has lots of high quality open source components Java has lots of high quality open source tools RPG doesn’t have for money programmer productivity with OO languages is by far higher (by same level of experience) some examples: WebServices and XML generating PDF, HTML and EXCEL JDBC access to databases Dieter Bender Inside ArdGate
  • 15. Introduction Why is this Important? RPG Calls Java Ways to Call Java from RPG AppServer4RPG RPGs JNI Support Benchmark Example RPG is only a Subset of Java Java is designed for multithreading Java has lots of high quality open source components Java has lots of high quality open source tools RPG doesn’t have for money programmer productivity with OO languages is by far higher (by same level of experience) some examples: WebServices and XML generating PDF, HTML and EXCEL JDBC access to databases Dieter Bender Inside ArdGate
  • 16. Introduction Why is this Important? RPG Calls Java Ways to Call Java from RPG AppServer4RPG RPGs JNI Support Benchmark Example RPG is only a Subset of Java Java is designed for multithreading Java has lots of high quality open source components Java has lots of high quality open source tools RPG doesn’t have for money programmer productivity with OO languages is by far higher (by same level of experience) some examples: WebServices and XML generating PDF, HTML and EXCEL JDBC access to databases Dieter Bender Inside ArdGate
  • 17. Introduction Why is this Important? RPG Calls Java Ways to Call Java from RPG AppServer4RPG RPGs JNI Support Benchmark Example RPG is only a Subset of Java Java is designed for multithreading Java has lots of high quality open source components Java has lots of high quality open source tools RPG doesn’t have for money programmer productivity with OO languages is by far higher (by same level of experience) some examples: WebServices and XML generating PDF, HTML and EXCEL JDBC access to databases Dieter Bender Inside ArdGate
  • 18. Introduction Why is this Important? RPG Calls Java Ways to Call Java from RPG AppServer4RPG RPGs JNI Support Benchmark Example RPG is only a Subset of Java Java is designed for multithreading Java has lots of high quality open source components Java has lots of high quality open source tools RPG doesn’t have for money programmer productivity with OO languages is by far higher (by same level of experience) some examples: WebServices and XML generating PDF, HTML and EXCEL JDBC access to databases Dieter Bender Inside ArdGate
  • 19. Introduction Why is this Important? RPG Calls Java Ways to Call Java from RPG AppServer4RPG RPGs JNI Support Benchmark Example RPG Calls Java RUNJVA and QSH CMD(java ...) only Java applications could be called only error level is coming back horrible Overhead Java stored procedures only static methods could be called in SQL client mode not scaling in SQL server mode no controll over JVM properties JNI Java native interface was designed for C implementation of JVM and implementation of the Java tools cryptic programming and bad maintainability of code error recovery and analysis is complicated Dieter Bender Inside ArdGate
  • 20. Introduction Why is this Important? RPG Calls Java Ways to Call Java from RPG AppServer4RPG RPGs JNI Support Benchmark Example RPG Calls Java RUNJVA and QSH CMD(java ...) only Java applications could be called only error level is coming back horrible Overhead Java stored procedures only static methods could be called in SQL client mode not scaling in SQL server mode no controll over JVM properties JNI Java native interface was designed for C implementation of JVM and implementation of the Java tools cryptic programming and bad maintainability of code error recovery and analysis is complicated Dieter Bender Inside ArdGate
  • 21. Introduction Why is this Important? RPG Calls Java Ways to Call Java from RPG AppServer4RPG RPGs JNI Support Benchmark Example RPG Calls Java RUNJVA and QSH CMD(java ...) only Java applications could be called only error level is coming back horrible Overhead Java stored procedures only static methods could be called in SQL client mode not scaling in SQL server mode no controll over JVM properties JNI Java native interface was designed for C implementation of JVM and implementation of the Java tools cryptic programming and bad maintainability of code error recovery and analysis is complicated Dieter Bender Inside ArdGate
  • 22. Introduction Why is this Important? RPG Calls Java Ways to Call Java from RPG AppServer4RPG RPGs JNI Support Benchmark Example Why I Don’t Like Embedded Java in RPG controll of the Java environment is near to impossible, because the JVM is started automatically using normal Java components produces embedded Java in RPG these programms are hard to develop, debug and maintain first call is very slow and starting hundreds or thousands JVM makes IBM happy, but doesn’t scale well the implementation of the JNI support in the RPG compiler is buggy and crashing JVMs are not recovereable! (BTW: never saw a crashing JVM outside the JNI support of RPG!!!) too much programming effort for suboptimal results Dieter Bender Inside ArdGate
  • 23. Introduction Why is this Important? RPG Calls Java Ways to Call Java from RPG AppServer4RPG RPGs JNI Support Benchmark Example Why I Don’t Like Embedded Java in RPG controll of the Java environment is near to impossible, because the JVM is started automatically using normal Java components produces embedded Java in RPG these programms are hard to develop, debug and maintain first call is very slow and starting hundreds or thousands JVM makes IBM happy, but doesn’t scale well the implementation of the JNI support in the RPG compiler is buggy and crashing JVMs are not recovereable! (BTW: never saw a crashing JVM outside the JNI support of RPG!!!) too much programming effort for suboptimal results Dieter Bender Inside ArdGate
  • 24. Introduction Why is this Important? RPG Calls Java Ways to Call Java from RPG AppServer4RPG RPGs JNI Support Benchmark Example Why I Don’t Like Embedded Java in RPG controll of the Java environment is near to impossible, because the JVM is started automatically using normal Java components produces embedded Java in RPG these programms are hard to develop, debug and maintain first call is very slow and starting hundreds or thousands JVM makes IBM happy, but doesn’t scale well the implementation of the JNI support in the RPG compiler is buggy and crashing JVMs are not recovereable! (BTW: never saw a crashing JVM outside the JNI support of RPG!!!) too much programming effort for suboptimal results Dieter Bender Inside ArdGate
  • 25. Introduction Why is this Important? RPG Calls Java Ways to Call Java from RPG AppServer4RPG RPGs JNI Support Benchmark Example Why I Don’t Like Embedded Java in RPG controll of the Java environment is near to impossible, because the JVM is started automatically using normal Java components produces embedded Java in RPG these programms are hard to develop, debug and maintain first call is very slow and starting hundreds or thousands JVM makes IBM happy, but doesn’t scale well the implementation of the JNI support in the RPG compiler is buggy and crashing JVMs are not recovereable! (BTW: never saw a crashing JVM outside the JNI support of RPG!!!) too much programming effort for suboptimal results Dieter Bender Inside ArdGate
  • 26. Introduction Why is this Important? RPG Calls Java Ways to Call Java from RPG AppServer4RPG RPGs JNI Support Benchmark Example Why I Don’t Like Embedded Java in RPG controll of the Java environment is near to impossible, because the JVM is started automatically using normal Java components produces embedded Java in RPG these programms are hard to develop, debug and maintain first call is very slow and starting hundreds or thousands JVM makes IBM happy, but doesn’t scale well the implementation of the JNI support in the RPG compiler is buggy and crashing JVMs are not recovereable! (BTW: never saw a crashing JVM outside the JNI support of RPG!!!) too much programming effort for suboptimal results Dieter Bender Inside ArdGate
  • 27. Introduction Why is this Important? RPG Calls Java Ways to Call Java from RPG AppServer4RPG RPGs JNI Support Benchmark Example Why I Don’t Like Embedded Java in RPG controll of the Java environment is near to impossible, because the JVM is started automatically using normal Java components produces embedded Java in RPG these programms are hard to develop, debug and maintain first call is very slow and starting hundreds or thousands JVM makes IBM happy, but doesn’t scale well the implementation of the JNI support in the RPG compiler is buggy and crashing JVMs are not recovereable! (BTW: never saw a crashing JVM outside the JNI support of RPG!!!) too much programming effort for suboptimal results Dieter Bender Inside ArdGate
  • 28. Introduction Architecture of AppServer4RPG RPG Calls Java The EventHandler Interface AppServer4RPG The PORDS2POJO Pattern Benchmark Example Architecture Overview one resident JVM serves multiple RPG clients asynchronous communication extendable EventHandler concept RPG sends and receives DataStructure (translated by Java) Dieter Bender Inside ArdGate
  • 29. Introduction Architecture of AppServer4RPG RPG Calls Java The EventHandler Interface AppServer4RPG The PORDS2POJO Pattern Benchmark Example Architecture Overview one resident JVM serves multiple RPG clients asynchronous communication extendable EventHandler concept RPG sends and receives DataStructure (translated by Java) Dieter Bender Inside ArdGate
  • 30. Introduction Architecture of AppServer4RPG RPG Calls Java The EventHandler Interface AppServer4RPG The PORDS2POJO Pattern Benchmark Example Architecture Overview one resident JVM serves multiple RPG clients asynchronous communication extendable EventHandler concept RPG sends and receives DataStructure (translated by Java) Dieter Bender Inside ArdGate
  • 31. Introduction Architecture of AppServer4RPG RPG Calls Java The EventHandler Interface AppServer4RPG The PORDS2POJO Pattern Benchmark Example Architecture Overview one resident JVM serves multiple RPG clients asynchronous communication extendable EventHandler concept RPG sends and receives DataStructure (translated by Java) Dieter Bender Inside ArdGate
  • 32. Introduction Architecture of AppServer4RPG RPG Calls Java The EventHandler Interface AppServer4RPG The PORDS2POJO Pattern Benchmark Example The RPG Perspective RPG calls Java method read as: outDS = ARDPGM(inDS) Dieter Bender Inside ArdGate
  • 33. Introduction Architecture of AppServer4RPG RPG Calls Java The EventHandler Interface AppServer4RPG The PORDS2POJO Pattern Benchmark Example The RPG Perspective RPG calls Java method read as: outDS = ARDPGM(inDS) Dieter Bender Inside ArdGate
  • 34. Introduction Architecture of AppServer4RPG RPG Calls Java The EventHandler Interface AppServer4RPG The PORDS2POJO Pattern Benchmark Example The Java Perspective Action: what should be called? how has the handler to look like? Dieter Bender Inside ArdGate
  • 35. Introduction Architecture of AppServer4RPG RPG Calls Java The EventHandler Interface AppServer4RPG The PORDS2POJO Pattern Benchmark Example The Java Perspective Action: what should be called? how has the handler to look like? Dieter Bender Inside ArdGate
  • 36. Introduction Architecture of AppServer4RPG RPG Calls Java The EventHandler Interface AppServer4RPG The PORDS2POJO Pattern Benchmark Example Hybrid Objects Plain Old RPG DataStructure Plain Old Java Object Dieter Bender Inside ArdGate
  • 37. Introduction Architecture of AppServer4RPG RPG Calls Java The EventHandler Interface AppServer4RPG The PORDS2POJO Pattern Benchmark Example Hybrid Objects Plain Old RPG DataStructure Plain Old Java Object Dieter Bender Inside ArdGate
  • 38. Introduction Architecture of AppServer4RPG RPG Calls Java The EventHandler Interface AppServer4RPG The PORDS2POJO Pattern Benchmark Example Translation Objects PORDS2POJO:= a Java object, encapsulating the translation between the binary representation of a PORDS and a POJO POJO with all components of the PORDS as Java types object variable to hold the PORDS ( private byte[] huddle ) setter and getter for the binary huddle this Hybrid objects always reflect the Java and the RPG perspective of the same data sometimes only on direction is needed and implemented Dieter Bender Inside ArdGate
  • 39. Introduction Architecture of AppServer4RPG RPG Calls Java The EventHandler Interface AppServer4RPG The PORDS2POJO Pattern Benchmark Example Translation Objects PORDS2POJO:= a Java object, encapsulating the translation between the binary representation of a PORDS and a POJO POJO with all components of the PORDS as Java types object variable to hold the PORDS ( private byte[] huddle ) setter and getter for the binary huddle this Hybrid objects always reflect the Java and the RPG perspective of the same data sometimes only on direction is needed and implemented Dieter Bender Inside ArdGate
  • 40. Introduction Architecture of AppServer4RPG RPG Calls Java The EventHandler Interface AppServer4RPG The PORDS2POJO Pattern Benchmark Example Translation Objects PORDS2POJO:= a Java object, encapsulating the translation between the binary representation of a PORDS and a POJO POJO with all components of the PORDS as Java types object variable to hold the PORDS ( private byte[] huddle ) setter and getter for the binary huddle this Hybrid objects always reflect the Java and the RPG perspective of the same data sometimes only on direction is needed and implemented Dieter Bender Inside ArdGate
  • 41. Introduction Architecture of AppServer4RPG RPG Calls Java The EventHandler Interface AppServer4RPG The PORDS2POJO Pattern Benchmark Example Translation Objects PORDS2POJO:= a Java object, encapsulating the translation between the binary representation of a PORDS and a POJO POJO with all components of the PORDS as Java types object variable to hold the PORDS ( private byte[] huddle ) setter and getter for the binary huddle this Hybrid objects always reflect the Java and the RPG perspective of the same data sometimes only on direction is needed and implemented Dieter Bender Inside ArdGate
  • 42. Introduction Architecture of AppServer4RPG RPG Calls Java The EventHandler Interface AppServer4RPG The PORDS2POJO Pattern Benchmark Example Translation Objects PORDS2POJO:= a Java object, encapsulating the translation between the binary representation of a PORDS and a POJO POJO with all components of the PORDS as Java types object variable to hold the PORDS ( private byte[] huddle ) setter and getter for the binary huddle this Hybrid objects always reflect the Java and the RPG perspective of the same data sometimes only on direction is needed and implemented Dieter Bender Inside ArdGate
  • 43. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version A Real Life Example The idea: RPG application generates a HTML invoice Java generates from the HTML and a CSS a PDF invoice the Java Part is done by iText and Flying Saucer Requirement: 10.000 invoices in 6 h first customer evaluation: 30 sec. up to minutes for 1! my first evaluation on Wintel: subsecond! Dieter Bender Inside ArdGate
  • 44. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version A Real Life Example The idea: RPG application generates a HTML invoice Java generates from the HTML and a CSS a PDF invoice the Java Part is done by iText and Flying Saucer Requirement: 10.000 invoices in 6 h first customer evaluation: 30 sec. up to minutes for 1! my first evaluation on Wintel: subsecond! Dieter Bender Inside ArdGate
  • 45. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version A Real Life Example The idea: RPG application generates a HTML invoice Java generates from the HTML and a CSS a PDF invoice the Java Part is done by iText and Flying Saucer Requirement: 10.000 invoices in 6 h first customer evaluation: 30 sec. up to minutes for 1! my first evaluation on Wintel: subsecond! Dieter Bender Inside ArdGate
  • 46. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version A Real Life Example The idea: RPG application generates a HTML invoice Java generates from the HTML and a CSS a PDF invoice the Java Part is done by iText and Flying Saucer Requirement: 10.000 invoices in 6 h first customer evaluation: 30 sec. up to minutes for 1! my first evaluation on Wintel: subsecond! Dieter Bender Inside ArdGate
  • 47. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version A Real Life Example The idea: RPG application generates a HTML invoice Java generates from the HTML and a CSS a PDF invoice the Java Part is done by iText and Flying Saucer Requirement: 10.000 invoices in 6 h first customer evaluation: 30 sec. up to minutes for 1! my first evaluation on Wintel: subsecond! Dieter Bender Inside ArdGate
  • 48. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version HTML2PDF4I by Aaron Bartell Article in IBM Systems Magazine Open Source at http://mowyourlawn.com Java Application as a wrapper for iText and Flying Saucer called by RPG programm via RUNJVA with assembled classpath setting my evaluation 10 sec. opening a Job for each call of RUNJVA and starting a JVM slow, but scaling linear - JVM is closed after call. Dieter Bender Inside ArdGate
  • 49. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version HTML2PDF4I by Aaron Bartell Article in IBM Systems Magazine Open Source at http://mowyourlawn.com Java Application as a wrapper for iText and Flying Saucer called by RPG programm via RUNJVA with assembled classpath setting my evaluation 10 sec. opening a Job for each call of RUNJVA and starting a JVM slow, but scaling linear - JVM is closed after call. Dieter Bender Inside ArdGate
  • 50. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version HTML2PDF4I by Aaron Bartell Article in IBM Systems Magazine Open Source at http://mowyourlawn.com Java Application as a wrapper for iText and Flying Saucer called by RPG programm via RUNJVA with assembled classpath setting my evaluation 10 sec. opening a Job for each call of RUNJVA and starting a JVM slow, but scaling linear - JVM is closed after call. Dieter Bender Inside ArdGate
  • 51. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version The Classpath Problem first problem: you will need 3 jar files in your classpath starting the JVM at Job begin => a JVM is started, but maybe not used starting the JVM before usage => might fail, because started before submitting a job for usage => same problem as RUNJVA with more effort! setting global classpath => might interfere with other applications using extdir => even worse, has higher priority than classpath setting Dieter Bender Inside ArdGate
  • 52. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version The Classpath Problem first problem: you will need 3 jar files in your classpath starting the JVM at Job begin => a JVM is started, but maybe not used starting the JVM before usage => might fail, because started before submitting a job for usage => same problem as RUNJVA with more effort! setting global classpath => might interfere with other applications using extdir => even worse, has higher priority than classpath setting Dieter Bender Inside ArdGate
  • 53. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version The Classpath Problem first problem: you will need 3 jar files in your classpath starting the JVM at Job begin => a JVM is started, but maybe not used starting the JVM before usage => might fail, because started before submitting a job for usage => same problem as RUNJVA with more effort! setting global classpath => might interfere with other applications using extdir => even worse, has higher priority than classpath setting Dieter Bender Inside ArdGate
  • 54. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version The Classpath Problem first problem: you will need 3 jar files in your classpath starting the JVM at Job begin => a JVM is started, but maybe not used starting the JVM before usage => might fail, because started before submitting a job for usage => same problem as RUNJVA with more effort! setting global classpath => might interfere with other applications using extdir => even worse, has higher priority than classpath setting Dieter Bender Inside ArdGate
  • 55. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version The Classpath Problem first problem: you will need 3 jar files in your classpath starting the JVM at Job begin => a JVM is started, but maybe not used starting the JVM before usage => might fail, because started before submitting a job for usage => same problem as RUNJVA with more effort! setting global classpath => might interfere with other applications using extdir => even worse, has higher priority than classpath setting Dieter Bender Inside ArdGate
  • 56. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version Why I Gave Up second problem: for one java statement you need multiple RPG declarations and statements. 10 minutes programming java <=> one day programming embedded Java in RPG third problem: hard to read debug and even worse in production! impossible to use log4j maybe faster for subsequent calls in the same job than RUNJVA scalability even worse (the programm could be called in every Job!) Dieter Bender Inside ArdGate
  • 57. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version Why I Gave Up second problem: for one java statement you need multiple RPG declarations and statements. 10 minutes programming java <=> one day programming embedded Java in RPG third problem: hard to read debug and even worse in production! impossible to use log4j maybe faster for subsequent calls in the same job than RUNJVA scalability even worse (the programm could be called in every Job!) Dieter Bender Inside ArdGate
  • 58. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version Why I Gave Up second problem: for one java statement you need multiple RPG declarations and statements. 10 minutes programming java <=> one day programming embedded Java in RPG third problem: hard to read debug and even worse in production! impossible to use log4j maybe faster for subsequent calls in the same job than RUNJVA scalability even worse (the programm could be called in every Job!) Dieter Bender Inside ArdGate
  • 59. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version The RPG Perspective what we want install AppServer4RPG implement the call Dieter Bender Inside ArdGate
  • 60. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version The RPG Perspective what we want install AppServer4RPG implement the call Dieter Bender Inside ArdGate
  • 61. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version The RPG Perspective what we want install AppServer4RPG implement the call Dieter Bender Inside ArdGate
  • 62. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version Closing the Chain to Java now we need an EventHandler to be called configure AppServer4RPG Dieter Bender Inside ArdGate
  • 63. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version Closing the Chain to Java now we need an EventHandler to be called configure AppServer4RPG Dieter Bender Inside ArdGate
  • 64. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The 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 Inside ArdGate
  • 65. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The 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 Inside ArdGate
  • 66. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The 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 Inside ArdGate
  • 67. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version The EventHandler gets a Request a simple PORDS2POJO binary is set with Constructor getter for properties the EventHandler Dieter Bender Inside ArdGate
  • 68. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version The EventHandler gets a Request a simple PORDS2POJO binary is set with Constructor getter for properties the EventHandler Dieter Bender Inside ArdGate
  • 69. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version The EventHandler gets a Request a simple PORDS2POJO binary is set with Constructor getter for properties the EventHandler Dieter Bender Inside ArdGate
  • 70. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The 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 Inside ArdGate
  • 71. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The 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 Inside ArdGate
  • 72. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The 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 Inside ArdGate
  • 73. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The 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 Inside ArdGate
  • 74. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The 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 Inside ArdGate
  • 75. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The 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 Inside ArdGate
  • 76. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The 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 Inside ArdGate
  • 77. Introduction Generating PDF from HTML RPG Calls Java The RUNJVA Way AppServer4RPG The Embedded Java in RPG Way Benchmark Example The Gleiberg Version Questions? Dieter Bender Inside ArdGate