01. 자바란 무엇인가?

한강섭·2025년 1월 2일

프로그래밍 언어를 배울 때 첫 번째 예제로 다루는 Hello World를 출력하는 자바 프로그램을 만들어 보자. 자바는 다른 언어와 달리 ‘Hello World’ 프로그램만 제대로 공부하면 자바 언어의 절반 이상을 익히는 것과 다름없다고 한다. 왜냐하면 Hello World를 출력하는 프로그램을 작성하려면 JDK와 IDE를 설치하는 방법과 클래스, 함수, public, static의 개념을 이해하고 실행하는 방법까지 모두 알아야 하기 때문이다.
이렇게...

JRE란?
JRE(Java Runtime Environment)는 JDK보다 작은 개념으로, 자바가 실행될 수 있는 최소한의 파일들이 설치되어 있는 환경이라고 생각하면 된다. JRE에는 javac.exe와 같은 자바 파일을 컴파일하기 위한 도구는 포함되지 않는다.

javac는 java compiler의 줄임말이다. 즉, 자바 파일을 컴파일할 때 사용하는 것이 바로 javac.exe 파일이다. 컴파일이란 프로그래머가 작성한 코드를 컴퓨터가 이해할 수 있는 말(기계어)로 바꾸는 것인데, 모든 프로그래밍 언어에는 코드를 기계어로 번역하는 프로그램인 컴파일러 또는 그와 비슷한 기능을 하는 것들이 있다.

그럼 자바 파일은 무엇일까? 바로 우리가 작성해야 할 자바 프로그램을 말한다. 자바 프로그램은 확장자가 .java인 파일로 저장되는데, 이때 .java 파일을 자바 파일 또는 자바 소스라고 한다.
이 그림에서 컴파일러는 javac.exe에, 자바 가상 머신(Java Virtual Machine, JVM)은 java.exe에 해당한다.

C, C++ 등의 언어에서 만든 실행 파일은 JVM 같은 중간 단계를 거치지 않기 때문에 속도가 빠르다. 하지만 운영체제마다 실행 파일을 따로 작성해야 한다는 단점이 있다. 반대로 자바는 JVM이라는 중간 단계가 있으므로 C, C++ 등의 언어보다 속도가 느리다. 하지만 한 번 작성한 클래스 파일은 어떤 운영체제에서도 사용할 수 있다는 장점이 있다. 한 번 작성한 것을 여러 곳에 재활용하는 것이 자바의 가장 큰 특징이자 장점이라고 할 수 있다.

자바의 특성 8가지

간단하다 (Simple)
자바는 C++에 가깝지만 훨씬 간단하다. 자바는 고급 언어에 들어 있는 여러 요소 중에서 불필요하다고 판단되는 것을 모두 제거했다.

객체 지향적이다 (Object-oriented)
자바는 숫자(int, float, long 등)나 논릿값(true, false)을 제외하면 거의 모두 객체로 구성된다. 실제로 자바는 Object 클래스에서 모든 클래스를 파생한다.

인터프리터 언어이다 (Interpreted)
자바는 정확하게 말하면 컴파일 언어인 동시에 인터프리터 언어이다. 자바는 먼저 텍스트 소스를 컴파일하여 이진 파일(클래스 파일)로 만든 다음, 자바 런타임이 이 클래스 파일을 인터프리트 interpret 하면서 실행한다. 자바는 먼저 시스템과 무관한 이진 파일을 만듦으로써 컴파일 언어에 가까운 속도와 함께 시스템의 독립성을 얻을 수 있었다.

강력하다 (robust)
자바는 포인터 연산을 지원하지 않는다. 이는 잘못된 주소를 가리킬 가능성을 사전에 없앤 것이다. 자바는 모든 메모리 접근을 자바 시스템이 관리하고 제한하며, 또한 예외 처리까지 하므로 시스템이 붕괴될 우려가 없다. 예를 들어 자바는 리소스 관리(garbage collection)를 하는데 사용이 끝난 리소스를 시스템이 메모리에서 삭제하는 방식을 채택하고 있어 프로그래머가 메모리 유출을 걱정할 필요가 없다.

안전하다 (Secured)
자바는 프로그램을 작성할 때 자료형 타입에 매우 민감하다. 이것은 마치 코딩할 때 잔소리꾼이 끊임없이 따라다니며 잘못된 코드를 작성하지 않게 지적하는 것과 같다. 그래서 자바는 일단 컴파일만 되면 실행할 때 오류 발생률이 다른 언어에 비해 현저히 낮다. 파이썬과 같은 동적 언어에 익숙한 프로그래머라면 자바의 고지식한 면을 싫어할 수도 있다. 하지만 자바의 이런 족쇄 같은 자료형 체크는 코드를 매우 명확하게 만들어 준다.

플랫폼이 독립적이다 (Platform independent)
자바의 실행 파일은 이진 코드(클래스)이므로 자바 런타임을 설치한 시스템에서는 어디서나 실행할 수 있다. 즉, 자바로 작성한 프로그램이라면 운영체제와 상관없이 어디서든 실행할 수 있다는 뜻이다. 왜냐하면 자바 프로그램은 가상 머신으로 실행되기 때문이다. 처음에는 이 방식이 느리고 부담스러웠지만, 지금은 하드웨어의 눈부신 발전과 여러 기술이 개발되면서 이러한 단점은 대부분 사라져 버렸다.

멀티 스레드를 지원한다 (Multithreaded)
멀티 스레드를 지원하면 프로그램 단위가 같은 스레드를 동시에 수행할 수 있다. 자바는 멀티 프로세서 하드웨어를 지원하도록 설계되었으므로 멀티 CPU 시스템에서 효율이 높다.

동적이다 (Dynamic)
자바 인터페이스를 이용하면 모듈을 갱신할 때 다른 모듈까지 모두 갱신할 필요가 없다. 인터페이스가 인스턴스 변수와 도구의 실행문을 모두 배제한 채 객체 간의 상호 작용을 정의하기 때문이다.

profile
기록하고 공유하는 개발자

0개의 댓글