자바라는 언어에는 여러 특징이 있겠지만, 실질적으로 가장 큰 것은 "Write Once, Run Anywhere"이라는 자바의 슬로건에서 알 수 있듯이 플랫폼에 독립적이고, JVM만 설치되어 있다면 다양한 OS에서 동일한 코드 실행이 가능하다는 점이다.
비전공자 입장에서 처음 배우는 입장에서 전혀 매력적이지 않은 언어이다. 하지만, '매력'을 찾아보고 시작하자면 아래와 같은 3가지 포인트가 있다.
차차 이 Java 시리즈를 통해 자바의 매력에 대해 알아가는 시간을 가져보자.
컴퓨터의 명령어들의 집합
: 학술적으로 프로그램은 보조기억장치(HDD/SDD)에 저장된 실행파일을 의미한다. 즉, 아직 메모리(RAM)에 적재되지 않은 상태를 말함.
프로그래밍
: 컴퓨터에게 명령을 내리는 과정으로 인간의 논리(Logic)를 컴퓨터가 이해할 수 있는 명령(Instruction)으로 변환하는 번역 및 설계 과정임.
언어의 계층
: 컴퓨터 언어는 "인간에게 얼마나 가까운가(고수준), 하드웨어에 얼마나 가까운가(저수준)으로 구분함 이를 "추상화(Abstraction) 수준"이라고 함.
| 구분 | 예시 | 특징 |
|---|---|---|
| 고급언어 | Python, Java | 인간의 자연어와 논리에 가까움. 메모리 관리(GC) 자동화로 생산성 극대화. |
| 저급언어 | 기계어, 어셈블리어 | CPU 명령어와 1:1 대응. 하드웨어 제어 가능하나 생산성이 낮음. |
cf) 운영체제(Operating System, OS) 역시 프로그램의 한종류임.
: 컴퓨터는 모든 자료(숫자, 문자, 그림, 소리)를 가장 기초적인 단위인 비트(Bit, 0 또는 1)를 조합한 2진수 코드 형태로 저장하고 처리함.
비트(Binart Digit, Bit) : 0 또는 1의 값만 가질 수 있음 따라서, 2진수를 사용
바이트(Byte) : 8개의 비트로 구성된 정보단위로, 컴퓨터 메모리의 기본단위
10진수(SI 표준) 기반 단위
B ▶ KB ▶ MB ▶ GB ▶ TB ▶ PB ▶ EB ▶ ZB ▶ YB
2진수(IEC 표준) 기반 단위
KiB ▶ MiB ▶ GiB ▶ TiB ▶ PiB ▶ EiB ▶ ZiB ▶ YiB
JVM (Java Virtual Machine)
: 자바는 어떠한 운영체제에서도 돌아가게 하기 위한 자바 프로그램이 실행되는 환경
JRE (Java Runtime Environment)
: JVM + 표준 API 자바 프로그램을 실행하기 위한 환경을 제공
JDK (Java Development Kit)
: JRE + 개발에 필요한 도구 / 자바 애플리케이션을 개발하고 실행하기 위한 모든 도구를 제공

원시 프로그램 (.java): 프로그래머가 작성한 고수준 언어(High-Level Language) 코드로 사람의 논리로 작성
컴파일 (Compile): Java 컴파일러(javac)가 원시 코드를 바이트 코드(Bytecode)로 변환
자바 바이트 코드 (.class): 컴파일된 결과물인 .class 파일은 반(半)기계어 상태
cf) 이 코드는 CPU가 바로 이해할 수 있는 언어가 아닙니다. 오직 가상 머신(JVM)만이 이해할 수 있는 중간 언어
JVM (Java Virtual Machine) : 각 OS(Mac, Linux, Windows) 위에는 그 OS에 맞는 JVM이라는 소프트웨어가 설치되어있다면 JVM은 공통된 바이트 코드(.class)를 읽어들여, 현재 실행 중인 OS가 이해할 수 있는 기계어(Machine Code, 0과 1)로 실시간 번역하여 CPU에 전달
이를 통해 실질적으로 자바라는 프로그램이 어떻게 구동되는지 간단하게 알아보았다.