Chapter 8: 101 guide to hate JVM environment.


Hello everyone, I´m Steve, your host, and in this chapter, we will give the ultimate guide on why the JVM is not the best execution environment (at least, according to Erik Meijer and Jim Miller)
There are several assets people investigate when searching for an alternative implementation path; Portability, Compactness, Efficiency, Security, Interoperability, and Flexibility. Portability stands for using n+m translators instead of n*m translators (Where n equals languages, and m platforms.). Compactness is an important property in the dynamically downloaded code context. Efficiency is delaying the commitment to a specific native platform as much as possible, Security relates to higher level intermediate code. Interoperability to sharing common type system and high-level execution environment. Finally, Flexibility is combining high level intermediate code with metadata.

Meijer explains how JVM excels at anything Java related, but as a multi-language execution environment it lacks many things that are important. On the other hand, CLI has a specific architecture built from the ground up to support multi-language execution.

For starters, CLI manages multiple concurrent threads of control, has an instruction pointer, an evaluation stack, an array of local variables and incoming arguments. methodInfoHandler, local memory pool, return state handle and a security descriptor; It´s architecture also includes assemblies. CLI has its own type system (where the CLI recognizes objects, bools, ints, floats, different primitives and composite types). It also has its base instruction set, as well as different value types and reference types. The way methods are invoked and the interaction between value and reference types are also covered in the article.

I can´t dwell into details of each topic mentioned in the article (due to how detailed they are), instead, I will wrap around some thoughts according to the article; some engineers are still chained to different languages and tools, and through the years, multiple alternatives have appeared and as we are explained in the ideas of Meijer. The CLI execution environment excels in some areas where JVM is not, and I think it will be interesting how we are going to fully use the CLI in our class, and combine it with everything we have been thought on the matter.


References:
Meijer E. (n.d.) Technical Overview of the Common Language Runtime. Available on http://webcem01.cem.itesm.mx:8005/s201811/tc3048/clr.pdf


Comments

Popular posts from this blog

Chapter 5: S-expression Interpreter Framework.

Chapter 0: Compiling a Complying Compiler

Chapter 1: The usefulness of Compiler Design that will (Most Likely) never be touched again.