Download presentation
Presentation is loading. Please wait.
Published byEmily Gibson Modified over 7 years ago
1
Profound.js: The future of open source development on IBM i
Agile Modernization with Profound.js Alex Roytman CEO Profound Logic Liam Allan Product Developer Profound Logic
2
3 Different Levels of Application Modernization
User Interface Application Code / Business Logic Database
3
User Interface Modernization
Approaches are: Put something on top of 5250 Replace Green-Screen DDS with a Web or Mobile Interface HTML5 CSS JavaScript JSON PHP / .NET / Java / Node.js are not user interface technologies
4
Bad reasons to modernize RPG backend
Our Java / .NET / PHP team already knows UI programming Assumption that RPG is old and therefore not good at database-driven business applications Misconception that RPG can not output a Web/Mobile Interface
5
Great reasons to modernize backend RPG
Open up codebase to a larger pool of developers Take advantage of Open Source New capabilities Cloud Web Services IoT Watson Modularization
6
The options Free Format ILE RPG Modernize progressively
Chances of failure low Limited resources Staffing Education Examples Creates silos Intrusive Prone to failure More resources available Modernize progressively Chances of failure low Abundance of resources Staffing Open source components Examples, etc.
7
Why Node.js? Proven Enterprise-ready Examples: Walmart eBay Netflix
Liam starts here
8
Why Node.js? More developers than any other language It’s exploding
Open Source Community Millions of developers IBM, Google, and other Giants
9
Performance Why Node.js? Performs and scales better Event loop
Non-blocking I/O Event driven Clusterable Performance
10
Why Node.js? Portable Any platform Including IBM i
Including client-side
11
Why Node.js? JavaScript is already used on client-side Extensible
Single language for entire stack Node.js is just server-side JavaScript Extensible NPM Can be made to work like ILE Allows for Agile Modernization
12
Node.js Start out with a blank slate
Bring in packages depending on needs Built to be adoptable / extensible Not only can you port it to IBM i Can be extended to work with and act like RPG Can allow for Agile Modernization
14
Extending Node with Profound.js
Top-down business programming Add stateful capabilities: ExFmt style of coding Provide both SQL and Record Level Access With support for db overrides, QTEMP, library lists, sessions, etc. Support both strongly and loosely typed fields All IBM i data types, data structures, parameters, etc. Call and be called like an IBM i program (with parameters) by CL/RPG Even when the CL or RPG has interfaces Liam ends here
15
New Application / Package
Agile Modernization Legacy Application New Application / Package RPG RPG RPG RPG RPG RPG RPG RPG RPG RPG RPG RPG RPG
16
New Application / Package
Agile Modernization Legacy Application New Application / Package Java .NET PHP PHP Java Java .NET .NET .NET PHP Java PHP Java
17
Agile Modernization Your Application RPG RPG RPG RPG RPG RPG RPG RPG
18
Agile Modernization Your Application Node.js RPG RPG RPG RPG RPG RPG
19
Agile Modernization Your Application Node.js Node.js Node.js Node.js
RPG RPG Node.js Node.js Node.js Node.js RPG Node.js Node.js RPG RPG RPG RPG
20
NPM – Node Package Manager
Part of Node.js (not installed separately) Uses a public registry of packages Package is just a directory of code Package.json has metadata about the package Packages depend on each other Packages are small
21
Using NPM Npm init Npm install <package>
Npm install <package> --save Npm publish Npmjs.com to browse for packages
22
NPM Demo
23
Using Node Node <script to do something>
Node <script to launch server> Packages are brought in using the require() statement
24
Node Demo Liam ends here
25
Event loop Allows for high throughput in Node.js
Allows Node to be single threaded while still allowing multiple operations to be handled in the background Blocking the event loop is bad Forces the use of event driven programming I/O operations require a callback
26
Top-down Transactional / Business Programming
Read Data Process Data Present Output to User Get and Process User Feedback Update Data
27
What is callback hell? The messy code you sometimes end up with when trying to code callbacks A new function is called when an I/O operation concludes That function is passed in as a parameter Can be named But can also be anonymous
28
What we are forced to do
29
What we might want to be able to do
30
NPM to the rescue A number of “callback hell” solutions are available
Fibers is one popular solution Ported to IBM i by Profound Logic Once implemented in your project, code can be written top-down Event loop is not blocked Waiting for the callback to fire happens inside the implementation Developer doesn’t have to worry about it
31
Extending Node.js to be like ILE
32
Strongly Typed Fields and Calls
33
RPG to Node.js Demo
34
Questions & Answers Our Web Site: www.profoundlogic.com
Profound.js Microsite: Contact me: profoundlogic company/profound-logic-software @ProfoundLogic
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.