Java Language Tutorial

The Java programming language is…

  • General-purpose: It is designed to be used for writing software in a wide variety of application domains, and lacks specialized features for any specific domain.

  • Class-based: Its object structure is defined in classes. Class instances always have those fields and methods specified in their class definitions (see Classes and Objects). This is in contrast to non-class-based languages such as JavaScript.

  • Statically-typed: the compiler checks at compile time that variable types are respected. For example, if a method expects an argument of type String, that argument must in fact be a string when the method is called.

  • Object-oriented: most things in a Java program are class instances, i.e. bundles of state (fields) and behavior (methods which operate on data and form the object’s interface to the outside world).

  • Portable: It can be compiled on any platform with javac and the resultant class files can run on any platform that has a JVM.

Java is intended to let application developers “write once, run anywhere” (WORA), meaning that compiled Java code can run on all platforms that support Java without the need for recompilation.

Java code is compiled to bytecode (the .class files) which in turn get interpreted by the Java Virtual Machine (JVM). In theory, bytecode created by one Java compiler should run the same way on any JVM, even on a different kind of computer. The JVM might (and in real-world programs will) choose to compile into native machine commands the parts of the bytecode that are executed often. This is called “Just-in-time (JIT) compilation”.

Java Editions and Versions

There are three “editions” of Java defined by Sun / Oracle:

  • Java Standard Edition (SE) is the edition that is designed for general use.
  • Java Enterprise Edition (EE) adds a range of facilities for building “enterprise grade” services in Java. Java EE is covered separately.
  • Java Micro Edition (ME) is based on a subset of Java SE and is intended for use on small devices with limited resources.

There is a separate topic on Java SE / EE / ME editions.

Each edition has multiple versions. The Java SE versions are listed below.

Installing Java

There is a separate topic on Installing Java (Standard Edition).

Compiling and running Java programs

There are separate topics on:

What’s next?

Here are links to subjects to continue learning and understanding the Java programming language. These subjects are the basics of the Java programming to get you started.


While Java does not have any support for testing in the standard library, there are 3rd-party libraries that are designed to support testing. The two most popular unit testing libraries are:


  • Design patterns for Java are covered in Design Patterns.
  • Programming for Android is covered in Android.
  • Java Enterprise Edition technologies are covered in Java EE.
  • The Oracle JavaFX technologies are covered in JavaFX.

1. In Versions section the end-of-life (free) date is when Oracle will stop posting further updates of Java SE to its public download sites. Customers who need continued access to critical bug fixes and security fixes as well as general maintenance for Java SE can get long term support through Oracle Java SE Support.