Java Virtual Machine

Online Computer Science Degree Guide: Java Virtual Machine

Java is one of the most popular names in the world of internet design, development and programming. The Java programming language is well known for its ability to create interactive web applications. Java and its associated applications and languages all run off a computing device known as Java virtual machine (JVM). JVM acts as the hardware for the Java platform and is a stand alone abstract computing machine. Independent of operating system or hardware requirements, JVM is functional on any computer that can recognize the Java runtime environment (which is the vast majority of computers). In conjunction with the Java runtime environment (JRE), Java’s execution environment, the JVM operates on a binary format known as the .class file format. Within the class file are bytecodes, which are the instructional language for the JVM. In addition to Java programs, any language that runs on .class (or .jar) format can operate on the JVM, another reason behind its widespread use.

Like most popular internet software, the JVM features a ‘plug and play’ design, allowing for uniform usage on all standard operating systems.  Along with its standardized format, JVM also benefits from secure design. Crashes and corruption of the code are not allowed, due in part to the independent operation of the JVM from the programs and languages that operate on it. Additionally, a device known as a bytecode verifier, which runs several checks on bytecode before it is fully implemented, further enhances security.  Sun Microsystems has estimated that the JRE file, which contains JVM, is downloaded 930 million times each year.

As an ongoing effort to provide the best resources on Java virtual machine and computer science, compiled below are selected resources that help the user to better understand JVM. The following resources have been selected to provide guidance for both beginning and experienced developers. Included in this guide are overviews and explanations of the JVM, as well as tutorials and resources for the major languages that run on JVM.

General Background

The Java virtual machine is the engine that powers Java applications and software. For the Java runtime environment to operate, and allow for the implementation of dynamic languages, JVM is a required element. The following links provide an in-depth look at how JVM integrates with Java applications and the internet as a whole.

  • Java Web Tier Architecture – A directory of the available applications and frameworks that run off of JVM. Includes some unique tools for web applications and development.
  • The Java Virtual Machine Specification – A comprehensive online book on JVM, hosted by the creators of Java. Features in depth descriptions of how the Java virtual machine functions and its potential applications.
  • Inside the Java Virtual Machine – An online collection of several chapters from the benchmark book by Bill Venners. Includes detailed explanations and diagrams of the processes involved in the operation of the Java virtual machine.
  • The Java Virtual Machine – A brief academic overview of the processes involved in the operation of the JVM. Includes the answers to some commonly asked questions about the implementation and function of JVM.
  • JVMs, JDKs and JREs – A directory of tools and guides for the programs and software associated with the Java runtime environment. This listing is organized by platforms, operating systems and organizations that operate with Java.

JVM Languages

Besides the Java programming language, there are many other languages that operate off the JVM. These languages are designed for varying purposes, but all operate off the base Java runtime environment and involve the usage of the JVM’s bytecode. Listed below are popular JVM compatible programming languages, as well as some selected alternative languages.

  • Programming Languages for the Java Virtual Machine – A complete and updated listing of the available programming languages that operate off the JVM. Includes popular, alternative, experimental and developing languages, as well a collection of interpreters and other related software.
  • The Da Vinci Machine Project – An open source project aimed at expanding the JVM to incorporate architectural support for languages beyond Java. The focus of this project is to develop extensions for the JVM that will allow for more efficient operation and utilization of dynamic languages.

Popular Languages

  • Top Five Scripting Languages on the JVM – Covers the most popular and widespread scripting languages that are operational with the JVM. Includes overviews and a breakdown of the positives and negatives of each language.

Java

The original programming language developed by Oracle for use with the JVM. While this language is somewhat outdated and outperformed by newer languages, it is still highly popular and widespread across the web.

  • Learning the Java Language – This listing of tutorials is provided by Oracle, the developers of Java, and covers multiple levels of Java programming.
  • Java Language Basics Article – A comprehensive guide covering the basics of the Java programming language. Includes coding examples and background information for beginners.

Groovy

One of the most popular JVM compatible languages, Groovy features dynamic compilation of JVM bytecode. One of the primary reasons for Groovy’s popularity is its compatability and interoperation with Java code.

  • Groovy Homepage – The homepage of the dynamic, JVM functional language, Groovy. Features an extensive collection of guides for all levels of users and developers.
  • Groovy- First Contact – A review of the initial release of Groovy, documenting its features and performance. Covers some unique features related to the language, as well as critiques of the software.

JRuby

Jruby is a variation of the popular Ruby programming language, designed to function with the JVM. JRuby allows for two-way access and interoperability between Ruby and Java. Ruby on Rails is also supported by JRuby, further enhancing the languages capabilities.

  • JRuby Homepage – The homepage of the pure-Java scripting language JRuby. Includes overviews and guides for the software, as well as the official download source for the language.
  • Java Powered Ruby Implementation – A directory of tutorials and resources for learning how to fully utilize the JRuby language. Includes information on implementing the complex framework of Rails with JRuby.

Scala

Scala is a multi-paradigm programming language that utilizes both object-oriented and functional programming. Popular social networking sites such as Twitter and Foursquare utilize the Scala language. Additionally, this fast-growing, scalable language is utilized on Android smartphones.

  • Scala Homepage – The homepage for the general-purpose language, Scala.  Features coding examples, reference manuals and an updated news feed.
  • Scala and the Cloud – A brief examination of Scala and its relationship with cloud computing. Includes an overview of the Scala language and how it relates with JVM.

Fantom

Fantom is a general purpose, object-oriented programming language that combines both static and dynamic scripting. Similar to C#, Fantom features a simplistic design. One of the newer languages for the JVM, Fantom features a unique file system centered around the use of ‘pods’.

  • Fantom Homepage – The homepage of the object-orientated scripting language, Fantom. Details the potential uses and capabilities of the Fantom language, as well a guides covering its structure and framework.
  • Integration Watch: Fan of a new language – A review and analysis of the Fan programming language (now known as Fantom). Covers the unique features of Fan, such as its easy application to usage in mobile devices.

Jython (JPython)

Jython is a programming language that combines the languages of Python and Java. Originally developed to replace the use of C in Python with Java, Jython features a straight-forward syntax as well as the full abilities of object-oriented programming.

  • Jython Wiki – A wiki for the popular JVM compatible programming language, Jython. Includes information for users and developers of this Python affiliated language.
  • Jython Homepage – The homepage for Jython, the Python language for the Java platform. Features a selection of documents covering the functions and capabilities of Jython and the latest news on the language.

Additional Languages

  • Clojure – Clojure is a dynamic and general-purpose programming language designed for use with the JVM. This program manages to maintain its dynamic integrity while compiling directly to the bytecode of JVM, allowing for easy access to Java frameworks.
  • NetRexx – NetRexx is a variant of the Rexx programming language developed by IBM to function with the JVM. NetRexx is an object-oriented language that allows for a more streamlined manner of creating applications with the Java platform.
  • Rhino – Rhino is a programming language that allows for JavaScript to be utilized with the Java platform and the JVM. This language is created by Mozilla.
  • Aspect J – Aspect J is an aspect-oriented extension for the Java programming language. Using a java-like syntax this language is closely associated with the Eclipse software environment.

Advanced Tools

Beyond basic programming for web applications, the JVM can also be utilized for more advanced functions. The following are a selection of some of the more advanced capabilities possible with the use of JVM compatible languages.

  • Stack Trace – A tool that allows for inspection and analysis of a JVM’s running state. This tool allows for examination without the need to run JVM in debug mode.
  • Bytecode Visualizer – Java bytecode can be inspected, and debugged with this tool. Allows for detailed analysis of the efficiency and implementation of your own, and third party, bytecode.
  • M-JVM 1.03 (Mobile JVM Implementation) – A JVM implementation design for use in mobile devices that utilize J2ME or iTV. This application of JVM provides a framework for using fully controllable scripts that function off of pure Java class files.

*Image Source: http://www.emblibrary.com/