CheerUp_Cheers
자바 언어의 기본 문법 본문
JAVA는 크로스 플랫폼인가요?
한번만 빌드하면 어디서든 돈다!
- 특정 언어로 작성한 코드를 여러 플랫폼에서 실행 가능.
- 여러 디바이스와 운영체제에서 실행가능한 소프트웨어
자바의 장점으로 항상 언급.
크로스 플랫폼일수도 있고, 아닐수도 있다!
# 전통적인 컴파일 방식
컴파일하면 실행파일이 나옴.
실행파일은 기계어이며 운영체제가 직접 실행 파일
실행파일은 특정 OS로 겨냥해서 만들어진 것.
-> 각 운영체제/디바이스마다 실행파일 따로만들어야함
-> C는 진정한 크로스 플랫폼
# 자바의 컴파일 모델
코드 컴파일 -> 바이트코드(실행파일X)
- 바이트 코드
JVM이라는 특수한 프로그램이 이해하는 명령어.
운영체제/디바이스가 이해하는 기계어가 아님.
JVM이 실행 중, 최종 플랫폼에 맞는 명령어로 바꾸어 실행해줌.
JVM에 최적화지만, 기계어보단 느림!
# JVM
운영체제에 설치하는 별도의 프로그램
- 컴파일된 바이트코드를 JVM 변환 시켜주는 거다..
-> 이런 점에서는 크로스 플랫폼이다..
- JVM이 설치 안되어있따면?
Java 프로그램 실행 불가.
이런 관점에서는 크로스 플랫폼이라고 하기에는 어려움.
- JVM이 바이트 코드를 실제 실행하는 방식은?
과거는 인터프리터 방식.
최신은 JIT(just-in-time) 컴파일 추가.
여러가지 컴파일 방식이 공존
모듈
# 기존 패키지 시스템 한계1
- 애플래키에션이 사용하는 클래스 목록을 찾는 공식적인 방법이 없었음
누락된 클래스는 사용하려할때 오류 발생(실행하는 중에 오류)
그래서 모든 클래스를 같이 배포하는것이 일반적
- 문제점
자바버전이 증가함에 따라 라이브러리의 크기 증가.
쓰지않는 클래쓰까지..
패키지 안의 public클래스는 아무나 사용함.
# 새로운 방식 : 모듈!
java 8부터 지원
패키지 보다 상위 개념
- 패키지를 내포
패키지 위에 또다른 개념(모듈)을 만든 것.
- 장점
정말 필요한 패키지만 (경량)
프로그램 시작시 누락된 모듈 사용 가능.
어떤 모듈이 사용하는 다른 모듈 목록 찾기 쉬움.
모듈 사용자에게 공개할 클래스를 특정 가능.
- 왜써?
모듈은 좀더 효율적으로 패키지를 관리 및 배포하는 방법.
'인프런 > 개체지향 프로그래밍 및 설계 (Java)' 카테고리의 다른 글
Static, 싱글턴, 내포 클래스 - 디자인 패턴 (0) | 2020.12.01 |
---|---|
Static, 싱글턴, 내포 클래스 (0) | 2020.11.26 |
개체 모델링1 (0) | 2020.11.26 |
클래스 (0) | 2020.11.25 |
개체지향 프로그래밍의 필요성 (0) | 2020.11.25 |