1995년도에 처음 썬 마이크로시스템즈(Sun Microsystems)에서 자바(Java)언어를 발표한 후, 지금까지 자바는 성공한 프로그래밍 언어로서 전세계적으로 다양한 분야에서 사용되고 있습니다.
자바는 1991년에 썬의 엔지니어들에 의해서 고안된 오크(Oak)라는 언어에서부터 시작되었습니다. 오크는 처음에는 가전제품에서 사용될 목적이었으나, 인터넷의 등장과 함께 인터넷에서 실행되는 프로그래밍 언어로 사용되었고, 이름도 자바로 변경되었습니다.
1. 이식성이 높은 언어이다.
자바 언어로 개발된 프로그램은 소스 파일을 다시 수정하지 않아도, 자바 실행 환경(JRE:Java Runtime Environment)이 설치되어 있는 모든 운영체제에서 실행이 가능합니다.
따라서 자바 언어는 이식성이 높은 프로그래밍 언어라고 볼 수 있습니다.
2. 객체 지향 언어이다.
자바는 100% 객체 지향 언어입니다. 객체를 만들기 위해 설계도인 클래스를 작성해야 하고, 객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어 냅니다. 자바는 아무리 작은 프로그램이라도 객체를 만들어 사용합니다.
3. 함수적 스타일 코딩을 지원한다.
자바는 함수적 프로그래밍을 위해 람다식(Lambda Expressions)을 자바8부터 지원합니다. 람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고, 코드가 매우 간결해집니다.
4. 메모리를 자동으로 관리한다.
객체 생성 시 자동적으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 쓰레기 수집기(GC; Garbage Collector)를 실행시켜 자동적으로 사용하지 않는 객체를 제거시켜줍니다. 따라서 개발자는 메모리 관리의 수고스러움을 덜고, 핵심 기능 코드 작성에 집중할 수 있습니다.
5. 다양한 애플리케이션을 개발할 수 있다.
자바는 윈도우, 리눅스, 유닉스, 맥 등 다양한 운영체제(OS; Operating System)에서 실행되는 프로그램을 개발할 수 있습니다. 자바는 다양한 운영체제에서 사용할 수 있는 개발 도구와 API를 묶어 에디션 형태로 정의하고 있습니다.
- Java SE (Standard Edition) - 기본 에디션
Java SE는 자바 프로그램들이 공통적으로 사용하는 자바 가상 기계(JVM; Java Virtual Machine)을 비롯해서 자바 프로그램 개발에 필수적인 도구와 라이브러리 API를 정의합니다. 클라이언트와 서버 프로그램에 상관없이 자바 프로그램을 개발하고 실행하기 위해서는 반드시 Java SE 구현체인 자바 개발 키트(JDK; Java Development Kit)를 설치해야 합니다.
- Java EE(Enterprise Edition) - 서버용 애플리케이션 개발
Java EE는 분산환경에서 서버용 애플리케이션을 개발하기 위한 도구 및 라이브러리 API를 정의합니다. 서버용 애플리케이션으로는 Servlet/JSP를 이용한 EJB(Enterprise Java Bean) 그리고 XML 웹 서비스 등이 있습니다.
6. 멀티 스레드(Multi-Thread)를 쉽게 구현할 수 있다.
하나의 프로그램이 동시에 여러가지 작업을 처리해야 할 경우와 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬 처리하려면 멀티 스레드 프로그래밍이 필요합니다.
자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하고 있기 때문에 실행되는 운영체제에 상관없이 멀티 스레드를 쉽게 구현할 수 있습니다.
7. 동적 로딩(Dynamic Loading)을 지원한다.
애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적 로딩해서 객체를 생성합니다.
따라서 유지보수를 쉽고 빠르게 진행할 수 있습니다.
8. 막강한 오픈소스 라이브러리가 풍부하다.
자바는 오픈소스(Open Source)언어이기 때문에 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스가 넘쳐납니다. 검증된 오픈소스 라이브러리를 사용하면 개발 기간을 단축하면서 안전성이 높은 애플리케이션을 쉽게 개발할 수 있습니다.
운영체제는 자바 프로그램을 바로 실행할 수 없는데, 그 이유는 자바 프로그램은 오나전한 기계어가 아닌, 중간 단계의 바이트 코드이기 때문에 이것을 해석하고 실행할 수 있는 가상의 운영체제가 필요합니다. 이것이 자바 가상 기계(JVM; Java Virtual Machine)입니다.
JVM은 실 운영체제를 대신해서 자바 프로그램을 실행하는 가상 운영체제 역할을 합니다. JVM은 JDK 또는 JRE를 설치하면 자동으로 설치되는데, JDK와 JRE가 운영체제 별로 제공됩니다.
자바는 한 번의 컴파일링으로 실행 가능한 기계어가 만들어지지 않고 JVM에 의해 기계어로 번역되고 실행되기 때문에, C와 C++의 컴파일 단계엣 만들어지는 완전한 기계어보다는 속도가 느리다는 단점을 가지고 있습니다. 그러나 기계어로 빠르게 변환해주는 JVM 내부의 최적화된 JIT 컴파일러를 통해서 속도의 격차는 많이 줄어들고 있습니다.
자바 프로그램을 개발하기 위해서는 먼저 Java SE의 구현체인 JDK를 설치해야 합니다. Java SE의 구현체는 자바 개발 키트(JDK; Java Development Kit)와 자바 실행환경(JRE; Java Runtime Environment)이라는 두 가지 버전이 있습니다.
JDK는 프로그램 개발에 필요한 자바 가상 기계(JVM), 라이브러리 API, 컴파일러 등의 개발 도구가 포함되어 있고, JRE에는 프로그램 실행에 필요한 자바 가상 기계(JVM), 라이브러리 API만 포함되어 있습니다.
자바 프로그램을 개발하고자 하는 것이 아니고, 이미 개발된 프로그램만 실행한다면 JRE만 설치하면 됩니다.
JDK 내부에도 JRE가 있기 때문에 자바 프로그램을 개발하고 실행할 수 있으나 웹 브라우저에서 실행하는 애플릿(Applet)은 JRE를 요구하기 때문에 애플릿을 개발한다면 JRE도 필요합니다.