001) JAVA의 특징

1. 운영체제에 독립적이다.

Java로 작성된 애플리케이션은 JVM 위에서 작동되어 지기 때문에 컴파일러의해 번역된 코드는 플랫폼이 이해하는 코드로 번역되는 것이 아니고, JVM이 해석 가능하도록 번역된다. 그렇기 때문에 어떤 운영체제라도 JVM만 설치되면 자바로 작성된 애플리케이션은 실행이 가능한 독립적인 구조를 갖게 된다.

자바로 작성된 프로그램은 운영체제에 독립적이지만 JVM은 운영체제에 종속적이어서 여러 운영체제에 설치할 수 있는 서로 다른 버전의 JVM을 제공하고 있다.

2. 객체지향언어이다.

자바는 객제지향 프로그래밍 언어로, 객체지향의 특징인 상속, 캡슐화, 다형성이 잘 적용된 언어이다. 그래서 재사용성, 생산성이 높고 유지보수가 우수하다.

상속(Inheritance)

  • 객체를 정의할때 기존에 존재하는 객체의 속성과 기능을 제공받아 정의 하는 것

캡슐화

  • 하나의 클래스 안에 데이터와 기능을 담아 정의하고, 중요한 데이터나 복잡한 기능 등은 숨겨 외부에서 사용할때 필요한 기능만을 제공하는 것

다형성

  • 동일한 메서드를 어떤 객체에 의해서 사용 되냐에 따라 다르게 동작하는 것

3. 자동 메모리 관리(Garbage Collection)

자바로 작성된 프로그램이 실행되면, 가비지컬렉터(garbage collector)가 자동적으로 메모리를 관리해주기 때문에 프로그래머는 메모리를 따로 관리 하지 않아도 된다. 가비지컬렉터가 없다면 프로그래머가 사용하지 않는 메모리를 체크하고 반환하는 일을 수동적으로 처리해야 할 것이다. 자동으로 메모리를 관리한다는 것이 다소 비효율적인 면도 있지만, 프로그래머가 보다 프로그래밍에 집중할 수 있도록 도와준다.

4. 멀티쓰레드를 지원한다.

자바에서 개발된 멀티쓰레드 프로그램은 시스템과 관계없이 구현이 가능하며, 관련된 라이브러리(JAVA API)가 제공되므로 구현이 쉽다.

그리고 여러 쓰레드에 대한 스케줄링(Scheduling)을 자바 인터프리터가 담당하게 된다.

5. 동적 로딩(Dynamic Loading)을 지원한다.

자바로 작성된 애플리케이션은 여러 개의 클래스로 구성되어 있다. 자바는 동적 로딩을 지원하기 때문에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있다. 그 외에도 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일 하지 않아도 되며, 애플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 애플리케이션을 작성할 수 있다.