본문 바로가기
면접준비

JVM이란? + 자바의 특징

by 소금_msg 2022. 12. 6.

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
절차지향 객체지향
유지보수/디버깅 어려움 유지보수/디버깅이 쉬움
실행/처리속도 빠름 상대적으로 처리 속도가 느림
프로그램 데이터 처리 방법인 알고리즘 중요시 알고리즘<프로그램이 사용하고 있는 데이터 중심

 

*절차지향 : 물이 흐르듯 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그램 기법

*객체지향은 프로그램을 잘게 나누어 부품화 한 뒤 조립하는 형식으로 개발하는 방법

 


 

참고블로그

https://hongong.hanbit.co.kr/c%EC%96%B8%EC%96%B4-java-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EC%A0%95%EB%A6%AC%ED%91%9C/

 

C언어와 Java의 차이점을 표 한 장으로 정리하겠습니다.

C언어는 순차적으로 읽어 나가는 절차 지향 언어이며, java는 설계적인 측면이 강조된 객체 지향 언어 입니다. C언어는 임베디드 또는 운영체제처럼 속도나 용량 등에서 최적화가 필요한 곳에 쓰

hongong.hanbit.co.kr

https://doozi0316.tistory.com/entry/1%EC%A3%BC%EC%B0%A8-JVM%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%9E%90%EB%B0%94-%EC%BD%94%EB%93%9C%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%8B%A4%ED%96%89%ED%95%98%EB%8A%94-%EA%B2%83%EC%9D%B8%EA%B0%80

 

[JAVA] JVM이란? 개념 및 구조 (JDK, JRE, JIT, 가비지 콜렉터...)

JVM이란 무엇인가 Java Virtual Machine의 줄임말. 직역하면 '자바를 실행하기 위한 가상 기계(컴퓨터)'라고 할 수 있다. Java 는 OS에 종속적이지 않다는 특징을 가지고 있다. OS에 종속받지 않고 실행되

doozi0316.tistory.com

 

 

'면접준비' 카테고리의 다른 글

CSRF 공격이란?  (0) 2022.12.07
쓰레드(Thread)란?  (0) 2022.12.07
통신 프로토콜이란?  (0) 2022.12.06
스프링은 어떻게 동작할까?  (0) 2022.12.06
프레임워크는 왜 쓸까?  (0) 2022.12.06