Sprinkle Some Magik on that Java Virtual Machine
By Jim Connors 5 November 2012
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.
As compared to other JVM language projects, the Magik integration
differs in that it represents a serious commercial entity betting a
sizable part of its business on the success of this effort.
Expect to see announcements not only from General Electric, but
other organizations as they realize the benefits of utilizing the
Java Virtual Machine.