JAVA의 특징
객체 지향 프로그래밍(Object Oriented Programming, OOP) - 객체를 먼저 만들어 전체 프로그램 완성객체 지향 프로그래밍의 주요 특징
- 캡슐화 (Encapsulation) (정보은닉)
- 변수나 메소드는 클래스 내에 구현
- 높은 응집도와 낮은 결합도 유지 - 요구사항 변경 시 유연하게 대처 가능
- 상속
- 자식 클래스가 부모 클래스의 특성과 기능 물려받음
- 기능의 일부분 변경 가능
- 캡슐화 유지, 클래스 재사용 용의
- 추상화
- 인터페이스로 클래스들의 공통적인 특성(변수, 메소드) 들을 묶어 표현
- 다형성
- 서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작 (상황에 따라 다른 동작, 다른 결과)
- 오버로딩: 하나의 클래스에서 메소드 이름이 같지만, parameter 다름
- 오버라이딩: 부모 클래스의 메소드를 자식 클래스의 용도에 맞게 재정의
높은 이식성
플랫폼에 종속되지 않는 독립적인 바이트 코드로 컴파일되며 JVM만 있으면 실행이 가능하기 때문에 자바 실행 환경(FRE)가 설치되어 있는 모든 운영체제에서 실행 가능 (운영체제에 독립적)
메모리 자동 관리
개발자가 직접 메모리에 접근할 수 없으며 자바가 직접 메모리 관리
JVM을 통해 객체를 생성할 때 자동적으로 메모리 영역을 찾아서 할당하고 프로그램 내에 사용되지 않는 메모리(Garbage)는 Garbage Collection 기능을 통해 자동으로 회수
멀티 스레드
하나의 자바 프로그램이 다수의 작업을 처리할 수 있도록 운영체제의 도움 없이 자체적으로 멀티스레드와 관련된 API나 라이브러리 제공
동적 로딩 (Dynamic Loading)
애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 각 객체가 필요한 시점에서 클래스를 동적 로딩해서 생성
유지보수 측면에서 해당 클래스만 수정하면 되기 때문에 전체 애플리케이션을 다시 컴파일 할 필요가 없어서 유지보수가 쉽고 빠름
오픈 소스 라이브러리 풍부
개발 시간을 단축하여 안정성 높은 애플리케이션 개발 가능