Ublu Midrange and Mainframe Life Cycle Extension Language
Copyright (c) 2015, Absolute Performance, Inc.
Copyright (c) 2016 - 2025 Jack J. Woehr
All rights reserved.
See file LICENSE for license information.
- General information
- Quickstart instructions
- Goublu console support for Ublu
- Ublu in a Window
- Discussion of Ublu
- Default Branch Renamed
- Software Bill of Materials
Ublu is an interpretive language for remote systems programming of midrange or mainframe hosts from a Java platform such as Linux, Mac, OpenBSD or Windows. It also can run natively on IBM i ®, IBM z/OS USS ® or any other reasonable Java platform including Android UserLAnd.
I wrote Ublu because I wanted a language to run on OpenBSD/Mac/Linux/Windows to perform ad-hoc process automation primarily on IBM i. I was supporting consulting clients by writing individual utility programs using JTOpen which I have used since 1998 to control the AS/400. I decided to consolidate the programs in a language, and the result is Ublu. Ublu is a work in progress, as there is always more one could add.
Additionally, Ublu can call Java directly allowing the user to extend the language interpretively in nearly any direction desired.
Running Ublu directly on IBM i is especially useful for modelling processes which you might later wish to code in straight Java. Or maybe you'll leave them in Ublu. Whatever works!
Ublu is Open Source Software under the BSD-2 license.
- The user's guide is userdoc/ubluguide.html
- The full reference is userdoc/ubluref.html
- Both documents are found in the source tree in the
userdoc
directory.
- Both documents are found in the source tree in the
- Here's an example of Ublu code
- The example is syntax-colored using a jEdit edit mode provided with Ublu in the
share/jEdit
directory.
- The example is syntax-colored using a jEdit edit mode provided with Ublu in the
- Ublu Notebook offers experimental AI assistance based on the source and the extant documentation.
The latest release version of Ublu is version 2.0.5.
Ublu is distributed with some of the open source libraries it needs and their license files which permit such distribution. Others are fetched into the project at build time via maven
.
Ublu is already a stable and useful tool which has seen much use in the real world. It is neither complete nor perfect. As with all open source software, there is NO WARRANTY nor GUARANTEE including as regards suitability for any given application.
Download the release, unpack and java -jar ublu.jar
to run Ublu.
Or clone the source for Ublu and do a maven
build:
- Clone the Ublu GitHub repository or download source from the latest release
- Load the project in NetBeans or Eclipse or cd to the top dir of the checkout and type
make clean dist
which will run the appropriatemaven
commands for you. target/ublu*.jar
is the naming pattern for the runtime system, the sources, and the javadoc jars.java -jar target/ublu-
version-jar-with-dependencies.jar
to run Ublu as a plain Java console application.
Ublu's interpreter relies on Java's console support, which is very weak. So I have coded Goublu in Go language.
Goublu is a console front-end that provides an editable Ublu command line. The go command
go get -u github.com/jwoehr/goublu
will fetch the source to your $GOPATH/src
directory. cd $GOPATH/src/github.com/jwoehr/goublu; ./make.sh
to build Goublu for your architecture.
You can start Ublu in a window with the -w [propsfilepath]
switch.
Report bugs or make feature requests in the Issue Tracker
There is some more information in the Ublu Wiki including zine article references.
Discuss Ublu in the IBMiOSS Forum Java channel.
The default branch has been renamed!
master
is now named main
If you have a local clone, you can update it by running:
git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a
The Software Bill of Materials (SBOM) is SBOM_ublu_jwoehr_*.json
Jack Woehr 2025-08-09