22.03.31 WIL 프로그래밍 언어의 발전 & Java의 동작 기초 이해

Seunghan·2022년 3월 31일
0

WIL

목록 보기
1/2

Chapter1 사람을 사랑한 기술(기술(자바)가 나오기까지의 과정

신기술을 기존의 방식이나 기술에 불편, 개선의 필요성을 느껴 재구축된다.

신기술은 이전 기술이 제시한 철학과 기법을 정반합의 논리로 정제하고, 이전 기술을 거름 삼아 새로운 철학과 기법을 더해 나타나는 것이다.

그러므로 기존의 기술에서 어떠한 점이 불편했는지를 잘 파악하고 다음 기술과의 차이점에 대해서 생각해보자!

언어의 발전 과정

  • 기계어 : 0과 1로 이루어진 언어
    • CPU마다 다른 기계어가 적용된다.
  • 어셈블리어 : 기계어 니모닉

🤫니모닉이란? 어떤 것을 기억하는 데 쉽게 도움을 주는 것, 쉽게 기억하는 성질 예시) 01010101 → ADD

  • 하지만 각 CPU마다 다르게 실행되는 것은 어쩔 수 없었음

  • C - One Source Multi Object Use AnyWhere

    • 운영체제에 맞는 컴파일러를 제공

    • 하나의 파일을 작성하면 각각의 운영체제에 맞는 컴파일러가 각각의 CPU에 맞는 목적파일(기계어)을 생성해줌

    • But. 운영체제마다 나름대로의 특성이 있었음 → Fix Source 운영체제별 소스 수정 과정이 필요했다.
      - 예시) 어떤 운영체제에서는 int를 2바이트, 다른데서는 4바이트로 인지한다.

      의의 : 인간의 언어 체계와 기계어가 m : n의 매칭이 가능해졌다!

  • C++

  • Java - Write Once User AnyWhere

JVM이라는 자바 가상 머신을 가짐으로써 하나의 파일을 작성하더라도 각각의 운영체제에서 실행할 수 있다!

  • TMI : 초기의 JVM은 물리적 컴퓨터의 메모리 안에 가상 기계, 즉 가상 컴퓨터를 구축하는 것이기 때문에 많은 메모리를 소비했을 뿐 더러 매우 느렸다. 하지만 하드웨어가 발전하고, 최적화된 알고리즘으로 API와 JVM이 개발되어 C와 마찬가지일 정도로 속도가 빨라졌다.

CBD와 SOA

Chapter2 자바와 절차적/구조적 프로그래밍

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

사진 첨부하자

  • JDK : 자바 개발 도구 - 소프트위어 개발 도구
  • JRE : 자바 실행 환경 - 운영체제
  • JVM : 자바 가상 머신 - 하드웨어 : 물리적 컴퓨터

Chapter1에서 설명했듯 Java는 Write Once User AnyWhere의 방식을 따른다.

즉 한번의 소스코드를 작성하면 어떠한 운영체제에서든 각자의 JVM을 설치하면 해당 프로그램을 실행할 수 있다는 말이다.

절차적 프로그래밍 / 구조적 프로그래밍

절차적 프로그래밍이란? : goto를 쓰지마라

goto를 이용한다면 프로그램의 순서를 변경할 수 있다. 하지만 이는 개발자가 디버깅을 할 떄 많은 시간과 노력을 필요하게 한다.

절차적 프로그래밍이란 프로그램을 논리적으로 잘 구현해서 순서대로 실행해게 하라는 말이다.

구조적 프로그래밍이란? : 함수를 사용하라

긴 코드를 보면 일단 짜증날것이다. 그러므로 논리를 함수 단위로 분리해서 이해하기 쉬운 코드를 작성하자

자바의 메서드!

자바에서의 프로그램은 메서드 내의 코드를 차례차례 실행하면서 동작한다.

객체지향 프로그래밍에서 제어문이 존재 할 수 있는 공간은 메서드 내부이므로 메서드가 절차적/구조적 프로그래밍의 유산이다.

메모리의 영역(a.k.a T영역)

스태틱(static) 영역 : main() 메서드가 실행 되기 전 JVM은 개발자가 작성한 모든 클래스와 Import 패키지 모두 static 영역에 가져다 놓는다.

스택(stack) 영역 : 여는 중괄호(ex 메서드, if문, while)를 만날 때마다 새로운 스택 프레임(stack frame)을 스택 영역에 할당한다. → 이는 지역변수와 메모리의 개념과 관련있다.

힙(Heap) 영역 : 객체(인스턴스)들이 생성되면 힙 영역에 생성된다.

멀티 스레드 / 멀티 프로세스

멀티 스레드(Multi Thread)

멀티 스레드(Multi Thread)의 T 메모리 모델은 스택 영역을 스레드 개수만큼 분할해서 사용하는 것

하나의 스레드에서 다른 스레드의 스택 영역에는 접근할 수 없지만 스태틱 영역과 힙 영역은 공유해서 사용 가능하다.

멀티 프로세스(Multi Process)

멀티 프로세스(Multi Process)는 다수의 데이터 저장 영역, 즉 다수의 T 메모리를 갖는 구조이다.

하나의 프로세스가 다른 프로세스의 T 영역을 절대 침범할 수 없으므로 안전하지만 메모리 사용량이 크다.

멀티 스레드 환경에서의 전역 변수 사용은 문제를 일으킬 수 있다.(각 특성을 잘 생각해 보면 바로 떠오를 것이다)

Reference

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

profile
주니어 백엔드 개발자입니다!

0개의 댓글