자바란
썬 마이크로시스템즈에서 개발한 객체지향 프로그래밍 언어이다.
운영체제에서 프로그램을 변경하지 않고도 실행이 가능하다.
자바의 특징을 몇 가지 정리해보면,
1) 자동 메모리 관리 (Garbage Collection)
가비지 컬렉터가 자동적으로 메모리를 관리해주기 때문에, 프로그래머가 따로 메모리를 관리하지 않아도 된다.
2) 네트워크와 분산처리를 지원
풍부하고 다양한 네트워크 프로그래밍 라이브러리를 통해,
비교적 짧은 시간에 네트워크 관련 프로그램을 개발할 수 있다.
3) 멀티 쓰레드
여러 쓰레드에 대한 스케줄링을 자바 인터프리터가 담당한다.
4) 동적 로딩
실행 시 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다.
JVM
Virtaul Machine은 소프트웨어로 구현된 하드웨어를 뜻하는 용어이다.
자바로 작성된 애플리케이션은 모두 이 JVM에서만 작동된다.
JVM은 자바 바이트 코드를 실행할 수 있고, CPU나 운영체제와 독립적으로 동작하는 것을 가능하게 한다.
JVM 내부에는 Garbage Collector, Execution Engine, Class Loader 그리고 Runtime Data Area가 존재한다.
Class Loader : 자바 컴파일러가 .java 파일을 컴파일하면 .class 파일(바이트 코드)가 생성된다. 이렇게 생성된 클래스 파일들을 엮어 Runtime Data Area 형태로 메모리에 적재하는 역할을 한다.
Execution Engine : 메모리에 적재된 클래스들을 기계어로 변경해 명령어 단위로 실행하는 역할을 한다.
명렁어를 하나 하나 실행하는 인터프리터 방식과 실행 시점에 자주 쓸만한 코드들을 기계어로 변환 시켜놓고 저장해서 사용하는 JIT 방식이 있다.
Garbage Collector : Heap 메모리 영영에 생성 된 객체들중에 Reachability를 잃은 객체를 탐색 후 제거하는 역할을 한다.
Runtime Data Area : Method Area, Heap Area, Stack Area, PC reigster, Native Method Stack으로 구성되어 있다.
JDK
컴파일 및 실행 과정
자바 가상머신(JVM), 자바 클래스 라이브러리 외에 자바를 개발하는 데 필요한 프로그램들이 내장 되어있다.
- javac.exe
자바 컴파일러, 자바 소스코드를 바이트 코드로 컴파일한다.
- java.exe
자바 인터프리터, 컴파일러가 생성한 바이트 코드를 해석, 실행한다.
- jacap.exe
역어셈블러, 컴파일된 클래스 파일을 원래의 소스로 변환한다.
자바 프로그램은 다음 순서로 진행된다.
1. 프로그램의 실행에 피룡한 클래스 파일(.class) 로드
2. 클래스 파일을 검사
3. 저장된 클래스에서 main 을 호출
OOP의 5대 원칙(SOLID)
- S : 단일 책임 원칙 - 객체는 단 하나의 책임만 가져야 한다.
- O : 개방-폐쇄 원칙 - 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있어야 한다.
- L : 리스코프 치환 원칙 - 자식 클래스는 최소한 부모 클래스에서 가능한 행위를 수행할 수 있어야 한다.
- I : 의존 역전 원칙 - 의존 관계를 맺을 때 최대한 변화하기 어려운 것, 변화가 없는 것에 의존해야 한다.
- D : 인터페이스 분리 원칙 - 인터페이스를 클라이언트에 특화되도록 분리시켜야한다.
'Langauge > Java' 카테고리의 다른 글
Java의 정석 Chapter3. 연산자 / Chapter4. 조건문과 반복문 (0) | 2022.03.07 |
---|---|
Java의 정석 Chapter2. 변수 (0) | 2022.03.07 |
점프 투 자바 요약 #객체지향프로그래밍 (0) | 2021.02.25 |
점프 투 자바 요약 #제어문 (0) | 2021.02.23 |
점프 투 자바 요약 #자료형 (0) | 2021.02.16 |