The document discusses Dieter Bender and his work on ArdGate and AppServer4RPG. ArdGate allows accessing any database from IBM i with SQL, while AppServer4RPG provides a stable, scalable, and fast way to integrate RPG programs with Java. The architecture of AppServer4RPG involves having RPG programs call Java programs to take advantage of Java's features like multithreading and open source components. Dieter Bender created these open source projects based on his experience consulting and teaching Java, SQL, RPG and COBOL.
Dieter Bender created ArdGate to allow easy access to any database from IBM i systems using standard SQL. ArdGate uses Java and JDBC drivers to connect to other databases and provide a bridge from RPG programs on IBM i. It was created for a project called Hammerfest that needed to access external databases from IBM i with limited resources using open source technologies in a fast, scalable, and stable way without embedding Java in RPG programs.
Slides of the Java One 2015 talk "Apache DeltaSpike - the CDI Toolbox". It contains presentation of Apache DeltaSpike, the framework that extends CDI in Java or Java EE
The document discusses the role of software testing engineers (SWET) at DeNA Co., Ltd. It provides:
1) Background on the creation of the SWET group to improve quality and productivity as the Mobage Open Platform expanded globally and the system was refactored.
2) An overview of the SWET group's work, including testing the Mobage RESTful API, web applications, mobile web, and SDKs using techniques like unit, integration, API, and UI testing.
3) An example of a test scenario for a "Notification from Games" feature integrating the game API, user settings, and chat functionality.
Below And Beneath Tdd Test Last Development And Other Real World Test Patter...railsconf
This document discusses various test-driven development (TDD) patterns and anti-patterns. It notes that TDD, when done properly, provides accurate code representation, small incremental changes, a scaffold for change, and development focus. However, it also describes issues that can arise from losing the refactoring step, test-last development, data-driven testing, test-next development, tautology-based development, coverage-driven development, setup-driven development, and end-to-end test failures. It advocates for constant feedback through baby steps using a failure-driven approach.
"Different software evolutions from Start till Release in PHP product" Oleksa...Fwdays
Ця розповідь розкриє підходи для вирішення багатьох проблем в PHP проєктах через: None-Breaking change development підхід, cross-stack контракти, Trunk Based development, еволюція з Polyrepo до Monorepo з компонентами на різних технологіях, Boilerplat’и компонентів, різні Architecture View, Continuous Testing & Quality, Infrastructure View, Infrastructure as a code як основний інструмент.
Unit testing is a vital but neglected art. Good unit tests don't just test code: they are executable requirements that tell the story of your application, clarify your design, document your code and help track your progress. They help you find bugs fast, and fix them with confidence. If Real programmers don't need unit tests, they sure make life easier for the rest of us!
This document discusses SPARK 2014, a formally verified programming language based on Ada. It provides an overview of how SPARK can be used for various purposes like proving the absence of runtime errors and functional correctness. It also describes how SPARK tools like GNATprove make verification easy to use and integrate into developer workflows. Future plans are outlined, like improved support for concurrency, ghost code, and counterexample generation to aid debugging unproven properties. Resources for learning more about SPARK are provided.
Dieter Bender created ArdGate to allow easy access to any database from IBM i systems using standard SQL. ArdGate uses Java and JDBC drivers to connect to other databases and provide a bridge from RPG programs on IBM i. It was created for a project called Hammerfest that needed to access external databases from IBM i with limited resources using open source technologies in a fast, scalable, and stable way without embedding Java in RPG programs.
Slides of the Java One 2015 talk "Apache DeltaSpike - the CDI Toolbox". It contains presentation of Apache DeltaSpike, the framework that extends CDI in Java or Java EE
The document discusses the role of software testing engineers (SWET) at DeNA Co., Ltd. It provides:
1) Background on the creation of the SWET group to improve quality and productivity as the Mobage Open Platform expanded globally and the system was refactored.
2) An overview of the SWET group's work, including testing the Mobage RESTful API, web applications, mobile web, and SDKs using techniques like unit, integration, API, and UI testing.
3) An example of a test scenario for a "Notification from Games" feature integrating the game API, user settings, and chat functionality.
Below And Beneath Tdd Test Last Development And Other Real World Test Patter...railsconf
This document discusses various test-driven development (TDD) patterns and anti-patterns. It notes that TDD, when done properly, provides accurate code representation, small incremental changes, a scaffold for change, and development focus. However, it also describes issues that can arise from losing the refactoring step, test-last development, data-driven testing, test-next development, tautology-based development, coverage-driven development, setup-driven development, and end-to-end test failures. It advocates for constant feedback through baby steps using a failure-driven approach.
"Different software evolutions from Start till Release in PHP product" Oleksa...Fwdays
Ця розповідь розкриє підходи для вирішення багатьох проблем в PHP проєктах через: None-Breaking change development підхід, cross-stack контракти, Trunk Based development, еволюція з Polyrepo до Monorepo з компонентами на різних технологіях, Boilerplat’и компонентів, різні Architecture View, Continuous Testing & Quality, Infrastructure View, Infrastructure as a code як основний інструмент.
Unit testing is a vital but neglected art. Good unit tests don't just test code: they are executable requirements that tell the story of your application, clarify your design, document your code and help track your progress. They help you find bugs fast, and fix them with confidence. If Real programmers don't need unit tests, they sure make life easier for the rest of us!
This document discusses SPARK 2014, a formally verified programming language based on Ada. It provides an overview of how SPARK can be used for various purposes like proving the absence of runtime errors and functional correctness. It also describes how SPARK tools like GNATprove make verification easy to use and integrate into developer workflows. Future plans are outlined, like improved support for concurrency, ghost code, and counterexample generation to aid debugging unproven properties. Resources for learning more about SPARK are provided.
The document discusses the purpose and activities of Iteration 0 in an agile development process. It describes setting up key infrastructure items like version control, IDE configuration, build systems, continuous integration, and project management tools. It emphasizes automating as many tasks as possible. The goal of Iteration 0 is to establish the foundation for subsequent iterations by creating a stable development environment and processes.
Tech Days 2015: Multi-language Programming with GPRbuildAdaCore
The document discusses GNAT Project technology, which allows defining multi-language software projects using GPRbuild project files. A GPR project file provides a declarative description of project properties like source directories, compilation options, and targets. GPRbuild understands different languages and compilers and can build multi-language projects. It can also perform distributed builds across multiple machines.
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...Andrew Phillips
Slides from the presentation "From GitOps to an adaptable CI/CD Pattern for Kubernetes" at the Continuous Delivery NYC meetup, by Andrew Phillips. See https://www.meetup.com/ContinuousDeliveryNYC/events/255366708/ and https://www.youtube.com/watch?v=SYeZ0uIwbLc
Anhand der im JDK 8 bestehenden neuen JavaScript-Engine Nashorn werden die Vorteile des JSR 292 (Supporting Dynamically Typed Languages on the Java Platform) für Skriptsprachen auf der JVM aufgezeigt und mit welchen Performanzsteigerungen diese in Zukunft innerhalb von Java rechnen können. Neben einer Einführung in die Lambda Expressions, die ebenfalls Einzug in das JDK 8 haben und bereits Bestandteil einiger Sprachen ist, werden weitere spezielle Sprachkonstrukte von bestimmten Skriptsprachen betrachtet. Einfache Code-Beispiele zu den jeweiligen Sprache, die auf der JVM laufen, heben ihre Vorteile gegenüber Java hervor. Neben JavaScript (Nashorn) werden Beispiele in Groovy, JRuby und Clojure gezeigt.
Following on from the Open Source Jumpstart in April we are running the first event in a series designed to introduce the most common Open Source tools encountered as a professional developer at work or when contributing to OSS projects. The series will show how the concepts taught at University in computing science and software engineering modules can be applied effectively with Open Source tools and help establish a highly agile approach to the whole software development cycle.
Marrying Jenkins and Gerrit-Berlin Expert Days 2013Dharmesh Sheta
The document discusses marrying Gerrit and Jenkins to improve the code review process. Gerrit is a widely used Git server and code review tool. Jenkins is a popular open source continuous integration tool. By connecting Gerrit and Jenkins, developers can ensure code review requests meet quality standards before review by having Jenkins automatically build and test code changes and report the results in Gerrit. This allows code review to focus on design and avoids wasted time on requests that fail builds or tests. The document then demonstrates this workflow with Gerrit and Jenkins.
Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...Embarcadero Technologies
The Windows Subsystem for Android (WSA) brings native Android applications to the Windows 11 desktop. Learn how to set up and configure Windows Subsystem for Android for use in software development. See what is required to run WSA as well as what is required to target it from your Android development. Windows Subsystem for Android is available for public preview on Windows 11.
Webinar replay and more: https://blogs.embarcadero.com/?p=134192
Code, ci, infrastructure - the gophers wayAlex Baitov
The presence of golang. Golang becomes pretty powerful. There are plenty of everyday golang tools. I will show you that we built infrastructure mostly consists of tools written on one language - golang. What benefits did we gain from writing an application on the language of its infrastructure. And I will describe how we use golang in production.
https://www.learntek.org/cucumber-testing/
https://www.learntek.org/
Learntek is global online training provider on Big Data Analytics, Hadoop, Machine Learning, Deep Learning, IOT, AI, Cloud Technology, DEVOPS, Digital Marketing and other IT and Management courses.
The document discusses using Neo4J, a graph database, with Grails. It provides an overview of NoSQL databases and why graph databases are useful. It then discusses how to integrate Neo4J with Grails using the Neo4J plugin, including mapping domains to nodes and relationships. It provides examples of basic CRUD operations and advanced configurations like using embedded, REST, or high availability modes.
This document discusses using the Neo4J graph database with Grails. It provides an overview of NoSQL databases and why graph databases are useful. It then discusses Neo4J specifically and how its data model is suited to connected data. The document outlines how to install the Neo4J plugin for Grails and use GORM to work with Neo4J. It also discusses advanced configurations like embedded, REST, and high availability modes.
Dell PowerEdge R750 server featuring a modern 100Gb Broadcom 57508 NIC achiev...Principled Technologies
Compared to enabling the same bandwidth capability using four 25Gb NICs
While using multiple 25Gb NICs is an option to increase overall bandwidth of a server, our tests show that it may not optimize bandwidth usage as well as configuring your Dell PowerEdge R750 with a single 100Gb Broadcom 57508 NIC. Across tests using varying TCP stream counts, the Broadcom 57508 solution delivered higher bandwidth and more consistent performance than the same server with four 25Gb NICs. If your organization’s applications demand consistent, fast performance, consider equipping your PowerEdge R750 servers with Broadcom 57508 Dual Port 100Gb network interface cards.
GraalVM can be used as a drop-in replacement for the JDK to run Java programs. It includes the Graal just-in-time compiler which can provide better performance than the default HotSpot compiler. GraalVM also allows ahead-of-time compilation of Java bytecode into native images using SubstrateVM, eliminating the overhead of interpretation and compilation at runtime. These native images have minimal dependencies and fast startup times, making them suitable for containerized microservices and cloud applications.
GraalVM can be used as a drop-in replacement for the JDK to run Java programs. It includes the Graal just-in-time compiler which can provide better performance than the default HotSpot compiler. GraalVM also includes the native-image tool which can compile Java bytecode ahead-of-time to native executables without dependencies, improving startup time significantly. This enables using Java for more dynamic workloads like microservices that require fast startup. Reflection and dynamic proxies require additional configuration for native images. Docker images can also be built from native executables to distribute applications.
Joseph is a Ruby library that interfaces with Libgerbv, an open source CAM tool for processing Gerber files. It allows incorporating Gerber parsing, editing, exporting, and rendering into other programs without needing a UI. The document demonstrates Joseph's usage and highlights that it is easy to install, has no UI requirement, is battle proven, and high performance. It encourages using, spreading the word about, and contributing to Joseph's development and testing.
Common Java problems when developing with AndroidStephen Gilmore
For some, developing for the Android platform might provide their first experience of working with a complex, modern Java API. This may test your knowledge of the Java programming language, especially with regard to features such as generics. The Android APIs make use of generics throughout and so you will have to know how to create and handle generic classes.
Talk a respeito de testes automatizados no frontend (E2E, integração, unitários e visual), dando destaque a aplicações React. A talk foca na utilização da biblioteca react-testing-library desenvolvida por Kent C. Dodds em 2018. Nela, explico o porquê de optarmos por ela, em quais casos ela melhor se aplica e dou alguns exemplos de utilização.
No matter the length and readability of your code, there is always the possibility for bugs.
Debug functions allow for easier error identification, however, and this presentation lays out the reasoning behind our preference for the GNU Project Debugger.
In this presentation, DornerWorks engineer Chris Guikema demonstrates three implementations of seL4 GDB solutions:
GDB-stub ARM
GDB-server x86
GDB-server ARM
And more…
REST in Peace. Long live gRPC! @ CodineersQAware GmbH
Coodiners Meetup Rosenheim, März 2023, Mario-Leander Reimer (@LeanderReimer, Principal Software Architect bei QAware).
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
This talk focused on modern and efficient Inter Process Communication (IPC) for microservices. We start with a REST API, built using JAX-RS and Quarkus to briefly discuss the pros and cons of this approach. We extended the API with an efficient Protobuf payload representation in order to finally transform the API into a fully fledged high-performance gRPC interface definition. But that’s not all! To put some extra icing on the cake, this talk demonstrated how to consume the gRPC service from a JavaScript web client and also how to completely generate a matching REST API from an enhanced gRPC interface definition to ensure full interoperability in a microservice architecture.
The document discusses the adapter pattern, which converts the interface of one class into another interface clients expect. The adapter pattern allows classes to work together that couldn't otherwise due to incompatible interfaces. Several examples are provided to illustrate how the adapter pattern can be used to adapt one interface to another by inserting an adapter class between them.
This document discusses using Gradle REPL and code completion tools to make Gradle more useful. It introduces the Gradle Groovysh plugin, which provides a Gradle REPL for code completion and testing. It also introduces Groc, which can generate HTML documentation from JavaDoc with Markdown. A demo is provided of using these tools with Gradle.
The document discusses the purpose and activities of Iteration 0 in an agile development process. It describes setting up key infrastructure items like version control, IDE configuration, build systems, continuous integration, and project management tools. It emphasizes automating as many tasks as possible. The goal of Iteration 0 is to establish the foundation for subsequent iterations by creating a stable development environment and processes.
Tech Days 2015: Multi-language Programming with GPRbuildAdaCore
The document discusses GNAT Project technology, which allows defining multi-language software projects using GPRbuild project files. A GPR project file provides a declarative description of project properties like source directories, compilation options, and targets. GPRbuild understands different languages and compilers and can build multi-language projects. It can also perform distributed builds across multiple machines.
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...Andrew Phillips
Slides from the presentation "From GitOps to an adaptable CI/CD Pattern for Kubernetes" at the Continuous Delivery NYC meetup, by Andrew Phillips. See https://www.meetup.com/ContinuousDeliveryNYC/events/255366708/ and https://www.youtube.com/watch?v=SYeZ0uIwbLc
Anhand der im JDK 8 bestehenden neuen JavaScript-Engine Nashorn werden die Vorteile des JSR 292 (Supporting Dynamically Typed Languages on the Java Platform) für Skriptsprachen auf der JVM aufgezeigt und mit welchen Performanzsteigerungen diese in Zukunft innerhalb von Java rechnen können. Neben einer Einführung in die Lambda Expressions, die ebenfalls Einzug in das JDK 8 haben und bereits Bestandteil einiger Sprachen ist, werden weitere spezielle Sprachkonstrukte von bestimmten Skriptsprachen betrachtet. Einfache Code-Beispiele zu den jeweiligen Sprache, die auf der JVM laufen, heben ihre Vorteile gegenüber Java hervor. Neben JavaScript (Nashorn) werden Beispiele in Groovy, JRuby und Clojure gezeigt.
Following on from the Open Source Jumpstart in April we are running the first event in a series designed to introduce the most common Open Source tools encountered as a professional developer at work or when contributing to OSS projects. The series will show how the concepts taught at University in computing science and software engineering modules can be applied effectively with Open Source tools and help establish a highly agile approach to the whole software development cycle.
Marrying Jenkins and Gerrit-Berlin Expert Days 2013Dharmesh Sheta
The document discusses marrying Gerrit and Jenkins to improve the code review process. Gerrit is a widely used Git server and code review tool. Jenkins is a popular open source continuous integration tool. By connecting Gerrit and Jenkins, developers can ensure code review requests meet quality standards before review by having Jenkins automatically build and test code changes and report the results in Gerrit. This allows code review to focus on design and avoids wasted time on requests that fail builds or tests. The document then demonstrates this workflow with Gerrit and Jenkins.
Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...Embarcadero Technologies
The Windows Subsystem for Android (WSA) brings native Android applications to the Windows 11 desktop. Learn how to set up and configure Windows Subsystem for Android for use in software development. See what is required to run WSA as well as what is required to target it from your Android development. Windows Subsystem for Android is available for public preview on Windows 11.
Webinar replay and more: https://blogs.embarcadero.com/?p=134192
Code, ci, infrastructure - the gophers wayAlex Baitov
The presence of golang. Golang becomes pretty powerful. There are plenty of everyday golang tools. I will show you that we built infrastructure mostly consists of tools written on one language - golang. What benefits did we gain from writing an application on the language of its infrastructure. And I will describe how we use golang in production.
https://www.learntek.org/cucumber-testing/
https://www.learntek.org/
Learntek is global online training provider on Big Data Analytics, Hadoop, Machine Learning, Deep Learning, IOT, AI, Cloud Technology, DEVOPS, Digital Marketing and other IT and Management courses.
The document discusses using Neo4J, a graph database, with Grails. It provides an overview of NoSQL databases and why graph databases are useful. It then discusses how to integrate Neo4J with Grails using the Neo4J plugin, including mapping domains to nodes and relationships. It provides examples of basic CRUD operations and advanced configurations like using embedded, REST, or high availability modes.
This document discusses using the Neo4J graph database with Grails. It provides an overview of NoSQL databases and why graph databases are useful. It then discusses Neo4J specifically and how its data model is suited to connected data. The document outlines how to install the Neo4J plugin for Grails and use GORM to work with Neo4J. It also discusses advanced configurations like embedded, REST, and high availability modes.
Dell PowerEdge R750 server featuring a modern 100Gb Broadcom 57508 NIC achiev...Principled Technologies
Compared to enabling the same bandwidth capability using four 25Gb NICs
While using multiple 25Gb NICs is an option to increase overall bandwidth of a server, our tests show that it may not optimize bandwidth usage as well as configuring your Dell PowerEdge R750 with a single 100Gb Broadcom 57508 NIC. Across tests using varying TCP stream counts, the Broadcom 57508 solution delivered higher bandwidth and more consistent performance than the same server with four 25Gb NICs. If your organization’s applications demand consistent, fast performance, consider equipping your PowerEdge R750 servers with Broadcom 57508 Dual Port 100Gb network interface cards.
GraalVM can be used as a drop-in replacement for the JDK to run Java programs. It includes the Graal just-in-time compiler which can provide better performance than the default HotSpot compiler. GraalVM also allows ahead-of-time compilation of Java bytecode into native images using SubstrateVM, eliminating the overhead of interpretation and compilation at runtime. These native images have minimal dependencies and fast startup times, making them suitable for containerized microservices and cloud applications.
GraalVM can be used as a drop-in replacement for the JDK to run Java programs. It includes the Graal just-in-time compiler which can provide better performance than the default HotSpot compiler. GraalVM also includes the native-image tool which can compile Java bytecode ahead-of-time to native executables without dependencies, improving startup time significantly. This enables using Java for more dynamic workloads like microservices that require fast startup. Reflection and dynamic proxies require additional configuration for native images. Docker images can also be built from native executables to distribute applications.
Joseph is a Ruby library that interfaces with Libgerbv, an open source CAM tool for processing Gerber files. It allows incorporating Gerber parsing, editing, exporting, and rendering into other programs without needing a UI. The document demonstrates Joseph's usage and highlights that it is easy to install, has no UI requirement, is battle proven, and high performance. It encourages using, spreading the word about, and contributing to Joseph's development and testing.
Common Java problems when developing with AndroidStephen Gilmore
For some, developing for the Android platform might provide their first experience of working with a complex, modern Java API. This may test your knowledge of the Java programming language, especially with regard to features such as generics. The Android APIs make use of generics throughout and so you will have to know how to create and handle generic classes.
Talk a respeito de testes automatizados no frontend (E2E, integração, unitários e visual), dando destaque a aplicações React. A talk foca na utilização da biblioteca react-testing-library desenvolvida por Kent C. Dodds em 2018. Nela, explico o porquê de optarmos por ela, em quais casos ela melhor se aplica e dou alguns exemplos de utilização.
No matter the length and readability of your code, there is always the possibility for bugs.
Debug functions allow for easier error identification, however, and this presentation lays out the reasoning behind our preference for the GNU Project Debugger.
In this presentation, DornerWorks engineer Chris Guikema demonstrates three implementations of seL4 GDB solutions:
GDB-stub ARM
GDB-server x86
GDB-server ARM
And more…
REST in Peace. Long live gRPC! @ CodineersQAware GmbH
Coodiners Meetup Rosenheim, März 2023, Mario-Leander Reimer (@LeanderReimer, Principal Software Architect bei QAware).
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
This talk focused on modern and efficient Inter Process Communication (IPC) for microservices. We start with a REST API, built using JAX-RS and Quarkus to briefly discuss the pros and cons of this approach. We extended the API with an efficient Protobuf payload representation in order to finally transform the API into a fully fledged high-performance gRPC interface definition. But that’s not all! To put some extra icing on the cake, this talk demonstrated how to consume the gRPC service from a JavaScript web client and also how to completely generate a matching REST API from an enhanced gRPC interface definition to ensure full interoperability in a microservice architecture.
The document discusses the adapter pattern, which converts the interface of one class into another interface clients expect. The adapter pattern allows classes to work together that couldn't otherwise due to incompatible interfaces. Several examples are provided to illustrate how the adapter pattern can be used to adapt one interface to another by inserting an adapter class between them.
This document discusses using Gradle REPL and code completion tools to make Gradle more useful. It introduces the Gradle Groovysh plugin, which provides a Gradle REPL for code completion and testing. It also introduces Groc, which can generate HTML documentation from JavaDoc with Markdown. A demo is provided of using these tools with Gradle.
This document discusses Python tools for reverse engineering. It introduces the author and their background in security research. It then provides an overview of existing Python libraries for reverse engineering tasks like disassembly, debugging, fuzzing, and analysis. These include libraries that interface with tools like IDA Pro, gdb, bochs, and more. The document proposes creating a web portal to catalog these Python reverse engineering tools, including descriptions and a search function. It concludes by soliciting feedback on the idea and future work.
Introducing the R2DBC async Java connectorMariaDB plc
Not too long ago, a reactive variant of the JDBC driver was released, known as Reactive Relational Database Connectivity (R2DBC for short). While R2DBC started as an experiment to enable integration of SQL databases into systems that use reactive programming models, it now specifies a full-fledged service-provider interface that can be used to retrieve data from a target data source.
In this session, we’ll take a look at the new MariaDB R2DBC connector and examine the advantages of fully reactive, non-blocking development with MariaDB. And, of course, we’ll dive in and get a first-hand look at what it’s like to use the new connector with some live coding!
Gearman is an open-source software that provides a job queue to distribute tasks among multiple machines. It uses a simple request-response protocol that allows workers to perform tasks like processing images, sending email, and log analysis. Originally created by Brad Fitzpatrick in 2005, Gearman is widely used by companies like LiveJournal, Digg and Yahoo to distribute workloads and build asynchronous workflows.
apidays Australia 2022 - Lessons from doing EdgeDevOps (GitOps) in the bush, ...apidays
apidays Australia 2022 - Enabling Business Networks
September 14 & 15, 2022
Lessons from doing EdgeDevOps (GitOps) in the bush, air, and underwater
Dasith Wijesiriwardena, Senior Software Engineer at Microsoft
Juan Burckhardt, Senior Software Engineer at Microsoft
Suganya Srinivasan, Senior Software Engineer at Microsoft
Jason Goodsell, Senior Software Engineer at Microsoft
------------
Check out our conferences at https://www.apidays.global/
Do you want to sponsor or talk at one of our conferences?
https://apidays.typeform.com/to/ILJeAaV8
Learn more on APIscene, the global media made by the community for the community:
https://www.apiscene.io
Explore the API ecosystem with the API Landscape:
https://apilandscape.apiscene.io/
Deep dive into the API industry with our reports:
https://www.apidays.global/industry-reports/
Subscribe to our global newsletter:
https://apidays.typeform.com/to/i1MPEW
Steven White gave a presentation on using Go (golang) to build serverless applications targeting AWS Lambda. He defined serverless computing and Function as a Service (FaaS). The presentation included setting up a Go project to target Lambda, integrating with AWS API Gateway, and using DynamoDB as a backend database for a simple REST API, with live coding demonstrations. Resources for further learning about serverless architectures using Go and AWS Lambda were also provided.
GraphQL is query language for APIs, but what are the advantages and how would one implement such in their microservices/APIs. In this session, I will go through the basics of GraphQL, different aspects of GraphQL and architecture of such APIs. There will be a demo/live-coding on, how 3 different ways we can implement GraphQL for a Springboot microservice/API. Lots of examples, live coding and helpful comparison on structure, usage and implementations of GraphQL in Springboot & Java world.
What's New in WebSphere Application ServerCOMMON Europe
This document discusses features of IBM Power Systems and WebSphere Application Server. It provides an agenda that covers WebSphere Application Server V8.0, V8.5 and new installation features. It also summarizes the WebSphere Application Server family and capabilities for developing, deploying and managing applications.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive functioning. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms.
1) Power systems are increasingly virtualized, but IBM i currently lacks a way to control workloads on a system and cap specific workloads to prevent overrunning system capacity.
2) Workload groups would allow users to set the amount of processing capacity for a workload, capping it to a specified number of processors. This provides workload control and ensures unstable jobs do not impact performance.
3) Workload groups also help control licensing costs by allowing products to be licensed for less cores than the partition contains and enforcing that product is limited to the licensed number of cores.
The document discusses the benefits of IBM's Power Systems and IBM i operating system. It highlights how IBM i is designed for business needs by being totally integrated, providing legendary reliability, being virtualized by design, and enabling growth without disruption. It provides examples of customers like G.A.F. Seelig and Pantheon Automation that have benefited from lower costs, improved productivity and performance, and better support using IBM Power Systems and IBM i.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms for those who already suffer from conditions like anxiety and depression.
IBM Systems Director Navigator for i is a new web-based console for managing IBM Power Systems running IBM i 6.1 or 7.1. It contains over 300 tasks from the web-enabled functions of System i Navigator, organized into 13 categories. Additional functions from purchased LPPs like iHASM and BRMS will also be available when installed. While it includes most System i Navigator capabilities, it is initially missing some database and disk management functions, though disk management was improved in 7.1. IBM Systems Director Navigator for i is included with the operating system at no extra charge.
IBM i Trends & Directions Common Europe 2012COMMON Europe
IBM is working to enable a Smarter Planet through technologies like Big Data and optimized systems tuned for specific workloads. IBM i continues to enhance the platform through strategies that lower costs and improve flexibility. Recent developments include the Power Systems architecture and PureSystems platforms, which integrate expertise across infrastructure to improve efficiency, flexibility and simplified management.
IBM i Technology Refreshes Overview 2012 06-04COMMON Europe
IBM Power Systems introduces Technology Refreshes which provide a means to deliver operating system enhancements through PTF groups to installed releases of IBM i. A Technology Refresh includes PTFs that enable new hardware, firmware, and virtualization capabilities. It consists of a Technology Refresh PTF group and Cumulative PTF package that are tested and delivered together to provide new functionality in a manner less disruptive than a full release upgrade.
IBM Power Systems is designed for business. Major releases in the Power Systems era include IBM i 6.1, which introduced foundations for the future like solid state drive support, a Java virtual machine, and Systems Director Navigator. IBM i 6.1 also improved Java and WebSphere performance by up to 78% compared to prior releases. Customers saw benefits from migrating to newer Power Systems servers running IBM i, like reduced costs, improved reliability, and being positioned for growth.
DB2 Web Query for i is a web-based query and reporting tool that provides a modernized interface for accessing data in DB2 for i. Version 2.1 introduces simplified packaging and new features like improved mobility support, integrated report scheduling, and a consolidated development tool called InfoAssist. The application integration extension allows integrating DB2 Web Query reports and analytics into other applications through a simple URL interface to improve business intelligence capabilities.
This document provides an overview of IBM Power Systems and the next generation of IBM i Access. It discusses IBM's systems management strategy including the Hardware Management Console (HMC) and IBM Systems Director. It also outlines the IBM i Access family of products, including IBM i Access for Windows, IBM i Access for Web, and the new IBM i Access Client Solutions. The document reviews the product's configuration, console, data transfer, 5250 emulation, and deployment options. It notes that a closed beta of the new client is currently underway with a technology preview planned for July 2012.
The document provides an overview of Zend Server 5 for IBM i. It discusses Zend's relationship with IBM, the technical overview of Zend Server, the installation process, features of the community edition including the toolkit and optimizer, and features of the commercial edition such as application monitoring, code tracing, and job queue capabilities. The document is intended for an audience that uses PHP somewhere else, is new to Zend PHP, or wants to understand Zend's strategic direction with IBM i.
IBM has made major investments in RPG over many years to continually enhance and modernize it. Key updates include adding free-form syntax and object-oriented capabilities, expanding the supported data types and built-in functions, improving readability and interoperability with technologies like Java and XML, and maintaining performance and compatibility on IBM Power Systems. RPG remains a strategic language for IBM and its users.
This document summarizes a presentation on using arrays in PHP for RPG programmers. The presentation introduces different types of PHP arrays, such as enumerated, associative, and multidimensional arrays. It compares PHP arrays to RPG arrays and shows how PHP arrays are more dynamic, with no size limits and the ability to dynamically add and remove elements. The presentation also demonstrates various PHP array functions, such as sorting, searching, and manipulating elements, and provides examples of how RPG functions map to similar PHP functions. It suggests ways to debug arrays and formats sample code.
Open source report writing tools for IBM i Vienna 2012COMMON Europe
The document is a presentation on open source report writing tools for IBM i systems. It discusses traditional RPG reporting approaches, designing reports using reporting tools like Jasper Reports, integrating open source tools with RPG, and deployment strategies. The presentation includes code examples of generating reports with traditional RPG and with Jasper Reports via the iText library.
IBM Power Systems provides an overview of moving from IBM i V5R4 to 7.1. Key points include:
- IBM i 7.1 is the latest release and provides significant enhancements over prior versions.
- Moving directly from V5R4 to 7.1 is supported, though multiple upgrades may be required from earlier versions.
- A technology refresh is simpler than a major release and provides new functions without disruption.
- Planning is required to understand version dependencies and ensure a smooth upgrade path.
The document discusses MySQL and how it can be used on IBM i systems. It provides an overview of MySQL, how to install Zend DBi which provides MySQL for IBM i, and how to use various interfaces like the MySQL command line and phpMyAdmin to interact with and manage MySQL databases. It also describes how the IBM DB2 Storage Engine allows MySQL data to be stored directly in DB2 tables.
This document discusses IBM's vision for smarter computing through the integration of big data, optimized systems, and cloud computing. It highlights how companies are leveraging large volumes of data and analytics to gain business insights. IBM focuses on improving storage efficiency and management to help clients meet service levels while reducing costs in the face of rapidly growing data. Solid state disks are presented as a way to address the performance and capacity challenges of magnetic disks for storing large amounts of data.
This document provides an overview of getting started with PHP on IBM i. It discusses understanding the PHP universe and stack, installing Zend Server and Zend Studio, and getting productive with PHP on IBM i through sample scripts. The key steps are installing Zend Server, configuring it, installing Zend Studio, connecting to databases and files on IBM i, and writing simple PHP scripts to output "Hello World" and retrieve data from a database.
How information systems are built or acquired puts information, which is what they should be about, in a secondary place. Our language adapted accordingly, and we no longer talk about information systems but applications. Applications evolved in a way to break data into diverse fragments, tightly coupled with applications and expensive to integrate. The result is technical debt, which is re-paid by taking even bigger "loans", resulting in an ever-increasing technical debt. Software engineering and procurement practices work in sync with market forces to maintain this trend. This talk demonstrates how natural this situation is. The question is: can something be done to reverse the trend?
Main news related to the CCS TSI 2023 (2023/1695)Jakub Marek
An English 🇬🇧 translation of a presentation to the speech I gave about the main changes brought by CCS TSI 2023 at the biggest Czech conference on Communications and signalling systems on Railways, which was held in Clarion Hotel Olomouc from 7th to 9th November 2023 (konferenceszt.cz). Attended by around 500 participants and 200 on-line followers.
The original Czech 🇨🇿 version of the presentation can be found here: https://www.slideshare.net/slideshow/hlavni-novinky-souvisejici-s-ccs-tsi-2023-2023-1695/269688092 .
The videorecording (in Czech) from the presentation is available here: https://youtu.be/WzjJWm4IyPk?si=SImb06tuXGb30BEH .
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving
Manufacturing custom quality metal nameplates and badges involves several standard operations. Processes include sheet prep, lithography, screening, coating, punch press and inspection. All decoration is completed in the flat sheet with adhesive and tooling operations following. The possibilities for creating unique durable nameplates are endless. How will you create your brand identity? We can help!
HCL Notes and Domino License Cost Reduction in the World of DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-and-domino-license-cost-reduction-in-the-world-of-dlau/
The introduction of DLAU and the CCB & CCX licensing model caused quite a stir in the HCL community. As a Notes and Domino customer, you may have faced challenges with unexpected user counts and license costs. You probably have questions on how this new licensing approach works and how to benefit from it. Most importantly, you likely have budget constraints and want to save money where possible. Don’t worry, we can help with all of this!
We’ll show you how to fix common misconfigurations that cause higher-than-expected user counts, and how to identify accounts which you can deactivate to save money. There are also frequent patterns that can cause unnecessary cost, like using a person document instead of a mail-in for shared mailboxes. We’ll provide examples and solutions for those as well. And naturally we’ll explain the new licensing model.
Join HCL Ambassador Marc Thomas in this webinar with a special guest appearance from Franz Walder. It will give you the tools and know-how to stay on top of what is going on with Domino licensing. You will be able lower your cost through an optimized configuration and keep it low going forward.
These topics will be covered
- Reducing license cost by finding and fixing misconfigurations and superfluous accounts
- How do CCB and CCX licenses really work?
- Understanding the DLAU tool and how to best utilize it
- Tips for common problem areas, like team mailboxes, functional/test users, etc
- Practical examples and best practices to implement right away
In the realm of cybersecurity, offensive security practices act as a critical shield. By simulating real-world attacks in a controlled environment, these techniques expose vulnerabilities before malicious actors can exploit them. This proactive approach allows manufacturers to identify and fix weaknesses, significantly enhancing system security.
This presentation delves into the development of a system designed to mimic Galileo's Open Service signal using software-defined radio (SDR) technology. We'll begin with a foundational overview of both Global Navigation Satellite Systems (GNSS) and the intricacies of digital signal processing.
The presentation culminates in a live demonstration. We'll showcase the manipulation of Galileo's Open Service pilot signal, simulating an attack on various software and hardware systems. This practical demonstration serves to highlight the potential consequences of unaddressed vulnerabilities, emphasizing the importance of offensive security practices in safeguarding critical infrastructure.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
Skybuffer SAM4U tool for SAP license adoptionTatiana Kojar
Manage and optimize your license adoption and consumption with SAM4U, an SAP free customer software asset management tool.
SAM4U, an SAP complimentary software asset management tool for customers, delivers a detailed and well-structured overview of license inventory and usage with a user-friendly interface. We offer a hosted, cost-effective, and performance-optimized SAM4U setup in the Skybuffer Cloud environment. You retain ownership of the system and data, while we manage the ABAP 7.58 infrastructure, ensuring fixed Total Cost of Ownership (TCO) and exceptional services through the SAP Fiori interface.
Programming Foundation Models with DSPy - Meetup SlidesZilliz
Prompting language models is hard, while programming language models is easy. In this talk, I will discuss the state-of-the-art framework DSPy for programming foundation models with its powerful optimizers and runtime constraint system.
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...Alex Pruden
Folding is a recent technique for building efficient recursive SNARKs. Several elegant folding protocols have been proposed, such as Nova, Supernova, Hypernova, Protostar, and others. However, all of them rely on an additively homomorphic commitment scheme based on discrete log, and are therefore not post-quantum secure. In this work we present LatticeFold, the first lattice-based folding protocol based on the Module SIS problem. This folding protocol naturally leads to an efficient recursive lattice-based SNARK and an efficient PCD scheme. LatticeFold supports folding low-degree relations, such as R1CS, as well as high-degree relations, such as CCS. The key challenge is to construct a secure folding protocol that works with the Ajtai commitment scheme. The difficulty, is ensuring that extracted witnesses are low norm through many rounds of folding. We present a novel technique using the sumcheck protocol to ensure that extracted witnesses are always low norm no matter how many rounds of folding are used. Our evaluation of the final proof system suggests that it is as performant as Hypernova, while providing post-quantum security.
Paper Link: https://eprint.iacr.org/2024/257
What is an RPA CoE? Session 1 – CoE VisionDianaGray10
In the first session, we will review the organization's vision and how this has an impact on the COE Structure.
Topics covered:
• The role of a steering committee
• How do the organization’s priorities determine CoE Structure?
Speaker:
Chris Bolin, Senior Intelligent Automation Architect Anika Systems
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframePrecisely
Inconsistent user experience and siloed data, high costs, and changing customer expectations – Citizens Bank was experiencing these challenges while it was attempting to deliver a superior digital banking experience for its clients. Its core banking applications run on the mainframe and Citizens was using legacy utilities to get the critical mainframe data to feed customer-facing channels, like call centers, web, and mobile. Ultimately, this led to higher operating costs (MIPS), delayed response times, and longer time to market.
Ever-changing customer expectations demand more modern digital experiences, and the bank needed to find a solution that could provide real-time data to its customer channels with low latency and operating costs. Join this session to learn how Citizens is leveraging Precisely to replicate mainframe data to its customer channels and deliver on their “modern digital bank” experiences.
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
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