Blog

The latest expert opinions, articles, and guides for the Java professional.

A Short History of Nearly Everything Java

What makes Java & the JVM amazing?

There are multiple things that make Java the best tool for multiple types of jobs. Here is a list compiled by Java Champion Geert Bevin, when he returned to Java development after a considerable period of time of not using it. He wrote an awesome 10-part series that covers the following reasons why Java rocks more than ever:

  • The Java Compiler
  • The Core API
  • Open-Source
  • The Java Memory Model
  • High-Performance JVM
  • Bytecode
  • Intelligent IDEs
  • Profiling Tools
  • Backwards Compatibility
  • Maturity With Innovation

Everyone can decide what makes Java special for them, but no one could argue that Java is an important part of software development world for 20 years now and is here to stay.


A relatively short history of Java releases and events

relatively short history of nearly everything java releases and events

What’s in the JVM?

short history of nearly everything java jvm library

BYTECODE VERIFIER
This makes sure loaded code is safe: checks the code is valid, jumps instructions lead to valid code, checks type, finds uninitialized variables.

INTERPRETER
Parses the bytecode, interprets it instruction by instruction without transformations.

JIT COMPILER
Oracle’s HotSpot comes with a tiered compiler that goes from Java bytecode to native code, which can be optimised for quicker startup times at stable performance, or for a slower compilation but a more performant long run.

GARBAGE COLLECTOR
Java objects get created in a certain region of memory called “heap”. Objects that are not reachable from the application anymore are removed from memory, freeing it up.

THREAD SCHEDULER
Threads are the basis for parallelism and Java uses threads to achieve concurrency.

JAVA CLASS LIBRARY
Classes loaded from rt.jar, including, but not limited to java.lang.*; java.util.concurrent.*, etc. java.util in general.

IO LIBRARY
This is how the JVM operates with the outside world. Reads/writes to disks, network, etc.

NATIVE CODE
The JVM is written in C++, so Java interop with C is good. Also, there are many intrinsic methods that have an incredibly optimised native implementation.


DOWNLOAD THE PDF

Responses (5)

  1. Avatar  

    Dmitry Leskov

    September 24, 2014 @ 8:47 am

    There is at least one more certified JVM that you did not mention: Excelsior JET (www.excelsiorjet.com). Developed in Novosibirsk, Russia, it has been on the market since 2000, and was certified Java Compatible in 2005. The main distinctive feature of Excelsior JET is its Ahead-Of-Time (AOT) compiler, which takes your jar files as input and produces an optimized native executable for Windows, OS X, or Linux. AOT compilation benefits are dual: it hinders reverse engineering of your app, and at the same time improves the end-user experience through faster startup, smaller footprint and JRE-independency.

    Disclaimer: Yes, I work for Excelsior.

  2. Avatar  

    Chris Snyder

    September 24, 2014 @ 3:56 pm

    I used JET for a consumer software product at my old company. It allowed us to distribute our software without worrying about whether the customer had a JRE installed. It worked great, and Excelsior support was excellent (even though we were a tiny company not paying for a big support contract).

    I don’t have a use for JET now (everything is web-based for me at the moment), but I’m glad to hear that you’re still going strong. Keep up the good work!

  3. Avatar  

    Oleg Šelajev

    September 24, 2014 @ 4:59 pm

    Great point, Dmitry. For brevity, we didn’t describe all the existing JVM implementations, not even all the certified ones. Just the most major ones.

    So, big thanks for contributing the info!

  4. Avatar  

    Debbie Fuller

    September 25, 2014 @ 7:52 am

    Nice blog Oleg, but there is another certified JVM that was missed off from Waratek (www.waratek.com). With a team of experienced dedicated JVM developers it is Oracle certified Java compatible and was initially developed to provide multitenancy with elastic memory and application isolation. (http://www.waratek.com/blog/december-2013/capacity-planning-memory-for-real-world-jvm-applic)

    The containment and isolation that the in built hypervisor provided has since been expanded to provide ‘Runtime Application Self Protection’ for Java apps. This is the first time that RASP has been provided within the JVM. Because the JIT compiler can intelligently interpret messages, it avoids ‘false positives’ and ‘gracefully blocks’ attacks. This protects applications from SQLi, Zero Day attacks as well as providing virtual patching for Legacy Java. (http://www.waratek.com/security/how-it-works)

    We’re going to be at JavaOne and hope to meet up with you there!

    Disclaimer: Yes, I do work for Waratek!

  5. Avatar  

    Dmitry Leskov

    September 25, 2014 @ 1:18 pm

    Thank you for your kind words, Chris.

RSS feed for comments on this post.

Leave a comment