IT

자바의 특징 3가지 – 자바의 핵심 개념

굿센스굿 2025. 4. 15. 17:20
반응형

 

 

자바(Java), 왜 여전히 뜨거운가?

IT 업계에서 프로그래밍 언어는 끊임없이 변화하고 있습니다. 매년 새로운 언어가 등장하고 트렌드가 바뀌지만, 자바(Java)는 20년이 넘는 시간 동안 탄탄하게 그 자리를 지키고 있는 대표적인 언어입니다.

자바가 이토록 오랜 시간 동안 사랑받는 이유는 무엇일까요?
그 중심에는 바로 자바가 지닌 3가지 핵심 특징이 있습니다. 이번 글에서는 이 중 첫 번째 시리즈로, 자바의 가장 중요한 3가지 특징을 살펴봅니다.


1. 플랫폼 독립성(Platform Independence)

✅ "한 번 작성하면 어디서나 실행된다" – WORA의 위력

자바의 가장 큰 장점은 바로 플랫폼 독립성입니다.
이는 자바 프로그램을 한 번 작성하면 운영체제에 관계없이 실행할 수 있다는 의미입니다.

✅ 운영체제란 무엇인가요?

운영체제란 컴퓨터 시스템을 움직이게 하는 가장 기본적인 소프트웨어입니다.
우리가 자주 접하는 운영체제에는 다음과 같은 것들이 있습니다:

  • Windows (윈도우)
  • macOS (맥)
  • Linux (리눅스)

보통 다른 언어(C, C++ 등)로 작성된 프로그램은 특정 운영체제에 맞춰 개발되기 때문에, 다른 운영체제에서 사용하려면 수정이 필요합니다. 예를 들어, 윈도우에서 만든 프로그램을 맥에서 실행하려면 그에 맞게 코드를 바꿔야 하죠.

✅ 자바는 어떻게 다를까?

자바는 중간에 **JVM(Java Virtual Machine, 자바 가상 머신)**이라는 계층이 존재합니다.
이 JVM은 각 운영체제마다 별도로 존재하지만, 자바 프로그램은 이 JVM 위에서 실행되기 때문에 운영체제의 차이를 무시하고 동일한 방식으로 실행됩니다.

📌 예시로 살펴보는 실행 구조:

C 언어 기반 프로그램:

[프로그램] → [운영체제] → [하드웨어]

자바 프로그램:

[자바 프로그램] → [JVM] → [운영체제] → [하드웨어]

이처럼 JVM이 일종의 번역기 역할을 해주기 때문에, 자바 프로그램은 작성한 그대로 어느 운영체제에서든 동일하게 동작할 수 있습니다.

✅ JVM만 설치하면 끝!

운영체제마다 아래와 같이 JVM이 제공됩니다.

  • Windows용 JVM
  • macOS용 JVM
  • Linux용 JVM

한 번 JVM을 설치해 두면, 그 이후로는 자바로 개발된 어떤 프로그램이라도 수정 없이 실행 가능합니다.

이러한 특징을 자바는 “WORA (Write Once, Run Anywhere)”라는 슬로건으로 표현합니다.
이 슬로건은 자바의 상징과도 같은 개념이며, 수많은 기업들이 자바를 선택한 가장 큰 이유 중 하나입니다.


2. 객체지향 언어(Object-Oriented Programming, OOP)

✅ 실생활을 그대로 담아낸 프로그래밍 방식

자바는 객체지향 프로그래밍(Object-Oriented Programming, OOP) 언어입니다.
이 개념은 처음에는 다소 추상적으로 느껴질 수 있지만, 사실 우리의 일상과 매우 닮아 있습니다.

✅ 절차지향 vs 객체지향

  • 절차지향 언어(C 등): 위에서부터 아래로, 순차적으로 명령을 실행합니다.
  • 객체지향 언어(자바 등): 현실의 사물(객체)을 모방하여 각 객체가 자신의 역할을 수행하며 상호작용합니다.

✅ 실생활 예시: 음식점에서의 객체들

한 번 음식점에 간 상황을 떠올려 봅시다.

  • 고객(여러분): 주문을 합니다.
  • 점원: 주문을 받고, 주방에 전달합니다.
  • 요리사: 주문받은 음식을 만듭니다.
  • 음식: 완성되어 고객에게 전달됩니다.

이 시나리오 속 모든 참여자는 하나의 객체입니다. 이들은 각자의 역할을 수행하며 상호작용하여 하나의 작업을 완성하죠.

✅ 객체지향 코드로는 어떻게 구현될까?

class Customer {
    void order(Food food, Waiter waiter) {
        waiter.takeOrder(food);
    }
}

class Waiter {
    void takeOrder(Food food) {
        new Chef().cook(food);
    }
}

class Chef {
    void cook(Food food) {
        System.out.println(food.name + " 조리 중...");
    }
}

class Food {
    String name;
    Food(String name) {
        this.name = name;
    }
}

위 코드는 간단한 음식 주문 과정을 객체지향적으로 표현한 예시입니다.

✅ 왜 객체지향이 좋은가?

  • 현실 세계를 코드로 쉽게 모델링할 수 있습니다.
  • 유지보수와 확장이 용이합니다.
  • 프로그램의 구성 요소를 분리해서 재사용성이 높아집니다.

자바는 객체지향의 철학을 잘 따르는 언어로, 다양한 프레임워크(Spring, Hibernate 등)에서도 이 패러다임이 핵심으로 작동합니다.


3. 자동 메모리 관리(Garbage Collection)

✅ 메모리 관리란?

컴퓨터 프로그램이 실행될 때에는 데이터가 저장될 공간, 즉 **메모리(RAM)**가 필요합니다.
이 공간을 잘 활용하고, 사용이 끝난 데이터는 정리해주는 과정을 메모리 관리라고 합니다.

✅ C, C++에서는 수동으로 해야 한다?

C나 C++과 같은 언어는 개발자가 직접 메모리를 할당하고 해제해야 합니다.

int* p = malloc(sizeof(int)); // 메모리 할당
...
free(p); // 메모리 해제

만약 free()를 깜빡하면?
메모리 누수 발생!
→ 프로그램이 느려지거나 충돌할 수 있습니다.

✅ 자바는 자동으로 정리해준다!

자바에서는 이런 수고가 없습니다.
**Garbage Collector(가비지 컬렉터)**라는 기능이 자동으로 사용이 끝난 메모리를 탐지하고 정리해 줍니다.

String name = "Uni";
name = null; // 사용하지 않겠다고 표시

// 일정 시간 후 GC가 이를 감지하고 메모리에서 제거

✅ 어떤 점이 좋을까?

  • 개발자가 실수로 메모리를 해제하지 않아도 됩니다.
  • 프로그램이 안정적으로 작동합니다.
  • 복잡한 메모리 관리 대신, 비즈니스 로직 구현에 집중할 수 있습니다.

마무리: 자바, 이렇게 탄탄한 이유가 있었다!

이번 시간에는 자바의 3가지 핵심 특징을 살펴보았습니다.

번호 특징 핵심 요약

1 플랫폼 독립성 JVM 덕분에 어느 운영체제에서나 실행 가능
2 객체지향 언어 실생활처럼 객체 간 상호작용으로 프로그램 구성
3 자동 메모리 관리 가비지 컬렉터로 안정적이고 편리한 메모리 처리

이러한 특징 덕분에 자바는 오랜 시간 사랑받으며, 다양한 분야(웹, 모바일, 서버, 안드로이드 등)에서 널리 사용되고 있습니다.

 

반응형