[Java 복습하기] Java 전반에 대해(feat. C++과의 차이점 다섯 스푼 정도)

개발새발log·2022년 4월 19일
0

Java/Spring

목록 보기
3/6

✨ 바야흐로 4년전 배운 자바 수업 내용 복습하기

Java

key: 플랫폼 독립성, WORA

  • 플랫폼 독립성: OS, HW에 상관없이 코드가 돌아감 (!= C++)
  • WORA (Write Once Run Anywhere)
    👉 바이트 코드 + JVM 덕분
    - 바이트 코드는 JVM에서 실행가능한 바이너리 코드
    - JVM(Java Virtual Machine)은 OS 위에서 돌아가는 소프트웨어

C++의 프로그램 실행

Java의 프로그램 실행

🤚 잠깐! 여기서 정적로딩, 동적로딩이란?

✅ 정적로딩 (-> C++)

실행 시 모든 실행 파일을 메모리에 load
➕ 빠르다
➖ 용량을 많이 차지함

✅ 동적로딩 (-> Java)

필요할 때마다 동적으로 메모리 생성, 필요 없는 메모리는 자동으로 소멸
➕ 큰 프로그램도 작은 메모리에서 실행 가능
➖ 비교적 느리다

그 외 자바의 특성

  • 객체지향적 -> 상속성, 다형성, 캡슐화 ⭐️⭐️⭐️
  • 소스(.java)와 클래스(.class) 👉 한 클래스 당 한 바이트코드 파일 생성!
  • multithread: OS의 도움없이 자체적으로 multithread 지원
  • 가비지 컬렉션
    - 가비지: 할당 후 사용되지 않는 메모리
    • C/C++은 free/delete로 개발자가 메모리 반환을 해줘야하지만, Java는 JVM이 알아서 가비지를 회수해준다!
  • 실시간 응용 시스템에 부적합! 느리기 때문.. (기계랑 가까운 C/C++, Rust가 더 적합하지 않을까 싶다)

JDK? JRE?

  • JDK (Java Development Kit) - 컴파일러, JRE, 클래스 라이브러리 등 포함
  • JRE (Java Runtime Environment) - JVM 포함
  • 쉽게 말해서 개발자를 위한 개발 도구 및 환경까지 다 제공해주는 게 JDK, JRE는 일반 사용자들도 자바 프로그램을 실행시키기 위한 환경 제공
profile
⚠️ 주인장의 머릿속을 닮아 두서 없음 주의 ⚠️

0개의 댓글