0. 기초 개발 용어 사전(9)

gyrud02·2021년 8월 5일
0

이론(THEORY)

목록 보기
9/24
출처: (https://www.inflearn.com/pages/weekly-inflearn-12)

[자바(JAVA) 관련 용어]

* MVC(Model-View-Controller) 패턴

-- -> Model : 데이터를 가진 객체, 파라미터로 자주 쓰인다. DB의 테이블과 대응하는 경우가 많다.
-- -> View : UI를 담당한다. 클라이언트 측 기술인 HTML, CSS, JavaScript 등으로 만들어진 컨테이너이다.
-- -> Controller : UI를 통한 사용자의 입력 명령에 응답 및 데이터 흐름 제어를 담당한다.

-- 사용자(User, Client)는 컨트롤러를 사용하여 웹 어플리케이션을 다룰 수 있다. 컨트롤러는 사용자의 요청에 맞는 데이터를 모델에 사용한다(Manipulates). 뷰는 모델이 리턴한 결과를 반영한다(Updates). MVC패턴의 최대 장점은 사용자에게 보여지는 프레젠테이션 영역과 비즈니스 로직, 데이터 구조가 서로 완전히 분리되어 있다는 점이다. 프레젠테이션 영역은 다른 영역에 비해 수정이 매우 잦다는 것을 감안한다면 어느 정도의 장점인지 알 수 있을 것이다.

-- 1) MVC패턴 1 : 비즈니스 로직 영역인 컨트롤러에 프레젠테이션 영역인 뷰를 같이 구현하는 방식이다. JSP에 비즈니스 로직과 프레젠테이션 영역을 함께 구현하는 방식이다. 이 방식은 비즈니스 로직이 복잡하지 않을 때 주로 쓰인다. 1 방식은 빠르고 쉽게 개발할 수 있다는 장점이 있지만 JSP 파일 자체가 너무 비대해지고, Controller와 View가 혼재하므로 향후 유지보수에 어려움을 겪을 수 있다.

-- 2) MVC패턴 2 : 비즈니스 로직 영역인 컨트롤러와 프레젠테이션 영역인 뷰가 분리되어있는 구현 방식이다. 1 방식과는 다르게 디자이너와 개발자의 분업이 가능하며 유지보수에 유리하다. 하지만 설계에서 어려움을 겪을 수 있고, 개발 난이도가 높다는 단점이 있다.

* 가비지 컬렉션(Garbage Colletion)

-- 개발을 하다보면 유효하지 않은 메모리인 가비지(Garbage)가 발생하게 된다. C언어는 free()를 이용하여 직접 메모리를 해제해주어야 하지만 자바, 코틀린은 직접 해체해주는 일이 없다. 그 이유는 JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해주기 때문이다. 대신, 자바에서 명시적으로 불필요한 데이터를 표현하기 위해 일반적으로 null을 선언해준다.

-- [가비지 컬렉션의 공통된 동작 방식]

  • 1) Stop The World : JVM이 애플리케이션의 실행을 멈추는 작업이다. 가비지 컬렉터를 실행하는 스레드를 제외한 모든 스레드들의 작업이 중단되고, 가비지 컬렉터의 실행이 완료되면 작업이 재개된다.
  • 2) Mark and Sweep : Stop The World를 통해 모든 작업을 중단시키면, GC는 스택의 모든 변수 또는 Reachable 객체를 스캔하면서 각각이 어떤 객체를 참고하고 있는지를 탐색하게 된다. 그리고 사용되고 있는 메모리를 식별하는데, 이러한 과정을 Mark라고 한다. 이후에 Mark가 되지 않은 객체들을 메모리에서 제거하는데, 이러한 과정을 Sweep라고 한다.

* 싱글톤 패턴

-- 객체를 단 하나만 생성하여 생성된 객체를 프로그램 어디에서나 접근하여 사용할 수 있도록 하는 패턴을 말한다. 객체 생성 단 한번으로 객체들의 복제와 메모리 낭비를 방지할 수 있으며, 싱글톤으로 만들어진 클래스와 다른 클래스의 인스턴스들의 데이터 공유가 쉽다. 인스턴스가 절대적으로 한개만 존재하는 것을 보증하기에 개발 시 실수를 줄일 수 있으며, 싱글톤 객체를 사용하지 않는 경우 인스턴스를 생성하지 않는다. 싱글톤을 상속시킬 수 있다는 장점이 있다. 하지만 전역변수보다 사용하기가 불편하며, 싱글톤의 역할이 커질술록 결합도가 높아지기 때문에 객체 지향 설계 원칙에 어긋날 수가 있다. 멀티스레드 환경에서는 컨트롤이 어렵다.

* 스레드(Thread)

-- 프로그램을 실행하는 하나의 프로세스(Process) 내에서 실제로 작업을 처리하는 주체를 말한다. 모든 프로세스는 반드시 한 개 이상의 스레드를 가진다.

* 멀티스레드(Multi Thread)

-- 하나의 프로세스(Process)가 두 개 이상의 스레드를 가지는 경우, 프로세스 내에 있는 각각의 스레드가 프로세스 메모리를 공유하기 때문에 자원을 절약할 수 있고, 스레드 간의 정보교환이 쉽다는 장점이 있다. 오늘날 대부분의 최신 운영체제는 멀티스레드 프로그래밍을 지원하며, 시스템 개발, 서버 개발, 응용 프로그램 개발 등 다양한 작업에 쓰이는 기술이다.

수정일자 2021-09-13
profile
Back-End Engineer

0개의 댓글