
썬 마이크로시스템즈에서 1995년에 개발한 객체 지향 프로그래밍 언어.
창시자는 제임스 고슬링이다. 2010년에 오라클이 썬 마이크로시스템즈를 인수하면서 Java의 저작권을 소유하였다.
현재는 OpenJDK는 GPL2이나 오라클이 배포하는 Oracle JDK는 상업라이선스로 2019년 1월부터 유료화정책을 강화하고 있다.
Java EE는 이클립스 재단의 소유이다.
Java 언어는 J2SE 1.4부터는 Java Community Process (JCP)에서 개발을 주도하고 있다.
Java의 가장 큰 특징은 플랫폼에 독립적인 언어이다.
소스 코드를 기계어로 직접 컴파일하여 링크한 C / C++ 의 컴파일러와 달리 자바 컴파일러는 바이트코드인 클래스 파일 (.class) 을 생성하고, 이 파일의 바이트코드를 읽은 뒤 기계어로 바꾸어 실행하는 것은 자바 가상 머신이다.
객체지향 프로그래밍 (OOP, Object Oriented Programming)이란 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결하여 전체 프로그램을 완성하는것을 말한다.
자바는 컴파일 언어인 동시에 인터프리터 언어이다.
자바는 텍스트 소스를 컴파일하여 클래스파일로 만든 다음 자바 런타임이 클래스 파일을 인터프리트 하면서 실행한다.
어떠한 운영체제라도 독립적으로 자바언어를 사용할 수 있다.
자바 가상 머신 (Java Virtual Machine)에 의해서 실행되기 때문이다.
자바는 가비지 컬렉션 (Garbage Collection)이라는 메모리 관리 시스템을 사용한다.
개발자가 수동으로 메모리를 할당하고 해제할 필요 없이, JVM이 사용되지 않는 객체를 자동으로 정리한다.
자바는 멀티 쓰레딩 (Multithreading)을 지원하여 여러 스레드를 사용한 병렬 처리를 쉽게 구현한다.
스레드 관리를 위한 다양한 API와 동기화 메커니즘을 제공한다.
자바는 런타임 시에 클래스를 동적으로 로드하고, 새로운 객체를 생성한다.
프로그램이 실행 중에 필요로 하는 클래스를 로드할 수 있어 좀 더 유연한 애플리케이션 개발이 가능하다.
자바는 엄청나고 다양한 라이브러리가 있다.
데이터 구조, 수학 연산, 네트워킹, 파일 입출력 등 다양한 클래스와 인터페이스를 제공한다.