자바의 특징
1. 플랫폼에 독립적이다.
2. JVM이 메모리 관리한다.
3. 객체지향 언어이다.
객체 지향 언어
프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법을 객체 지향 프로그래밍 (OOP : Object Oriented Programming) 이라고 한다.
객체를 만들기 위해 설계도인 클래스를 작성해야 하고, 객체와 객체를 연결하여 목적에 맞는 프로그램을 만든다. 객체 지향 언어가 가져야 할 캡슐화, 상속, 다형성기능을 완벽하게 지원하고 있다.
메모리를 자동으로 관리
C++은 메모리에 생성된 객체를 제거하기 위해 개발자가 직접 코드를 작성해야 한다.
자바는 개발자가 직접 메모리에 접근 할 수 없도록 설계되어있으며, 메모리는 자바가 직접 관리한다.
객체생성시 자동적으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 쓰레기 수집기를 실행시켜
자동적으로 사용하지 않는 객체를 제거시켜준다.
따라서 개발자는 메모리 관리의 수고스러움을 덜고, 핵심기능코드작성에 집중 할 수 있다.
자바 플랫폼 ( 자바 어플리케이션이 실행될 수 있는 환경 JVM + API )
JAVA SE : UI어플리케이션, Network 어플리케이션이 실행 될 수 있는 환경
자바 프로그램들이 공통적으로 사용하는 자바 가상기계(JVM)를 비롯해서 자바 프로그램 개발에 필수적인 도구와 라이브러리 API를 정의한다. 클라이언트와 서버 프로그램에 상관없이 자바 프로그램을 개발하고 실행하기 위해서는 반드스 Java SE 구현체인 자바 개발키트 (JDK) 를 설치해야한다.
JAVA EE: Web어플리케이션, EJB어플리케이션.
분산환경에서 서버용 애플리케이션을 개발하기 위한 도구 및 라이브러리 API를 정의 한다. 서버용 애플리케이션으로는 Servlet/JSP 를 이용한 웹 애플리케이션, 분산처리 컴포넌트인 EJB 그리고 XML 웹사이트 등이 있다.
자바 가상기계 JVM
운영체제는 자바 프로그램을 바로 실행 할 수 없는데, 그 이유는 자바 프로그램은 완전한 기계어가 아닌, 중간 단계의 바이트 코드이기 때문에 이것을 해석하고 실행할 수 있는 가상의 운영체제가 필요하다.
운영체제별로 프로그램을 실행하고 관리하는 방법이 다르기 떄문에 운영체제별로 자바 프로그램을 별도로 개발 하는 것보다는 운영체제와 자바 프로그램을 중계하는 JVM을 두어 자바 프로그램이 여러 운영체제에서 동일한 실행결과가 나오도록 설계한 것이다.
바이트 코드는 모든 JVM에서 동일한 실행결과를 보장하지만, JVM은 운영체제에 종속적이다.
자바 프로그램을 운영체제가 이해하는 기계어로 번역해서 실행해야 하므로 JVM은 운영체제가 맞게 설치되어야한다.
JVM은 JDK 또는 JRE를 설치하면 자동으로 설치되는데 , JDK와 JRE가 운영체제 별로 제공한다.