Home > Backend > Java > ☕️[Java] 자바 - 소개

☕️[Java] 자바 - 소개
Java Programming Language Backend

자바 - 소개

🙋‍♂️ 1. 자바의 특징.

자바는 세계적으로 널리 사용되는 프로그래밍 언어로, 웹 개발, 모바일 애플리케이션, 대규모 시스템 구축 등 다양한 분야에 활용됩니다.
자바의 주요 특징들은 다음과 같습니다.

1️⃣ 플랫폼 독립성.

  • “Write Once, Run Anywhere”(WORA) : 자바 프로그램은 자바 가상 머신(JVM) 위에서 실행되기 때문에, 한 번 작성하면 어떤 플랫폼에서도 실행할 수 있습니다.
    • 이는 자바 컴파일러가 소스 코드를 플랫폼 독립적인 바이트코드로 변환하기 때문입니다.

2️⃣ 객체 지향 프로그래밍(OOP).

  • 자바는 객체 지향 프로그래밍 언어로, 캡슐화, 상속, 다형성 등을 완전히 지원합니다.
    • 이는 코드 재사용, 유지 관리의 용이성 및 시스템 모듈화를 가능하게 합니다.

3️⃣ 강력한 표준 라이브러리.

  • 자바는 방대한 표준 라이브러리를 제공하여, 네트워킹, 파일 시스템 접근, 그래픽 인터페이스 제작 등 다양한 작업을 쉽게 처리할 수 있도록 돕습니다.

4️⃣ 메모리 관리.

  • 자동 가비지 컬렉션
    • 자바는 사용하지 않는 객체를 자동으로 감지하고 메모리에서 제거하는 가비지 컬렉터를 내장하고 있습니다. 이는 개발자가 메모리 누수에 대해 걱정할 필요가 적어지게 해줍니다.

5️⃣ 보안.

  • 자바는 샌드박스 환경에서 애플리케이션을 실행하여 시스템 리소스에 대한 무단 접근을 방지합니다.
    • 또한, 클래스 로더, 바이트코드 검증기 등을 통해 애플리케이션이 안전하게 실행될 수 있도록 합니다.

6️⃣ 멀티스레딩.

  • 자바는 내장된 멀티스레딩 기능을 지원하여, 여러 스레드가 동시에 실행되도록 하여 애플리케이션의 효율성을 높입니다.
    • 이는 특히 네트워크 서버와 실시간 시스템에서 큰 장점입니다.

7️⃣ 로버스트와 포터빌리티.

  • 자바 프로그램은 다른 플랫폼으로의 이동성이 뛰어나며, 높은 수준의 안정성을 제공합니다.
    • 예외 처리 기능을 통해 오류를 쉽게 관리하고, 시스템의 안정성을 높일 수 있습니다.

📝 마무리.

자바의 이러한 특징들은 그것을 매우 유연하고, 다양한 애플리케이션 개발에 적합하게 만듭니다.
이로 인해 자바는 세계적으로 인기 있는 프로그래밍 언어 중 하나로 자리 잡게 되었습니다.


🙋‍♂️ 2. 자바 프로그램의 작성과 실행과정.

1️⃣ 소스 코드 작성.

  • 개발자는 자바의 문법에 맞추어 .java 확장자 파일에 소스 코드를 작성합니다.
    • 이 파일에는 하나 이상의 클래스가 포함되며, 각 클래스는 데이터와 메서드를 정의합니다.

2️⃣ 컴파일.

  • 소스 코드 파일을 자바 컴파일러(javac)를 사용하여 컴파일합니다.
    • 컴파일러는 소스 코드를 읽고, 문법 오류를 검사한 후, 바이트코드라는 중간 형태의 코드로 변환합니다.
      • 이 바이트 코드는 .class 파일로 저장됩니다.
  • 바이트코드는 플랫폼 독립적이기 때문에, 한 번 컴파일된 .class 파일은 다양한 운영 체제에서 실행될 수 있습니다.

3️⃣ 로딩.

  • 자바 가상 머신(JVM)은 .class 파일을 로드합니다.
    • 클래스 로더(component of JVM)가 이 작업을 수행하며, 필요한 클래스 파일들을 메모리에 로드합니다.

4️⃣ 링킹.

  • 로드된 클래스 파일들은 링킹 과정을 거칩니다. 링킹은 검증, 준비, 그리고(선택적으로) 해석 단계를 포함합니다.
    • 검증 : 로드된 바이트코드가 올바르게 포맷되었는지, 안전한지 검사합니다.
    • 준비 : 클래스 변수와 기본값을 위한 메모리를 할당합니다.
    • 해석 : 심볼릭 메모리 참조를 직접 참조로 변환합니다(선택적).

5️⃣ 초기화.

  • 클래스 초기화 단계에서 정적 변수들에 대한 초기화가 수행되며, 정적 블록이 실행됩니다.

6️⃣ 실행.

  • 프로그램 실행 동안 JVM 내부에서 가비지 컬렉터가 사용되지 않는 객체를 자동으로 감지하고, 할당된 메모리를 해제하여 메모리를 관리합니다.

📝 마무리.

자바의 이러한 실행 과정은 코드의 플랫폼 독립성을 보장하고, 안정적이며 보안적인 실행 환경을 제공합니다.
이 모든 과정은 개발자로부터 대부분 숨겨져 있으며, 개발자는 주로 소스 코드 작성과 일부 디버깅에 집중할 수 있습니다.