Spring/스프링입문을 위한 자바객체지향의 원리와 이해 37

전역 변수(static)와 메모리: 왜 주의해서 써야 하는가?

『스프링입문을 위한 자바 객체지향의 원리와 이해』로 공부한 내용을 정리한 글입니다. 자바에서 프로그램이 실행되면 메모리는 여러 영역으로 나누어 사용됩니다. 특히 메서드 실행과 관련된 지역 변수는 스택(stack) 영역에, 반면에 static 변수 같은 전역 변수는 클래스 영역(메서드 영역)에 저장됩니다.예제public class Start5 { static int share; public static void main(String[] args) { share = 55; int k = fun(5, 7); System.out.println(share); } private static int fun(int m, int p) { share ..

메서드 호출과 메모리 구조

『스프링입문을 위한 자바 객체지향의 원리와 이해』로 공부한 내용을 정리한 글입니다. 자바 프로그램을 실행하면, JVM은 메모리를 크게 나눠 사용합니다. 그중 스택 영역은 메서드가 호출될 때마다 스택 프레임(Stack Frame)이라는 공간을 할당받아 실행 흐름과 지역 변수를 관리합니다.예제public class Start4 { public static void main(String[] args) { int k = 5; int m; m = square(k); } private static int square(int k) { int result; k = 25; result = k; return result..

스택 프레임과 지역 변수의 메모리 구조

『스프링입문을 위한 자바 객체지향의 원리와 이해』로 공부한 내용을 정리한 글입니다. 자바에서 코드를 실행하면 변수들은 메모리 어딘가에 저장되는데, 그 구조가 눈에 보이진 않기 때문에 헷갈릴 수 있습니다. 이 글에서는 자바의 변수들이 메모리의 어디에 존재하는지, 변수의 생명 주기는 어떻게 되는지, 그리고 스택 프레임의 구조를 알아보겠습니다. 변수는 스택 프레임(Stack Frame)에 저장된다먼저, 아래 코드를 보겠습니다:public class Start2 { public static void main(String[] args) { int i; i = 10; double d = 20.0; }}main 메서드가 실행될 때 생성되는 스택 프레임자바 프로그램을 실..

자바 프로그램이 실행될 때 메모리는 어떻게 쓰일까?

『스프링입문을 위한 자바 객체지향의 원리와 이해』로 공부한 내용을 정리한 글입니다. 프로그래밍을 처음 배우다 보면 자주 듣게 되는 말이 있습니다.“자바는 객체지향 언어예요.”“메모리에 main() 메서드가 올라가고, 스택 프레임이 생성돼요.”“객체는 힙에 저장돼요.”그런데 이게 도대체 무슨 말인지, 메모리의 어디에 무엇이 어떻게 올라가는 건지 정확히 감이 오지 않는 분들이 많습니다. 이번 글에서는 자바 프로그램이 실행될 때 메모리가 어떻게 구성되고, 어떤 순서로 무엇이 올라가는지 하나씩 설명해보겠습니다. 프로그램이 메모리를 사용하는 기본 방식코드와 데이터를 나눠서 저장한다먼저 모든 프로그래밍 언어는 실행 시 메모리를 크게 두 영역으로 나누어 사용합니다.코드 실행 영역데이터 저장 영역기계어 명령어가 저장되..

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

『스프링입문을 위한 자바 객체지향의 원리와 이해』로 공부한 내용을 정리한 글입니다. 현실 언어와 프로그래밍 언어의 유사성"절차적/구조적 프로그래밍" 언어를 이해한 경험이 있다면 객체지향 언어인 자바도 더 쉽게 배울 수 있는 이유는 자바는 객체지향 언어이면서도 C와 같은 절차적 언어에서 많은 구조를 물려받았기 때문입니다.즉, 자바는 객체지향 언어이지만,문법 구조키워드코드 흐름 작성 방식 등은절차적 언어의 영향을 받았다는 것입니다. 자바에 존재하는 키워드들아래쪽에 등장하는 표는 자바에 존재하는 키워드들을 나열하고 있습니다. 이 키워드 중 다수는 C 언어나 다른 절차적 언어에서 유래된 것들입니다.예를 들어:if, for, while, do, switch, case, break, continue제어문 – 절차적..

자바 가상세계의 구조: JDK, JRE, JVM

김민수,『스프링입문을 위한 자바 객체지향의 원리와 이해』로 공부한 내용을 정리한 글입니다.현실 세계의 소프트웨어 구동 구조현실 세계에서 우리가 컴퓨터를 사용해 소프트웨어를 실행할 때 필요한 구성 요소는 다음과 같습니다:하드웨어물리적인 컴퓨터 (CPU, 메모리 등)운영체제(OS)하드웨어를 관리하고, 프로그램을 실행시켜 주는 시스템 소프트웨어개발도구개발자가 소프트웨어를 만들기 위해 사용하는 프로그램 (예: 컴파일러, IDE 등)프로그램(소프트웨어)개발자가 만든 실제 실행할 소프트웨어즉, 개발자는 개발 도구로 소프트웨어를 만들고, 그 소프트웨어는 운영체제를 통해 하드웨어 위에서 실행됩니다. 자바 세계의 구조: 현실을 모방한 가상 세계자바(Java)는 이 현실 구조를 가상세계 속에서도 똑같이 재현합니다. 자바..

기술은 이전 기술의 어깨 위에 선다

스프링입문을 위한 자바 객체지향의 원리와 이해 책으로 공부한 내용을 정리한 글입니다.기술의 발전은 단절이 아닌 연속이다스프링(Spring) 같은 신기술도 과거 기술 기반 위에 존재합니다."하늘에서 뚝 떨어진 것이 아니라"는 표현처럼, 이전 기술의 철학과 기법을 이해해야 신기술을 온전히 이해할 수 있습니다. 기계어 → 어셈블리어 → 고급 언어 (C, C++, 자바) 로 이어지는 진화기계어CPU가 직접 이해하는 0과 1의 이진수로 된 언어.예: 0110101010001100 같은 코드 (사람이 해석하기 어려움)직접 실행 가능하지만, 사람이 작성하기엔 너무 어려움.어셈블리어기계어를 기호(Mnemonic)로 바꾼 것: 예) ADD, MOV여전히 저수준 언어이긴 하지만 사람이 이해하기 조금 더 쉬움.CPU 명령을..