-
[Java] 자바의 특징Java 2021. 10. 29. 00:20
개요
자바 공부를 시작하고자 자바의 여러 특징에 대해 알아보며 자바를 이해하는 시간을 가져보려 합니다.
운영체제에 독립적
JVM(자바 가상 머신)을 활용하여 응용프로그램이 운영체제와 통신할 수 있도록 합니다.
하지만 JVM자체는 운영체제에 종속적이어서 설치는 운영체제에 따라 다른 버전의 JVM을 설치해야 합니다.
JVM이란?
Java Virtual Machine의 줄임말로 자바로 작성된 애플리케이션은 모두 JVM에서만 실행됩니다.
일반 애플리케이션은 바로 OS -> 하드웨어로 전달됩니다.
하지만 자바 애플리케이션은 JVM -> OS -> 하드웨어로 JVM을 추가적으로 거쳐야 합니다. [위 그림 참조]
속도가 느리다는 단점을 가지고 있지만 바이트코드(컴파일된 자바 코드)를 하드웨어의 기계어로 바로 변환해주는 JIT 컴파일러와 향상된 최적화 기술이 적용되어 속도 격차를 많이 줄어들었습니다.
JVM 덕분에 한 번 작성하면 어디서든 실행할 수 있게 됩니다.(Write Once, Run Anywhere)
*자바는 소스코드를 자바 컴파일러에 의해 바이트코드로 바꾼 후 인터프리터 과정을 거치기 때문에 다른 언어보다 느리다는 공격을 받음
JIT 컴파일러란?
just-in-time compilation의 줄임말로 인터프리터와 컴파일의 혼합방식으로 인터프리터 방식으로 기계어 코드를 생성하면서 그 코드를 캐싱하여, 같은 함수가 여러 번 불릴 때 매번 기계어 코드를 생성하는 것을 방지합니다.
객체지향 언어
상속, 캡슐화, 다형성, 추상화가 잘 적용된 객체지향 언어입니다.
자동 메모리 관리 자동 메모리 관리(Garbage Collection)
가비지 컬렉터가 자동적으로 메모리를 관리해주어서 프로그래머는 메모리를 따로 관리하지 않아도 됩니다.
C언어 같은 경우에는 개발자가 메모리를 할당하고 회수하는 작업을 수행하게 됩니다.
동적 로딩(Dynamic Loading)을 지원한다.
실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있습니다.
출처
https://ko.wikipedia.org/wiki/JIT_%EC%BB%B4%ED%8C%8C%EC%9D%BC
Java의 정석 3rd Edition(남궁성 지음)
'Java' 카테고리의 다른 글
[Java] 공식문서 보는 법 (0) 2021.11.07 [Java] 자바 컬렉션 프레임워크(Java Collections Framework) (0) 2021.11.07 [Java] Scanner 와 BufferedReader의 차이점 (0) 2021.11.05 [Java] equals 와 ==의 차이점 (0) 2021.11.03 [Java] 자바의 Hello World (0) 2021.10.29