본문 바로가기
JAVA

[JAVA] - 자바 이해 / JVM이란?

by nam_ji 2024. 1. 3.

자바 이해 / JVM이란? / 변수와 상수 / 

자바의 이해

  • A 언어
    • 첫 개발언어라는 의미에서 A Programming Language의 약자입니ㅏㄷ.
    • 발표년대 : 1960
    • 핵심기능 : 입/출력, 문맥
    • 프로그램을 만들기위해 기본적으로 필요한 기능 입/출력, 문맥 기능만 구현가능한 언어
  • B 언어
    • Bell 사에서 개발해서 B언어
    • 발표년대 : 1960
    • 핵심기능 : A언어 기능 + 기계식 데이터 타입, 연산기능, 메소드
    • A언어 기능에 데이터를 담을 수 있는 타입이 생기고, 데이터를 연산하고 묶어서 관리할 수 있는 메서드 구현이 가능한 언어
  • C 언어
    • B 언어에 비해 더 좋은 언어라는 의미로 알파벳 B 다음인 알파벳 C를 따서 C언어
    • 발표년대 : 1970
    • 핵심기능 : B언어 기능 + 자료형 데이터 타입, 자료구조
    • B언어 기능에 다양한 데이터 타입을 정의하고 자료구조에 담을 수 있는 언어
  • 자바 언어
    • 어디서나 마시는 커피처럼 어디서나 동작 가능한, 자바 커피에서 이름을 따서 만든 Java 언어
    • 발표년대 : 1990’
    • 핵심기능 : C언어 기능 + 공통 실행환경, 클래스, 객체
    • C언어 기능에 여러 기기에서 실행가능하도록 도와주는 공통 실행환경, 그리고 데이터와 메서드를 담는 클래스를 통해 객체를 만들 수 있는 언어
  • Java 는 A언어의 기능 + B언어의 기능 + C언어의 기능에 JAVA언어의 기능을 추가한 언어 입니다.
    • 기능은 포함하지만, 각 언어별로 기능을 구현한 방법은 각기 다릅니다.

JVM이란?

1. JVM 개념

  • JVM (Java Virtual Machine)의 약자로 자바 가상 머신이라는 뜻을 가지고 있습니다.
  • 가상 머신이란 가상의 기기를 만들어주는 것을 의미합니다.
  • 다시 말해서, 여러가지의 기기 위헤서 Java 프로그램을 실행시킬 수 있는 가상의 기기를 만들어주는 것을 의미합니다.

2. JVM 구성

  1. 바이트 코드
    • 자바 프로그램 변환코드
    • 내가 작성한 코드가 운영체제가 읽을 수 있는 코드(바이트 코드)로 자바 컴파일러가 변환한 코드
      • 자바 컴파일러란
        내가 작성한 자바코드(.java파일)를 운영체제가 읽을 수 있는 바이트코드(.class파일)로 변환하는 변환기
  2. 인터프리터
    • Java.class 코드 해석기
      • 운영체제가 읽은 바이트코드를 기기가 실행할 수  있는 기계어로 번역해줍니다.
  3. JIT 컴파일러
    • 빠른 Java.class 코드 해석기
      • 인터프리터의 효율을 높여주는 서포터 해석기
  4. 메모리 영역
    • Java 데이터를 저장하는 영역
      • 운영체제로부터 JVM이 할당받은 메모리 영역
  5. 클래스로더
    • Java.class 바이트 코드를 메모리 영역에 담는 운반기
      • JVM으로 class(바이트 코드)를 불러와서 메모리에 저장합니다.
  6. 가비지 컬렉터
    • Java 쓰레기 청소기
      • 메모리 영역에서 안쓰는 데이터를 주기적으로 흡수해가는 청소기

3. Java 환경 설정

  1. JRE
    • JRE (Java Runtime Environment) 즉, 자바 실행 환경이라는 뜻을 가지고 있스비낟.
    • 하지만 JRE(JVM)만 있다면 Java 프로그램을 실행만 시킬 수 있습니다.
    • JRE는 .class 파일만 실행 가능합니다.
      • JDK가 Javac 명령을 통해 .Java파일을 실행 가능한 .class 파일로 변환해 줍니다.
  2. JDK
    • JDK (Java Development Kit) 즉, 자바 개발 키트라는 뜻을 가지고 있습니다.
    • JDK는 JRE(JVM)의 기능을 포함하고 있습니다.
    • JDK는 .java 파일들을 .class 파일들로 변환해주는 Java Compiler(Javac) 기능이 있습니다.
    • JDK는 코드를 디버깅하는 jdb 등의 기능이 있습니다.
      • de + bug : 벌레를 없앤다. 즉, 코드를 면밀히 살피면 안 좋은 코드를 없애는 기능을 의미합니다.
      • JDK 디버깅 기능
        • JDK의 Jdb 기능을 통해서 실행중인 프로그램의 코드 실행을 따라다니며 볼 수 있습니다.
        • java 프로그램을 실행한다는 것은 곧 Java 코드를 한줄씩 실행하면서 명령을 수행하는 것을 의미합니다.
        • 우리가 개발한 코드들을 한줄씩 객체와 메소드를 수행하면서 변수들도 변하는 과정을 우리가 볼 수 있도록 JDK(자바 개발 키트)는 코드를 따라가면서 변수를 볼 수 있는 디버깅 기능을 제공합니다.
        • 내가 작성한 코드 라인에 중단점을 설정하고 디버그 모드로 프로그램을 실행하면, 프로그램이 중단점의 코드라인을 수행할 때 프로그램 흐름이 일시정지 되며 변수들을 볼 수 있게 도와줍니다.
        • 디버깅 = 중단점 일시정지 + 코드 라인단위 수행

'JAVA' 카테고리의 다른 글

[JAVA] - 자바 2차원 배열  (0) 2024.01.06
[JAVA] - 자바 기초  (0) 2024.01.03
[JAVA] - 문자열 한 글자씩 분리하는 방법  (1) 2023.12.04
[JAVA] - 문자열 치환 메소드  (0) 2023.12.04
[JAVA] - 변수 타입 확인 방법  (0) 2023.12.04