[자바 객체 지향] 자바와 절차적/구조적 프로그래밍 1

2021. 7. 26. 22:27CSE/JAVA

* 해당 포스트는 '스프링 입문을 위한 자바 객체 지향의 원리와 이해'를 읽고 기억해야 할 중요한 것들만 정리한 내용임

 

1. 자바 프로그램의 개발과 구동

- JDK를 이용해 개발된 프로그램은 JRE에 의해 JVM상에서 구동된다.

- JDK : Java Development Kit, 자바 개발 도구

- JRE : Java Runtime Environment, 자바 실행 환경

- JVM : Java Virtual Machine, 자바 가상 기계

- JDK가 JRE를 포함하고, 다시 JRE가 JVM을 포함하는 형태로 배포됨

 

- T 메모리 구조

코드 실행 영역 데이터 저장 영역

 

코드 실행 영역 스태틱 (Static) 영역
스택 (Stack) 영역 힙 (Heap) 영역

 

2. 자바에 존재하는 절차적/구조적 프로그래밍의 유산

- 절차적 프로그래밍 : goto 를 쓰지 말라는 것과 같다

=> goto를 사용하게 되면 프로그램의 실행 순서가 인간이 이해하기에 너무 복잡해질 가능성이 있기 때문

- 구조적 프로그래밍 : 함수를 쓰라는 것 & 공유 사용 시 문제가 발생하기 쉬운 전역 변수보다는 지역 변수를 사용하자

 

- 자바에 존재하는 절차적/구조적 프로그래밍의 유산 => 메서드 내부에서 확인 가능 by 제어문

 

+ 함수 vs 메서드

: 전혀 다르지 않지만, 굳이 차이점을 꼽자면 메서드는 반드시 클래스 정의 안에 존재해야 함

=> 객체 지향 언어에서 클래스 외부에 존재할 수 있는 것은 없기 때문에

 

3. main() 메서드 : 메서드 스택 프레임

- JRE는 프로그램 안에 main() 메서드가 있는지 확인

=> JVM에 전원을 넣어 부팅

=> JVM은 오브젝트 파일을 받아서 실행함

=> JVM은 제일먼저 전처리 과정을 실시한다

 

<JVM의 전처리>

- java.lang 패키지와 import된 패키지를 T 메모리의 static 영역에 배치한다

- 프로그램 상의 모든 클래스를 T 메모리의 스태틱 영역에 배치한다.

 

- stack 프레임은 메서드들의 놀이터이다

=> 클래스를 제외한 여는 중괄호를 만날 때 마다 스택 프레임이 하나씩 생긴다.

=> 변수는 해당 스택 프레임 안에 위치를 확보한다.

=> 닫는 중괄호로 스택 프레임이 소멸된다.

 

★main 메서드가 끝나면 JRE는 JVM을 종료하고 JRE도 시스템 자원을 운영체제에 반납하며 운영체제 상의 메모리에서 사라진다. T 메모리도 소멸이 된다★

 

4. 블록 구문과 메모리 : 블록 스택 프레임

- if 문의 결과가 true 일 때

: if문의 여는 중괄호를 만나서 if문이 참인 블록의 스택 프레임이 생성된다.

  if문의 닫는 중괄호를 만나면 if 블록 스택 프레임이 사라진다.

 

'CSE > JAVA' 카테고리의 다른 글

[자바 객체 지향] 다형성  (0) 2021.08.05
[자바 객체 지향] 자바와 절차적/구조적 프로그래밍 2  (0) 2021.07.30
06. Exception  (0) 2020.01.20
05. Anonymous Inner Class  (0) 2020.01.19
04. Nested Class, Nested Interface  (0) 2020.01.19