Java Virtual Machine의 줄임말.
자바를 실행하기 위한 가상 기계라고 할 수 있다.
Java는 OS에 종속적이지 않은 특징을 가지고 있다.
OS에 종속받지 않고 실행되기 위해선 OS위에서 Java를 실행시킬 무언가가 필요하다.
JVM이 번역기 역할을 하여 다양한 운영체제에서 Java가 독립적으로 사용될 수 있게 한다.
그래서 개발자가 윈도우 10 운영체제에서 자바로 프로그램을 개발한다면
개발 미완료된 프로그램도 맥, 리눅스 등 다른 운영체제에 옮겨 실행이 가능하다.
자바 컴파일 과정
Something.java > [Compiler] > Something.class > JavaVM > Something 실행
처음 우리는 Java 소스코드로 개발한다. 이 파일들의 확장자는 (*.java) 이렇게 되어있다.
하지만 JVM은 (*.class) 형태의 확장자만 인식할 수 있다. (이것을 Java bytecode라고 한다.)
그래서 자바 컴파일러가(Javac.exe>(우리가 JDK를 설치했을때 bin에 있던 것))
.java파일을 >.class라는 Java bytecode로 변환한다.
컴파일된 bytecode는 OS에 도달하고 프로그램이 실행된다.
+ 바이트코드란 무엇인가?
가상 컴퓨터(VM)에서 돌아가는 실행 프로그램을 위한 이진 표현법
자바 바이트 코드는 JVM이 이해할 수 있는 언어로 변환된 자바 소스코드를 의미한다.
자바 컴파일러에 의해 변환된 코드의 명령어 크기가 1바이트라서 자바 바이트 코드라고 불린다.
자바의 특징
1. 여러 운영체제에서 실행 가능
2.객체지향 프로그램 언어
- 객체지향이란 프로그램을 잘게 나누어 부품화 한 뒤 조립하는 형식으로 개발하는 방법(클래스와 객체 개념 등장)
3. 가비지 컬렉션, 메모리(RAM) 자동 정리
- 사용하지 않는 메모리를 자동 처리하는 개념> 개발에 집중할 수 있음.
4. 뛰어난 보안성, 멀티 쓰레드를 지원함.
C와 JAVA의 차이점
C | JAVA |
절차지향 | 객체지향 |
유지보수/디버깅 어려움 | 유지보수/디버깅이 쉬움 |
실행/처리속도 빠름 | 상대적으로 처리 속도가 느림 |
프로그램 데이터 처리 방법인 알고리즘 중요시 | 알고리즘<프로그램이 사용하고 있는 데이터 중심 |
*절차지향 : 물이 흐르듯 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그램 기법
*객체지향은 프로그램을 잘게 나누어 부품화 한 뒤 조립하는 형식으로 개발하는 방법
참고블로그
'면접준비' 카테고리의 다른 글
CSRF 공격이란? (0) | 2022.12.07 |
---|---|
쓰레드(Thread)란? (0) | 2022.12.07 |
통신 프로토콜이란? (0) | 2022.12.06 |
스프링은 어떻게 동작할까? (0) | 2022.12.06 |
프레임워크는 왜 쓸까? (0) | 2022.12.06 |