JVM Internals (2013)
blog.jamesdbloom.com
JVM Internals (2013)
1–10 of 26 posts
Re: JVM Internals (2013)
#2Re: JVM Internals (2013)
#3I don't see LLVM, JVM or the CLR going anywhere. They'll evolve, get smaller, reach more devices and platforms etc but personally I'd like to appreciate the how and the why better.
It'd be useful to know if there are any reasons why I may pick one over the other in certain circumstances I appreciate how there ecosystems and culture are different but I'm curious from a purely technical perspective too.
Re: JVM Internals (2013)
#4I'm a CLR man myself. Just the path my career has taken me really. Does anyone know if there are equivalent documents for CLR or CLR Core? I don't see LLVM, JVM or the CLR going anywhere. They'll evolve, get smaller, reach more devices and platforms etc but personally I'd like to appreciate the how and the why better. It'd be useful to know if there are any reasons why I may pick one over the other in certain circums…
Re: JVM Internals (2013)
#5Re: JVM Internals (2013)
#6I'm a CLR man myself. Just the path my career has taken me really. Does anyone know if there are equivalent documents for CLR or CLR Core? I don't see LLVM, JVM or the CLR going anywhere. They'll evolve, get smaller, reach more devices and platforms etc but personally I'd like to appreciate the how and the why better. It'd be useful to know if there are any reasons why I may pick one over the other in certain circums…
While HotSpot and the CLR are more similar -- at least in their goals -- than different, and each is ahead of the other in some respects and behind in others, I'd say that the most interesting features of HotSpot are its JIT and GCs (it comes with a few) that are years ahead of anything else used in any other environment in the industry (well, except Azul that sells a modified HotSpot with a "pauseless" GC that never pauses the application for more than a few microseconds). In my opinion, the most exciting development regarding HotSpot is the work being done on HotSpot's next generation optimizing JIT called Graal, that comes with an a complementary language toolkit called Truffle[2]. It pushes the envelopes further with regards to HotSpot's defining feature -- speculative optimization and deoptimization -- and lets the user (if they wish) control the code generation through a clever API.
Another important feature of any compliant SE JVM is bytecode manipulation. It allows modifying libraries after they've been compiled -- either on disk or during the class loading process. One use is dependency namespacing, aka shadowing (if your program depends on libraries A and B, and they each depend on different, incompatible versions of library C, shadowing can hide the two versions of C from each other). But one of the coolest things is the ability to transform (and de-transform) bytecode of running classes (to inject, say, tracing).
Since HotSpot is part of OpenJDK, all work on it (including Graal and Truffle) is open-source (and has been for a few years now). The OpenJDK as a whole is probably the world's second largest open-source project (in terms of contributors), after the Linux kernel. The main contributors are, of course, Oracle and IBM (the latter to a much lesser degree), but also Google, Intel, Apple, Twitter and many more.
[1]: https://www.youtube.com/watch?v=uL2D3qzHtqY
[2]: https://wiki.openjdk.java.net/display/Graal/Publications+and...
Re: JVM Internals (2013)
#7I'm a CLR man myself. Just the path my career has taken me really. Does anyone know if there are equivalent documents for CLR or CLR Core? I don't see LLVM, JVM or the CLR going anywhere. They'll evolve, get smaller, reach more devices and platforms etc but personally I'd like to appreciate the how and the why better. It'd be useful to know if there are any reasons why I may pick one over the other in certain circums…
Well, LLVM is something else altogether, as it doesn't try to abstract away the OS, while the JVM does[1]. As to the JVM, well, first of all, there is no "the JVM". There are many JVMs by many vendors, and many types of JVMs (from smart-cards, through various embedded devices, and all the way to desktops, servers and mainframes). Some of the most interesting -- and most important -- ones are made by companies you've…
This changed in Java 7. OpenJDK is now the reference implementation, and thus "the JVM"
Re: JVM Internals (2013)
#8https://www.google.co.uk/url?sa=t&source=web&rct=j&ei=zoczVe...
Re: JVM Internals (2013)
#9I'm a CLR man myself. Just the path my career has taken me really. Does anyone know if there are equivalent documents for CLR or CLR Core? I don't see LLVM, JVM or the CLR going anywhere. They'll evolve, get smaller, reach more devices and platforms etc but personally I'd like to appreciate the how and the why better. It'd be useful to know if there are any reasons why I may pick one over the other in certain circums…
This is what I am aware of on the CLR side, maybe you already know them.
There used to be the "CLR Inside Out" column at the MSDN magazine.
The "CLR via C#" book.
https://www.microsoft.com/learning/en-us/book.aspx?id=15528&...
Channel 9 Presentations
https://channel9.msdn.com/Tags/clr
https://channel9.msdn.com/Tags/clr+4
https://channel9.msdn.com/Search?term=mdil#ch9Search
The ECMA documentation also provides valuable information.
Re: JVM Internals (2013)
#10For example, JikesRVM, Aonix, IBM Websphere Real Time, OS/400 JVM (which makes use of OS/400 kernel JIT and TIMI) and many others.