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

[도서/스프링 입문] #1 사람을 사랑한 기술

yulee_to 2023. 1. 14. 16:24

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

✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. 


신기술은 이전 기술의 어깨를 딛고

스프링을 이해 하기 전 필요한 개념

  • 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)
    • 서비스 중심 구조 또는 서비스 지향 구조로 실제 현실의 업무를 기준으로 개발하자는 사상

 

 

728x90