spartan "forking" java program launcher
DZone is publishing an article in a three part release on my company's new (to the rest of the Java community – have been using it in my work for 3 years) open source project:
spartan "forking" java program launcher
If interested and want to see the entire article instead of wait on the DZone instalments, just read its README.md on its github site.
As a way of synopsis description of what Spartan is, I'll actually start with the concluding paragraph of the README:
In other programming languages what spartan empowers would perhaps not be very special. Concurrent programming via processes is a rather ancient practice in computing. All manner of stalwart programs that run as services on Linux, like PostreSQL, MySQL, Redis (many others) – and desktop applications such as Chrome browser and lately the Firefox brower – utilize multi-process concurrent programming as core to how they are designed and operate.
However, for the Java language, where this manner of programming now becomes so facile, its very much like a new landscape of program architecture is presenting itself. Enjoy.
Then here is the intro paragraph from the DZone article:
Spartan, a GitHub-hosted, open source project, is a "forking" Java program launcher — Java supervisor processes can launch Java child worker processes (uses Linux fork and then instantiates JVM). Child programs run as same user identity/permissions capability — no authentication or special permissions necessary. Share the same Java code amongst parent supervisor and children processes. Annotations mark entry point methods.
The project has three example programs that illustrate how to program via Spartan enabling capabilities.
I build a lot of pipeline services – written in Java – that run on and assume Linux underpinning. Spartan has been instrumental in making these services robust and self-healing. Plus flexible for bash scripting and invoking many child processes from the supervisor for parallelism.
In the old days I used to try to do these things with EJB beans in a monolithic Java app server – no more. Now I judiciously use child process programming via Spartan-based services and everything becomes more rock solid. It's been a game changer.
submitted by /u/RogerV
[comments]