다양한 기종, 다양한 플랫폼에 종속되지 않는 언어를 만들기 위해 Java를 만들었다.
초기 Java 개발자들은 유닉스 기반(c,c++)의 지식을 가지고 있었다. Java 개발자들의 팀 리더는 제임스 고슬링이다.
Java 개발자들은 c/c++스타일의 언어와 가상 머신을 구현하는 것이었다. 즉 c/c++의 장점을 도입하고 단점은 보완한 언어로 개발되었고, 오크(Oak)라는 언어가 그 시초다.
오크라는 이름은 제임스 고슬링이 사무실 밖에 있던 오크 나무를 따다 오크라고 지었다.
원래 Oak는 소형기기에 사용될 목적으로 만들었다.
하지만 1990년도에 인터넷이 등장했고 운영체제에 독립적인 Oak는 이러한 환경에서 적합한 언어였다.
이에 개발 방향을 바꾸어 탄생한 것이 Java다.
Applet은 정적인 웹페이지에 멀티미디어적인 요소들을 제공할 수 있는 유일한 방법이었기 때문에 많은 인기과 유저를 가질 수 있었다.
그러나 보안상 이유로 Applet에 대한 최신 웹브라우저의 지원이 사라졌고, Servlet, JSP와 같은 서버 프로그래밍 분야에서 많이 사용되고 있다.
WORA - Write Once Run Anywhere
즉 이들의 목표는 한 번 쓰고 어느 곳에도 실행하는 것이다.
그것이 'WORA'다. Java는 WORA와 같은 철학을 가지고 있다.
c++은 타겟 플랫폼에 종속적이다.
즉 윈도우 환경에서 컴파일한 경우 윈도우에서만 프로그램이 실행된다.
윈도우에서 작성한 코드를 크로스 플랫폼을 통해 다른 플랫폼에서 작동하게 할 수는 있다.
그치만 근본적인 해결법은 아닌것 같다.
c++의 단점을 보완하고, 플랫폼에 독립적인 환경을 만들기위해 Java와 JVM이 나오게되었다.
자바를 실행하기 위한 가상 컴퓨터이다.
Java는 OS에 종속적이지 않다는 특징을 가지고 있다.
Linux에서 컴파일한 바이트코드를 Windows 환경에서 실행시킬 수 있다.