I have listed some “must haves” in order to have your developers work efficiently. Check this list to get started with your IBM i modernization project.
shell developed by GNU. It combines usefull features from Korn shell (ksh) and C shell (csh). The same shell is used in all Linux operating systems.
+ Path completion (by pressing 2x tab)
+ Command history with up/down arrows
+ Pipeline commands
A clever text editor to quickly create or edit configuration files…
- Vim: (Vi IMproved), is a highly configurable text editor built to create or change any kind of text very efficient. Vim is very stable, has many plugins, and supports hundreds of programming languages and so many more advantages. This text editor should be used by experienced system engineers (with a history of using Vi).
- Nano: Small and user-friendly text editor, I recommend this editor when VIM is too much.
- NGINX: Open source webserver, every student in informatics will once have configured one of these.
- Apache: The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows. Apache is still the most popular webserver. (Cannot be installed with the open source package manager!)
- Git: Another “must have” in order to have your developers work efficiently: Source control. Luckily, the IBM-community also has a package for GIT. GIT enables you to host repos on the same server as your application, or on a dedicated server for version control. You can build/deploy your application automatically with GIT-hooks, Jenkins or containers.
The most important features of version control are:
- Convenient cooperation (for any team size)
- The ability to revert mistakes
- An overview of all features in progress
- Automatic deployment
No modern development team can work without source/version control.
Modern programming languages/frameworks
So far we discussed the simple but nifty tools to work efficiently on your SSH-terminal, afterwards we talked about the modern webserver to host our application. We got source control to facilitate working with multiple developers. However, in which languages/frameworks can we program on the IBM i? All the following languages can run on the IBM I and connect to ibm-db2 databases:
Python is a high-level, interpreted and general-purpose dynamic programming language that focuses on code readability. It has many support libraries (installing is with the package manager “pip”), easy to program object-oriented and has many dynamic features to create open/closed, reusable solutions. Disadvantages are the poor performance and the primitive database layer as other programming languages have technologies like JDBC and ODBC.
Popular python frameworks:
The PHP programming language has been around for over two decades and established itself as a powerful and reliable solution, gaining an army of supporters and admirers. Famous examples of PHP as a web development tool are WordPress and Facebook. Advantages of PHP are performance, many options for database connectivity, and the good documentation. The biggest disadvantage of PHP is the inconsistent syntax; a new developer will have a harder time becoming fluent in this language.
Popular PHP frameworks:
- The node.js run-time environment supports none blocking I/O operations
- It runs by default asynchronous
Popular Node.js frameworks:
Ruby is a dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write. It has many community packages (called Gems) and is well documented. Ruby-code is easy to read, but because of its radical syntax a little harder to learn. Ruby provides a lot of dynamic functionality to write reusable and open/closed solutions. (Cannot be installed with the open source package manager!)
Ruby has the same issues as python, slow performance and neither purely functional nor object-oriented.
Popular Ruby frameworks:
- Ruby on Rails
.NET is an open source developer platform, created by Microsoft, for building many different applications. It has many packages (installed with Nuget); unfortunately, not all of them are free. NET comes with other timesaving functionality’s like LINQ, ASP.NET and Entity Framework. (Cannot be installed with the open source package manager!)
The IBM I has his own database system, the IBM db2 is a Relational DataBase Management System (RDBMS). It is called db2 referring to the change from hierarchical database models to the new relational model. DB2 was designed to work only on IBM mainframe platforms, but today it is available on all modern servertypes. It is a full-featured, high-performance database engine capable of handling large quantities of data and concurrently serving many users.
If you for some reason will/can not use the IBM DB2 databases, QOpenSYS provides many alternatives.
PostgreSQL is a powerful, open source object-relational database system with over 30 years of active development that has earned it a strong reputation for reliability, feature robustness, and performance.PostgreSQL is completely open source, allowing you to execute, watch and edit the source-code freely. It works relational and very fast, especially for complex queries.
MySQL is the world’s most popular open source database. With its proven performance, reliability and ease-of-use, MySQL has become the leading database choice for web-based applications. It works relational and is one of the fastest databases available. For complex query’s it works a little bit slower than PostgreSQL. MySQL may be used commercially, but if you modify the code-base you’re supposed to publish this.
SQLite3 is a C-language library that implements a small, fast, self-contained, high-reliability, full-feature, SQL database engine. SQLite is the most used database engine in the world. SQLite is built in all mobile phones and most computers and comes bundled inside countless other applications that people use every day. SQLite is the best choice for local storage, the database can’t be exposed to the internet. (E.g., your database needs to be on the same server as your backend application).
These are all the databases that QOpenSYS provides at this moment, surprisingly MariaDB, MongoDB, Elasticsearch, … Are not available (yet) although these databases are popular. In general QOpenSYS does not provide any no-sql solution. But the IBM-community will provide this surely in the feature.
I want to emphasize that the IBM-systems are reliable and performant, they have proven themselves for years. The systems have become robust because of their backward compatibility, but IBM has taken big steps to improve this. They have always been big contributors to modern Open Source projects (eg. RedHat) and will surely keep modernizing.
Servers are big investments, so you should at least consider them before you buy another (usually more expensive) system. I have been pleasantly surprised of the durability of the servers. I have seen a company where they forgot that they even had an IBM-server (It was well hidden somewhere in the walls), without maintenance or any support it stayed live for years. However, this does not mean that you should not maintain your servers, because before you know it, modernization might become mandatory ;-).