[Java 기본 원리] Java란 무엇인가? C언어와 비교해보자

Java는 플랫폼 독립성과 객체 지향을 지원하는 프로그래밍 언어로, JVM을 통해 어떤 운영체제에서도 동일하게 동작한다. 수 많은 오픈소스와 강력한 프레임워크(ex:Spring)들로 인해 백엔드의 상당수가 Java를 택한다.



Java의 큰 특징 2가지

1. 객체 지향 프로그래밍(OOP)

객체 지향 프로그래밍(OOP)은 현실 세계의 객체들을 모델링하여 코드를 재사용 가능하게 개발하는 방법론!


객체란? 💡

  • 우리 주변의 모든 사물과 개념을 포함
  • 현실 세계에 존재하는 물리적, 추상적 모든 것
  • 속성(데이터)과 행위(메서드)를 가진 소프트웨어 단위
    • 데이터와 해당 데이터를 처리하는 메서드가 하나의 객체로 캡슐화


C언어(절차지향)와 비교 해보기 🔍

특징 Java C
패러다임 객체지향 절차지향
개발 방식 객체 중심 데이터 중심
메모리 관리 자동(GC) 수동
플랫폼 의존성 독립적 의존적
실행 방식 JVM 기반 직접 실행
성능 상대적 느림 빠름
코드 구성 객체 단위 모듈화 순차적 실행
재사용성 높음 낮음


실제 예시

자판기 시스템 구현 비교

  • 절차지향 : 돈을 받는다 -> 받은돈과 가격을 비교한다() -> 제품과 잔돈을 제공한다()
  • 객체지향 : “고객”이 돈을 넣는다 -> “자판기”가 받은 돈과 가격을 비교한다() -> “자판기”가 “고객”에게 제품과 잔돈을 제공한다()
    • “고객”, “자판기”가 주체가 되는 POINT



2. 플랫폼 독립성 with JVM(Java Virtual Machine)

실행과정을 보고 이해하자

  • Java 소스코드(.java) → 바이트코드(.class) 로 컴파일
  • JVM이 바이트코드를 각 운영체제에 맞는 기계어로 자동 변환
  • 따라서 개발자는 운영체제를 신경 쓸 필요 없음
    • 특히 JDK/JRE 설치 시 해당 OS에 맞는 JVM 자동 설치
    • 해당 OS에 맞는 컴파일러도 자동 설치되어 모든OS가 동일한 class 파일로 컴파일이 가능!
    • JVM은 class 소스를 실행하므로 플랫폼 독립성 완성!


JVM 주요 기능은?

  • 자바 소스 실행 담당
  • 메모리 자동 관리(GC)
  • 스레드 관리, 보안 관리 등


C언어와 비교해보는 플랫폼 독립성 🔍

Java는 JVM을 통해서 실행이 되는 반면, C언어는 운영체제를 통해서 실행이 된다.

JVM이 가상머신이라서 운영체제의 역할을 대신하는 것이며 그렇기에 플랫폼 독립성이 가능한 것이다.

C언어의 경우 실행파일의 확장자 부터 Window는 .exe, Linux는 .out 로써 다름을 기억하자.

언어 Java C
컴파일 결과 바이트코드 실행 파일
실행 환경 JVM 운영체제
플랫폼 이식성 높음 낮음



왜 선택할까? 개발 생산성 🛠️

Java는 플랫폼 독립성과 풍부한 생태계를 갖춘 언어로, 한국 백엔드 개발에서 널리 사용되는 핵심 기술이다

  • 플랫폼 독립성
  • 풍부한 표준 라이브러리
  • 강력한 오픈소스 생태계
  • 안정적인 프레임워크 (ex: Spring 프레임워크) 등

댓글남기기