ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] Java란?
    Java 2025. 2. 25. 14:10

    ✅ Java 의 탄생

    기존 컴퓨터 세계는 복잡하고 다루기 어려운 언어들로 가득했고, 당시 언어들은 운영체제마다 코드가 다르게 동작하는 문제가 있었다.

     

    그래서 한 번 작성하면 어디서든 실행할 수 있도록 (Write Once, Run Anywhere)

    1995년 James Gosling 의 주도로 Java가 탄생했다.

     

    ✅ Java 의 특징

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

    • 바이트코드JVM(Java Virtual Machine)을 기반으로, 어떤 운영체제에서든 JVM만 설치되어 있으면 동일한 자바 프로그램을 실행할 수 있음.
    • 이는 Write Once, Run Anywhere(WORA)라는 슬로건을 가능하게 한 핵심 기술.

     

    2. 객체 지향 프로그래밍 (Object-Oriented Programming, OOP)

    • 자바는 클래스, 객체, 상속, 캡슐화, 다형성, 추상화 등의 객체 지향 개념을 체계적으로 지원.
    • 재사용성과 유지보수성이 높아, 대규모 프로젝트에도 효과적으로 적용할 수 있음.

     

    3. 풍부한 표준 라이브러리 및 생태계

    • 자바는 기본 라이브러리(API)가 매우 방대하여, 문자열 처리, 컬렉션(자료구조), 네트워킹, I/O 등 다양한 기능을 제공.
    • Spring, Hibernate, Java EE 등 유명한 오픈소스 프레임워크라이브러리가 풍부해, 웹 개발부터 모바일, 데스크톱, 클라우드 네이티브, 빅데이터 등 다양한 분야에 적용할 수 있음.

     

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

    • 자바는 프로그램이 동적으로 할당한 메모리를 가비지 컬렉터(Garbage Collector)가 주기적으로 회수.
    • 개발자가 직접 메모리를 해제하지 않아도 되므로, C/C++처럼 메모리 누수나 참조 문제에 대한 부담이 상대적으로 줄어듬.

     

    5. 강력한 보안 (Security)

    • JVM의 샌드박스(Sandbox) 모델을 통해 프로그램이 동작할 수 있는 환경을 제한적으로 관리.
    • 자바 애플릿(Applet) 시절부터 적용된 보안 모델과 더불어, 클래스 로더(Class Loader), 보안 매니저(Security Manager) 등을 활용하여 외부 침입으로부터 시스템을 보호하는 구조.

     

    6. 멀티스레딩 (Multithreading)

    • 자바는 멀티스레딩을 언어 차원에서 지원.
    • Thread 클래스Runnable 인터페이스, 고급화된 동시성(Concurrency) 프레임워크 등을 통해 효율적으로 병렬 처리를 구현 가능.

     

    7. 동적 로딩 (Dynamic Loading)

    • 자바 프로그램은 필요한 클래스만 그 때그 때 로딩할 수 있으므로, 업데이트나 확장에 유연하게 대응 가능.
    • 이로 인해 대규모 시스템에서도 모듈별 배포와 업데이트가 용이.

     

    8. 단순성과 친숙한 문법 (Simplicity & Familiar Syntax)

    • C/C++에 비해 포인터 연산이나 다중 상속 같은 복잡한 기능을 제거하고, 보다 직관적이고 간결한 문법을 제공.
    • C 계열 문법을 기반으로 하여 기존에 C/C++을 사용하던 개발자들이 비교적 쉽게 적응.

     

    ✅ JDK란?

    JDK(Java Development Kit)는 자바 애플리케이션을 개발하기 위한 개발 도구(Development Kit).

    자바로 프로그램을 작성, 컴파일, 실행하는 데 필요한 필수적인 요소들을 포함.

     

    • 자바 컴파일러(javac)
      • .java 확장자의 자바 소스 코드를 바이트코드(.class 파일) 로 컴파일.
    • JRE(Java Runtime Environment)
      • 자바 애플리케이션을 실행하기 위한 런타임 환경.
      • JVM(Java Virtual Machine) 을 포함하여, 클래스 라이브러리 등 애플리케이션 구동에 필요한 핵심 요소를 담고 있음.
    • 실행 도구(java, javaw 등)
      • 바이트코드로 컴파일된 자바 프로그램을 실제로 실행할 수 있는 도구들.
    JDK (Java Development Kit)  ← Java 개발에 필요한 모든 것 포함
     ├── JRE (Java Runtime Environment)  ← Java 실행 환경
     │   ├── JVM (Java Virtual Machine)  ← 바이트코드 실행
     │   ├── Java 라이브러리 (rt.jar 등)  ← 필수 API 제공 (java.lang, java.util 등)
     │   ├── 클래스 로더 (Class Loader)  ← .class 파일 로드
     │
     ├── Javac (Java Compiler)  ← .java → .class 변환
     ├── 기타 개발 도구 (디버거, Javadoc 생성기, JAR 도구 등)

     

    ✅ Java Compiler

    자바 컴파일러는 java 파일을 바이트코드(.class)로 컴파일 해준다.

     

    바이트코드는 JVM이 해석할 수 있는 코드, Java 프로그램이 실행되기 위해 변환되는 중간 단계 코드

     

     

    ✅ JVM (Java Virtual Machine)

     

    JVM은 자바 가상환경. 바이트코드를 해석하고 자바 프로그램을 실행시키는 역할

     

     

    JVM 덕분에 환경에 관계없이 자바 프로그램을 동작 시킬 수 있음

     

     

     

    Javac와 JVM을 통해서 플랫폼의 독립성을 보장 받을 수 있다.

     

     

    ✅ Java 실행 순서

     

    'Java' 카테고리의 다른 글

    [Java] 메서드란  (1) 2025.03.05
    [Java] 반복문과 배열  (1) 2025.03.05
    [Java] 연산자와 조건문  (0) 2025.03.05
    [Java] 변수와 입출력  (0) 2025.03.05
    [Java] 명명 규칙 및 패키지, 클래스  (1) 2025.03.05
Designed by Tistory.