Hello, my name is Wing Hang Li and I am a PhD student at the University of Glasgow. I also completed an MSc in Information Technology previously at this university.
My research project is "Characterising and Optimising Non-Java Workloads on a JVM". Java is a platform neutral language that uses an abstract computer called a JVM (Java Virtula Machine) to execute its programs on a variety of platforms. Java programs are compiled into bytecode which can be executed by the JVM. Many other languages like Scala, Clojure, JRuby and Jython are now also targetting the JVM. Their own compilers can produce bytecode like Java's but there are differences due to the features of each language. For instance Java is a statically typed language but Clojure, Jruby and Jython are dynamically typed. Java is imperative in style while Scala and Clojure are functional languages. These differences are the reason that non-Java bytecode tends to be slower than Java's when performing the same tasks. However support for non-Java programming languages is being added to JVMs with the JSR292 adding support for dynamically typed programming languages with a new invokedynamic bytecode.
My project will look at the differences in bytecode between Java and non-Java programming languages. I will investigate whether it is possible to identify the programming language from the bytecode it produces and what differences there are in the bytecode of benchmarks written in different languages but performing the same work. Any differences found would be targets for optimisation.