1. 자바의 탄생 배경

  • 개발 배경:
    • 자바는 1991년, 제임스 고슬링과 선 마이크로시스템스(Sun Microsystems) 연구원들이 개발.
    • 가전제품, 휴대용 장치 등에 독립적이고 안정적인 소프트웨어를 개발하기 위해 설계.
  • 이전 상황:
    • 당시 주로 사용되던 언어는 **C와 C++**로, 운영체제에 종속된 실행 파일을 생성.
    • 자바는 이를 개선하여 운영체제 독립적 실행을 목표로 개발됨.

2. 자바와 운영체제 독립성

  • C와 C++의 한계:
    • 예: Test.exe는 윈도우에서 실행 가능하지만 리눅스에서는 불가능.
    • 다른 운영체제에서 실행하려면 해당 환경에서 다시 컴파일 필요.
  • 자바의 접근 방식:
    • 자바 코드를 컴파일하면 **바이트 코드(Bytecode)**인 .class 파일 생성.
    • 이 바이트 코드는 특정 운영체제와 무관하며, **JVM(Java Virtual Machine)**이 실행을 담당.
    • 결과적으로, 한 번 작성한 자바 프로그램은 다양한 운영체제에서 실행 가능.
      (Write Once, Run Anywhere)

3. 자바 가상 머신(JVM)과 JIT 컴파일러

  • JVM(Java Virtual Machine):
    • 자바 바이트 코드를 실행하는 환경.
    • 운영체제에 맞는 **자바 실행 환경(JRE)**이 JVM을 제공.
  • JIT(Just-In-Time) 컴파일러:
    • 실행 시점에 바이트 코드를 기계어로 변환.
    • 동일한 코드가 반복 실행될 경우 이전에 변환된 기계어를 재사용.
    • 효율성:
      • 이전의 해석기 방식(Java Interpreter)보다 성능이 10~20배 향상.

4. 자바의 객체 지향 프로그래밍

  • 객체 지향의 정의:
    • 프로그램의 흐름이 아닌, 객체 간의 상호작용을 중심으로 설계.
    • 객체(Object): 프로그램의 대상, 데이터와 동작을 캡슐화.
  • 장점:
    • 공통 기능 수정 없이 새로운 기능 추가 가능.
    • 유지보수 용이, 확장성 뛰어남.
  • 예시:
    • 쇼핑몰 시스템:
      • 객체: 회원, 상품, 주문, 배송.
      • 각 객체는 독립적이며 상호 협력.

5. 자바의 안정성

  • 안정적 설계:
    • 포인터 제거:
      • 메모리를 직접 제어하지 않아 오류 가능성 감소.
    • 가비지 컬렉터(GC):
      • 동적 메모리 관리를 자동화하여 효율적이고 안전한 메모리 사용 보장.
  • 기존 언어 대비 개선:
    • 자바는 C와 C++의 모호성과 불안정한 요소를 제거.

6. 주요 프로그래밍 언어와 자바 비교

언어특징속도

C 속도가 빠르고 컴퓨터 하드웨어 제어 가능. 가장 빠름
C++ 객체 지향 언어, 클래스 사용 가능. 빠름
Java 운영체제 독립적, 안정적, 가비지 컬렉터 제공. 상대적으로 느림
C# 마이크로소프트에서 개발, 자바와 유사한 객체 지향 언어. Java와 유사

7. 자바의 플랫폼 독립성

  • 포팅 및 컨버팅 필요 없음:
    • 자바는 리눅스와 윈도우 등 다양한 환경에서 동일하게 작동.
  • MS와 SUN의 차이:
    • MS: 윈도우 중심.
    • SUN: 리눅스와 윈도우를 모두 지원하는 JRE 제공.

8. 자바가 제공하는 주요 장점

  1. 운영체제 독립성:
    • JVM을 통해 다양한 플랫폼에서 실행.
  2. 안정성:
    • 포인터 제거와 가비지 컬렉터로 메모리 관리 효율화.
  3. 객체 지향 프로그래밍:
    • 유지보수와 확장성 뛰어남.
  4. 광범위한 활용:
    • 웹 애플리케이션, 모바일 앱(Android), 엔터프라이즈 솔루션 등.

요약

  • 자바는 C와 C++의 단점을 개선한 운영체제 독립적이고 안정적인 객체 지향 언어.
  • JVM을 통해 플랫폼 독립성을 제공하며, JIT 컴파일러로 성능 최적화.
  • 안정성, 유지보수성, 확장성에서 강점을 보이며, 다양한 분야에서 널리 사용.

+ Recent posts