728x90

컴파일

  • 소스 : 프로그래밍 언어로 작성된 텍스트 파일
  • 컴파일 : 소스 파일을 컴퓨터가 이해할 수 있는 기계어로 만드는 과정
  • 소스 프로그램 → 컴파일러 → 기계어 → 프로그램 실행

 

자바 ) .java -> .class

C ) .c -> .obj -> .exe

C++) .cpp -> .obj -> .exe


WORA (Write Once Run Anywhere) 🌟

  • 한번 작성된 코드는 모든 플랫폼에서 바로 실행
  • C/C++ 등 기존 언어가 가진 플랫폼 종속성 극복
  • 네트워크에 연결된 어느 클라이언트에서나 실행

<WORA를 가능하게 하는 자바의 특징>

  • 바이트 코드(byte code)
    • 자바 소스를 컴파일한 목적 코드
    • CPU에 종속적이지 않은 중립적인 코드
    • JVM에 의해 해석되고 실행됨
  • JVM(Java Virtual Machine)
    • 자바 바이트 코드를 실행하는 자바 가상 기계(SW)

바이트 코드 🌟

  • 자바 가상 기계에서 실행 가능한 바이너리 코드
    • 바이트 코드는 컴퓨터 CPU에 의해 직접 실행되지 않음
    • 자바 가상 기계가 작동 중인 플랫폼에서 실행
    • 자바 가상 기계가 인터프리터 방식으로 바이트 코드 해석
  • 클래스 파일(.class)에 저장클래스파일로 만들어 주는 게 바이트 코드 이다!

자바 가상 기계(JVM : Java Virtual Machine)

  • 동일한 자바 실행 환경 제공
  • 자바 가상 기계 자체는 플랫폼에 종속적이 종속성을 극복시켜주는게 바이트 코드 !

자바의 개발 및 실행 환경

  • 여러 소스(.java)로 나누어 개발
  • 바이트 코드(.class)를 하나의 실행 파일(exe)로 만드는 링크 과정이 없다.
    • main() 메소드를 가진 클래스에서부터 실행 시작
    • 자바 가상 기계는 필요할 때, 클래스 파일 로딩, 적은 메모리로 실행 가능__C는 메모리가 적으면 실행 불가실행

자바와 C/C++ 차이 🌟

  • 자바
    • 컴파일러가 바로 바이트 코드한 후 링크 과정 없음
    • 바이트 코드는 JVM에서만 실행 가능
    • 자바는 필요한 클래스들을 프로그램 실행 중에 동적으로 로딩-동적 로딩은 JVM에 포함된 클래스 로더 객체에 의해 이루어짐
    • ClassLoader 클래스를 이용하여 개발자가 직접 클래스 로딩 가능
  • C/C++
    • 컴파일
      • 컴파일러가 중간 단계인 목적 코드를 생성
    • 링크
      • 링커가 목적 코드와 라이브러리 연결, 실행 가능한 최종 실행 파일 생성
      • 동적 라이브러리의 경우 실행 중에 동적 링크
      • 정적 라이브러리는 실행 파일에 포함실행 파일 크기가 커짐
    • 목적 코드 및 실행 파일은 플랫폼에 따라 다름
      • 플랫폼이 바뀌거나 다른 플랫폼에서 실행시키려면 다시 컴파일 및 링크

📢 JDK(Java Development Kit), JRE(Java Runtime Environment) 설치하기


자바의 모듈화

  • 모듈: 자바 패키지들과 이미지, XML 파일 등의 자원들을 묶은 단위
  • 모듈 프로그래밍: 자바 응용프로그램을 모듈을 연결하는 방식으로 작성
  • 자바 플랫폼의 모듈화
    • 실행 시간에 사용되는 자바 API의 모든 클래스들을 모듈들로 분할
    • 모듈화의 목적
      • 세밀한 모듈화, 자바 응용프로그램이 실행되는데 필요없는 모듈 배제
      • 작은 크기의 실행 환경 구성
      • 하드웨어가 열악한 소형 IoT장치 지원
  • 모듈 방식이 아닌 기존 방식으로 프로그래밍 해도 무관

📢 이클립스와 같은 IDE가 아닌 다른 개발 환경에서도 자바 프로그램을 개발할 수 있음!

 

 


 

 

 

자바의 특징

컴파일

www.notion.so

 

아래 노션 페이지에 자바 공부 내용에 대해 업로드 합니다!

수정사항이나 질문사항의 경우 노션 댓글로 남겨주세요!(*•̀ᴗ•́*)و ̑̑

 

 

JAVA 이론 정리

주석 단축키 주석 처리하고 싶은 부분을 블록 처리하고 ‘Ctrl+Shift+ / ’를 누르면 /* */로 주석 처리가 됩니다. 주석을 해제하고 싶은 부분을 블록 처리하고 ‘ Ctrl+Shift+ \ (원 표시 혹은 역슬러시)

www.notion.so

 


개발 환경

Intellij

 

작성 플랫폼

Notion

 

728x90