기존의 언어는 한 운영체제에 맞게 개발된 프로그램을 다른 종류의 운영체제에 적용하기 위해서 따로 노력이 필요했다. 하지만 자바는 자바가상머신(JVM)을 통해서 통신하고 자바가상머신이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다.
자바는 운영체제와 하드웨어와 관계없이 실행이 가능하기 때문에, "한번 작성하면, 어디서나 실행된다"(Write once, run anywhrere)라고 표현하기도 한다.
객체 지향 프로그래밍언어 중의 하나로 객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어이다.
자바로 작성된 프로그램은 가비지컬렉터(garbage collector)가 자동으로 메모리를 관리해주기 때문에 프로그래머는 메모리를 따로 관리 하지 않아도 된다.
네트워크 프로그래밍 라이브러리를 통해 네트워크관련 프로그램을 쉽게 개발할 수 있도록 지원한다.
자바에서 개발되는 멀티쓰레드 프로그램은 시스템과 관계없이 구현이 가능하고, 관련된 자바 라이브러리가 제공되므로 구현이 쉽다. 그리고 자바 인터프리터가 여러 쓰레드에 대한 스케쥴링을 담당한다.
프로그램이 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있다.
: 자바를 실행하기 위한 가상 기계이다.
자바 프로그램을 실행시키기 위해서는 반드시 JVM이 필요하다.