Rootable의 개발일기
자바언어의 특징 본문
📌 운영체제에 독립적이다.
JVM(Java Virtual Machine)은 OS에 맞게 재컴파일하므로, Java 프로그램은 OS에 독립적으로 실행할 수 있다.
Java application은 JVM 하고만 상호작용하므로 OS와 하드웨어에 독립적, JVM은 OS에 종속적 (해당 OS에서 실행가능한 JVM이 필요)
📌 객체지향언어
객체지향언어의 특징은 다음 글에 정리되어 있다.
https://dev-rootable.tistory.com/13
📌 자동 메모리 관리 (GC, Garbage Collection)
자바로 작성된 프로그램이 실행되면, GC가 자동적으로 메모리를 관리해 주기 때문에 프로그래머는 메모리를 따로 관리하지 않아도 된다.
Heap 메모리 영역에 생성된 객체들 중에 참조를 잃은 객체들을 탐색 후 제거하는 역할을 한다.
📌 네트워크 분산 처리 지원
📌 멀티 스레드 지원
자바에서 개발되는 멀티스레드 프로그램은 시스템과는 관계없이 구현 가능하며, 관련된 라이브러리(Java API)가 제공되므로 구현이 쉽다. 그리고 여러 스레드에 대한
스케줄링을 자바 인터프리터가 담당하게 된다.
📌 동적 로딩(Dynamic Loading) 지원
보통 자바로 작성된 애플리케이션은 여러 클래스로 구성되어 있는데, 자바는 동적 로딩을 지원하므로 필요할 때마다 해당 기능을 메모리에 올려 사용할 수 있다.
그 외에도 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 되며, 애플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는
유연한 애플리케이션을 작성할 수 있다.
동적 로딩처럼 필요할 때마다 로딩을 거치게 되면 프로그램 속도가 느려질 수 있다. 하지만 JIT 컴파일러와 Hotspot과 같은 기술의 도입으로 JVM의 기능이 향상됨에 따라 속도 문제가 상당히 개선되었다.
Reference:
'Java' 카테고리의 다른 글
try-with-resources (0) | 2023.09.13 |
---|---|
자바 리플렉션 API (0) | 2023.09.12 |
Java 컴파일 과정과 JVM (0) | 2023.09.09 |
객체 지향 프로그래밍(Object Oriented Programming) (0) | 2023.05.01 |
배열과 리스트 (0) | 2023.04.26 |