GE Energy, through its Smallworld subsidiary, has been providing geospatial software solutions to the utility and telco markets for over 20 years. One of the fundamental building blocks of their technology is a dynamically-typed object oriented programming language called Magik. Like Java, Magik source code is compiled down to bytecodes that run on a virtual machine -- in this case the Magik Virtual Machine.
Throughout the years, GE has invested considerable engineering talent in the support and maintenance of this virtual machine. At the same time vast energy and resources have been invested in the Java Virtual Machine. The question for GE has been whether to continue to make that investment on its own or to leverage massive effort provided by the Java community? Utilizing the Java Virtual Machine instead of maintaining its own virtual machine would give GE more opportunity to focus on application solutions.
At last count, there are dozens, perhaps hundreds of examples of programming languages that have been hosted atop the Java Virtual Machine. Prior to the release of Java 7, that effort, although certainly possible, was generally less than optimal for languages like Magik because of its dynamic nature. Java, as a statically typed language had little use for this capability. In the quest to be a more universal virtual machine, Java 7, via JSR-292, introduced a new bytecode called invokedynamic. In short, invokedynamic affords a more flexible method call mechanism needed by dynamic languages like Magik.
With this new capability GE Energy has succeeded in hosting their Magik environment on top of the Java Virtual Machine. So you may ask, why would GE wish to do such a thing? The benefits are many:
- Competitors to GE Energy claimed that the Magik environment was proprietary. By utilizing the Java Virtual Machine, that argument gets put to bed. JVM development is done in open source, where contributions are made world-wide by all types of organizations and individuals.
- The unprecedented wealth of class libraries and applications written for the Java platform are now opened up to Magik/JVM platform as first class citizens.
- In addition, the Magik/JVM solution vastly increases the developer pool to include the 9 million Java developers -- the largest developer community on the planet.
- Applications running on the JVM showed substantial performance gains, in some cases as much as a 5x speed up over the original Magik platform.
- Legacy Magik applications can still run on the original platform. They can be seamlessly migrated to run on the JVM by simply recompiling the source code.
- GE can now leverage the huge Java community. Undeniably the best virtual machine ever created, hundreds if not thousands of world class developers continually improve, poke, prod and scrutinize all aspects of the Java platform. As enhancements are made, GE automatically gains access to these.
- As Magik has little in the way of support for multi-threading, GE will benefit from current and future Java offerings (e.g. lambda expressions) that aim to further facilitate multi-core/multi-threaded application development.
- As the JVM is available for many more platforms, it broadens the reach of Magik, including the potential to run on a class devices never envisioned just a few short years ago. For example, Java SE compatible runtime environments are available for popular embedded ARM/Intel/PowerPC configurations that could theoretically host this software too.