✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다.
신기술은 이전 기술의 어깨를 딛고
스프링을 이해 하기 전 필요한 개념
- SOA(서비스 지향 아키텍처)
- CBD(컴포넌트 기반 개발)
- OOP(객체 지향 프로그램)
- 절차적/구조적 프로그래밍
- 기계어나 어셈블리어
기계어에서 객체 지향 프로그래밍 언어로
어셈블리어 - 0과 1의 행진을 벗어나 인간 지향으로 / 기계어 니모닉
- 어셈블리 : 니모닉(Mnemonic)과 기계어의 일대일 매칭 코드표
- 어셈블리어(Assembly Language) : 니모닉과 기계어의 일대일 매칭 언어, CPU 별로 각자의 어셈블리어가 달랐음
- 어셈블러(Assembler) : 어셈블리어를 기계어로 번역해주는 소프트웨어
- 니모닉(Mnemonic) : 어떤 것을 기억하는 데 쉽게 하도록 도우을 주는 것, 또는 쉽게 기억 되는 성질
C 언어 - 강력한 이식성 / One Source Multi Object Use Anywhere
어셈블리어는 각 기계마다 다 다른 소스 코드를 작성해야 했는데, C 언어의 등장으로 소스코드를 하나만 만들어도 각 OS마다 다른 컴파일러를 사용하여 컴파일만 하면 각 기계에 맞는 기계어 목적 파일(.class)이 만들어졌다.
- One Source : 하나의 C 소스 파일만 작성
- Multi Object : 기종마다 하나씩 기계어 목적 파일을 생성
- Use Anywhere : 모든 컴퓨터에서 실행 가능
- Fix Source : 운영 체제별 소스 수정 과정 필요
- ex) C에서의 int는 short < int < long일 뿐 각 타입의 byte수가 운영체제별로 다름
C++ 언어 - 정말 인간적인 프로그래밍 방법론, 객체 지향
C++은 기존의 C 언어에 객체지향 개념을 도입한 언어이다.
자바 - 진정한 객체 지향 언어
C++은 객체 없는 프로그래밍도 가능하지만, 자바는 객체 지향 언어의 중심인 클래스(Class)가 없다면 존재할 수 있는 것은 아무것도 없다.
자바는 Write Once Use Anywhere(WORA)를 지향한 언어로 한 소스 코드를 한번 컴파일 해주면 단 하나의 JVM용 기계어가 생성되는데, 어떤 운영체제에서든 사용이 가능하다. 다만 실행할 컴퓨터의 기종에 맞는 JRE(Java Runtime Environment)가 설치되어 있어야 한다.
신기술이 역사 속에서 환영만 받은 것은 아니다
사실 배척도 받았던 C/C++
최적화된 컴파일러에 의해 작성된 목적 파일이라 해도 C언어로 작성된 프로그램은 기계어/어셈블리어로 제작된 프로그램에 비해 너무 느렸다. C++에서 처음 등장한 객체 지향이라는 프로그래밍 기법이 어려워서 처음엔 배척받았다.
사실 배척에 의해 버림받을 뻔했던 자바
JVM은 자바 가상 기계로 가상의 컴퓨터를 물리적 컴퓨터의 메모리 안에 하나 더 구축하는 것이다. 가상이여도 CPU 자원과 메모리를 소비하게 돼서 속도가 엄청 느렸지만, 하드웨어의 발전과 최적화된 알고리즘으로 개발된 API와 JVM으로 인해 속도가 빨라졌다.
CBD, SOA란?
- CBD(Component Based Development)
- 컴포넌트 기반 개발로 애플리케이션을 통으로 개발하지 말고, 의미있는 단위로 구분하고 하나씩 개발한 뒤에 하나로 통합해 소프트웨어 제품을 완성하는 방법론
- SOA(Service Oriented Architecture)
- 서비스 중심 구조 또는 서비스 지향 구조로 실제 현실의 업무를 기준으로 개발하자는 사상
'도서 > 스프링 입문을 위한 자바 객체 지향의 원리와 이해' 카테고리의 다른 글
[도서/스프링 입문] #6 스프링이 사랑한 디자인 패턴 (0) | 2023.01.17 |
---|---|
[도서/스프링 입문] #5 객체 지향 설계 5원칙 - SOLID (1) | 2023.01.17 |
[도서/스프링 입문] #4 자바가 확장한 객체 지향 (0) | 2023.01.14 |
[도서/스프링 입문] #3 자바와 객체 지향 (0) | 2023.01.14 |
[도서/스프링 입문] #2 자바와 절차적/구조적 프로그래밍 (0) | 2023.01.14 |