반응형
목록
Spring/스프링 입문을 위한 자바 객체 지향의 원리와 이해 (15)
[꼼꼼한 개발자] 꼼코더

🔋 프로그램이 메모리를 사용하는 방식 자바의 특징을 빠르게 살펴봤다. 이제부터는 자바를 잘 활용하기 위한 지식을 쌓아보자. 아래 그림은 하나의 프로그램이 실행될 때 프로그램이 메모리를 사용하는 방식을 간략하게 보여준다. 기계어를 포함한 모든 프로그래밍 언어의 공통된 사용 방식이다. 객체 지향 프로그램에서는 데이터 저장 영역을 다시 세 개의 영역으로 분할해서 사용한다(아래 그림 참고). 그림의 우측 영역(데이터 저장영역)은 T처럼 보이기에 앞으로 T메모리 구조라고 간략하게 지칭하겠다. 🏴☠️ 자바에서 존재하는 절차적/구조적 프로그램의 유산 객체지향 프로그래밍은 절차적/구조적 프로그램의 어깨를 딛고 있다. ‘절차적 프로그래밍’을 한마디로 표현하자면 ‘goto를 쓰지 말라는 것’이다. ❓왜 goto를 사용하..

🎬 시작 자바는 객체지향 언어이면서 더 근본적으로는 프로그래밍 언어다. 2장에서는 프로그래밍 언어로서의 자바를 살펴보자. 변수가 메모리에 어떻게 저장되고 사용되는지 메서드가 어떻게 호출되고 메모리에 어떤 변화를 일으키는지 또한 객체 지향 프로그래밍과 스프링으로 나아가기 위한 사전 지식을 점검해 보자. ☕️ 자바 프로그램의 개발과 구동 ‘아래 그림’은 자바 프로그램의 개발과 구동과정을 나타낸 것이다. JVM(Java Virtual Machine)의 존재와 역할을 아는 것이 자바 개발 환경을 이해하는 데 필수적이다. JVM은 이름 그대로 가상기계다. 현실 시계에서 컴퓨터를 구동하기 위해 물리적인 컴퓨터인 ‘하드웨어’와 ‘운영체제’, 그리고 그 위에 구동될 ‘소프트웨어’가 필요하고. 거기에 더해 소프트웨어를 ..
❓당신은 CBD, SOA가 어려운가? 🧱 CBD Component Based Devlopment의 약자로, 번역하면 컴포넌트 기반 개발이 된다. CBD는 애플리케이션을 통째로 개발하지 않고, 의미 있는 단위로 구분하여 그 단위를 하나씩 부품으로 개발해 마치 레고 블록을 쌓아 올리듯 부품을 결합해 제품을 완성하자는 방법론이자 기법이다. 제품이 아니다. 🧑🏻🔧SOA Service Orented Architecture의 약자로, 번역하면 서비스 중심 구조 또는 의역하면 서비스 지향 구조라고 할 수 있다. 개발자 입장에서의 개발이 아니라 실제 현실의 업무를 기준으로 개발하자는 사상이다. 제품이 아니다. 👀 그렇다면 이 같은 블록화 개발, 서비스 지형적인 개발이 이전에는 존재하지 않았던 것일까? 분명히 존재했었..
🛠 신기술은 이전 기술의 어깨를 딛고 개발자를 위해 발전한다. 지금까지 기계어, 어셈블리어, C, C++, 자바로 발전해온 프로그래밍 언어 분야에서 기술이 개발자를 어떻게 더 사랑하게 됐는지 살펴봤다. 🤖 기계어 개발자를 사랑하기에는 너무 초장기 기술 탄도의 궤적정도는 계산해 줬다. 🗣 어셈블리어 인간의 언어로 프로그램 작성이 가능하게 해 줬다. 💬 C 하나의 소스로 이기종 간의 이식성을 확보했다. 🧱 C++ 객체 지향 개념을 도입했다. 인간적인 사고의 프로그램 방식이다. ☕️자바 한 번의 컴파일로 이기종 간에 이식성을 확보했다. 포인터에 대한 개념 없이 프로그래밍을 가능하게 했다. 🍃 스프링 프레임 워크 기술이 인간에 대한 완전무결한 사랑을 꿈꾸다! 거대함 속의 단순함과 완벽함. 그리고 유연함! 아주 ..
🧱 C++ 언어 - 정말 인간적인 프로그래밍 방법론, 객체 지향 C++는 C에 객체 지향 개념을 도입함으로써 역사에 한 획을 그은 언어가 됐다. 객체 지향 관련은 추후 3장에서 다루도록 하자. ☕️ 자바 - 진정한 객체 지향 언어 C++은 순수 객체지향 개념의 가장 충실한 언어이지만 여기서 반전은 ‘객체 없이 프로그래밍이 가능하다는 점’이다. 객체 지향 언어의 중심에는 클래스(class)가 있다. 자바에서는 클래스를 떠나 존재할 수 있는 것은 아무것도 없는데 말이다. 주제로 돌아와서 C++은 ‘객체 지향 개념 도입’을 통하여 개발자에게 사랑을 안겼다. 그럼 자바는 어떻게 개발자에 대한 사랑을 실천했을까? 바로 가상 머신(Virtual Machine)이다. Write Once Use Anywhere 컴파일..
💪🏻 C 언어 - 강력한 이식성 / One Source Multi Object USe Anywhere C언어의 등장으로 기계 종류별로 코드를 작성하는 멀티 소스가 아닌. 단 하나의 소스파일인 싱글 소스만 만들면 되었었다. 그 이유인즉슨 “소스파일을 각 기계어에 맞는 컴파일러로 컴파일 시 각 기계에 맞는 기계어 목적 파일이 만들어진다.” 이 부분에서 어셈블리어 프로그래머가 C 언어를 만났을 때의 감동을 간접적으로 느껴졌길 바란다. 하지만 실제로는 그렇게 감동만 하지 않았었다. 운영체제가 하드웨어의 특성을 추상화하고 컴파일러는 운영체제별로 만들어져 공급하하게 된다. 그 운영체제들이 또 나름의 특성이 있었기에 하나의 소스로 각 기종별로 컴파일하기 전에 그 기종에 맞게 소스를 변경하는 작업이 필요했다. C 언어..
🎬 시작 스프링은 과거부터 현재까지 프로그래밍 발전사에서 그 정점에 있다고 해도 과언이 아니다. 스프링을 학습하기 전 과거에 어떤 기술들이 있었고 그 의미를 빠르게 학습해 보도록 하자. 🤖 기계어 - 0과 1의 행진 / 너무나 비인간적인 언어 기계어는 기계가 이해하는 유일한 언어이다. 2진 숫자인 0과 1로만 표현된다. 기계어 코드는 CPU에 따라 다르다. (’ 에드삭 전용’ 기계어 ↔ ’ 유니박 전용’ 기계어 서로 간에 호환 불가) 에드삭(EDSAC) 전용 기계어 : 1 +3 01010101 00000001 00011001 유니박(UNIVAC) 전용 기계어 : 1 + 3 110111100 00011000 10011000 애드삭 : 모리스 월키스 제작, 2진법을 적용한 세계 최초의 프로그램 내장 방식 전..