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가 아닌 다른 개발 환경에서도 자바 프로그램을 개발할 수 있음!
아래 노션 페이지에 자바 공부 내용에 대해 업로드 합니다!
수정사항이나 질문사항의 경우 노션 댓글로 남겨주세요!(*•̀ᴗ•́*)و ̑̑
개발 환경
작성 플랫폼
728x90
'🧑💻 Language > Java' 카테고리의 다른 글
[Java] 6. 메소드 작성과 접근 지정자 (0) | 2021.05.02 |
---|---|
[Java] 5. 자바의 객체 지향적 특성 (0) | 2021.05.02 |
[Java] 4. 배열과 main() 메소드 (0) | 2021.05.02 |
[Java] 3. 자바 기본 문법 (0) | 2021.05.02 |
[Java] 2. 자바프로그래밍의 기본 (0) | 2021.05.02 |