What New Language Will IBM i Support Next?
March 27, 2019 Alex Woodie
The prospect of a new language coming to a platform is always reason for excitement. New languages bring new capabilities, or at least faster ways to tap into existing capabilities. The question for those living and working on the IBM i platform is what language will come next?
RPG remains the go-to language used by the vast majority developers on the IBM i platforms. According to the 2019 survey by HelpSystems, 84 percent of coders on the box use RPG. COBOL, RPG’s partner in legacy crime, is also supported in the Rational Development for IBM i RDi, along with C and C++ compilers. Java has also been big for a number of years.
In the mid-2000s, IBM made a big splash with PHP and its partnership with Zend Technology, the backers of the open source language, which is now controlled by Rogue Wave Software. More recently, IBM has been bringing even more languages to the box, including Python, Perl, and Node.js. Even Microsoft’s .NET is now running on IBM i via the open source Mono project, which we have recently covered in these pages.
(IBM i developers often find themselves working with Web-based languages, and the IBM i world supports many of these, including HTML and JavaScript. However, these languages run in the browser, not the server, so they’re not really considered IBM i-supported languages.)
So what’s next for IBM i in the world of languages that can actually run on the Power line of processors? There are rumblings that Go could be the next in line.
Go was originally developed by Google to streamline the development of applications running in parallel across multi-node clusters of commodity X86 boxes. The first line of Go code was laid down in 2007, and the language was released to the public in 2012. Since then, it has become one of the most popular languages in the world.
Go (which is sometimes called “Golang”) is a static-typed, compiled language that is syntactically similar to C, which programmers say make it relatively easy to read. The language offers features like memory safety and garbage collection that users say help Go to create secure and performant programs. It ships with a standard library, but there are many other open source libraries available too. The language features its own built-in testing tool, which is appreciated by some users.
Google is said to have developed Go largely in reaction to Oracle taking over Java. Google had been a big user of Java before Oracle’s acquisition of Sun Microsystems, and the company was reportedly concerned that Java’s future would be controlled by Oracle. While it resembles C to some extent, Go is said to have been developed as the antithesis of C++, which its creators reportedly loathed.
In his blog “Brave New Geek,” software engineer Tyler Treat elaborates on what makes Go tick. “Go makes it easy to write code that is understandable,” he writes. “There’s no magic like many enterprise Java frameworks and none of the cute tricks you’ll find in most Python or Ruby codebases. The code is verbose but readable, unsophisticated but intelligible, tedious but predictable.”
Some IBMers have said that they’re working on porting Go to IBM i. If true, the port would almost certainly be via PASE, which is the technology giant’s preferred route to bringing new software to the platform these days, especially software that’s open source.
Other possible candidates for IBM i include Erlang, a language that traces its roots back to 1986, when it was developed by Ericsson as a proprietary language for telephony applications. Erlang was released as open source in 1998, and today
Another candidate could be Swift, the object-oriented, static-typed language from Apple. Swift builds extensively upon Objective-C, which is another programming language from Apple that builds upon C and is the primary language for developing iOS mobile apps.
Unlike Objective-C, however, Swift is used more extensively on servers. In fact, since Swift was open sourced under an Apache 2 license in 2015, the language has even made it to IBM’s z Systems mainframe via the IBM Toolkit for Swift on z/OS. Could such a toolkit bring Swift to IBM i?
There are other languages that could eventually make their way to IBM i. There are JVM-compatible languages like Groovy, Scala, and Kotlin that are garnering a fair bit of attention, not to mention languages like Julia and Rust that are finding followers. The AIX team at IBM is also doing some work to support emerging compiler technology, such as Clang and LLVM, which could portend some future PASE-level enhancements for IBM i.
Bringing new languages to IBM i seems like a good idea. After all, it puts new tools in the hands of application developers, while allowing a new group of developers to write applications that run on IBM i. But not everybody is thrilled with the idea that more syntaxes make for a stronger ecosystem.
Instead of getting existing developers to learn new languages, some say IT departments are better off bolstering their development teams with skills like database design, project management, and technical writing.
For some, having a well-rounded development team that can develop, deploy, and maintain applications – as opposed to just knowing the latest, greatest language – is the critical factor that’s missing in so many IT departments these days.
Whichever camp you find yourself in – the one eager to welcome new languages into the IBM i ecosystem or the one yearning for more well-rounded developers using existing technologies – the topic of application development strategies on the IBM i platform is an important one.
RELATED STORIES
Guru: Speed Up Command-Line PHP
JRuby and the famous Ruby-on-Rails framework have been running on IBM i for about 15 years. Like CL, JRuby can be compiled or it can run interpreted & interactive. JRuby is a complete implementation of Ruby language that runs on the JVM so, like many JVM based languages, it integrates well with the JT400 database access toolkit.
Setup is simply a download & FTP (or drag-n-drop) to a IFS folder so it takes only a minute or two. Ruby-On-Rails has better performance on JRuby than on the native ruby VM.
The instructions in any getting-started tutorial for Mac or Linux will show everything necessary for running JRuby in QShell. (note: QShell commands are case-sensitive)
Similar JVM languages are Jython (which IBM uses (or used?) in websphere) and Groovy but Ruby and JRuby are more popular and have larger communities, etc. Groovy has the advantage of good integration with the Spring framework. Kotlin requires an outdated version of the JVM.
In my previous comment I was wrong about Kotlin. Docker images with Kotlin running on JDK12 are available.