[ 프레임워크 ]
- 프로그램이 동작하는 기본 뼈대(Frame)를 제공
- IOC (제어의 역전), 라이브러리, 디자인 패턴을 구현
[ 라이브러리 ]
- 특정 기능(알고리즘)을 미리 구현한 소스코드의 집합
프레임워크는 프로그램이 실행되는 기본 구조, 즉 뼈대를 미리 설계해둔 것을 말합니다. 단순화해서 생각해보면 인터페이스의 개념이 확장된 것이라고 생각합니다.
예를 들어 여러 명이 하나의 프로젝트를 시작한다면, 시작에 앞서 프로그램의 동작 구조를 먼저 설계해야 합니다. 주로 사용되는 방법 중 하나가 각 모듈별 기능을 수행할 인터페이스를 만들어두는 것입니다. 각 개발자는 지정된 인터페이스의 구조대로 필요한 로직을 짜게 됩니다. 또한 DB연결과 같이 프로그램 내 어디서든 공통적으로 적용돼야 할 코드도 미리 작성해둡니다. 이렇게 구조적인 설계가 완료됐다면 여러 개발자가 같은 기준과 미리 만들어둔 공통 기능을 가지고 안의 내용물만 열심히 만들어주면 됩니다.
위의 작은 예시를 확장해서 프로그램 전체의 동작 흐름과 일련의 기준, 공통적으로 적용할 로직(코드)을 미리 만들어둔 것을 프레임워크라고 합니다. 우리가 자바에서 코드를 작성할 때 첫 시작은 무조건 main함수에서 시작해야 하는 것도 프로그램 실행 구조가 그렇게 정해져있기 때문인데, 비슷한 개념이라고 생각하면 될 것 같습니다. 개발자는 정해진 형식에 맞게 로직만 잘 짜서 프레임워크에 던져주면 알아서 잘 실행하는 것이죠.
흔히 보이는 제어의 역전과 같은 어려운 말도, 결국엔 프레임워크에서 전반적인 동작 구조를 미리 완성시켜놨기 때문에 개발자가 굳이 신경쓰지 않아도 될 부분을 프레임워크에서 대신 제어해준다는 의미로 해석하면 됩니다. 원래 개발자가 한땀한땀 제어하던 것을 프레임워크가 알아서 대신 제어해준다는 것이죠.
라이브러리는 우리가 흔히 사용하는 누군가 짜둔 코드의 집합입니다. 자바가 가지고 있는 기본 라이브러리(API)를 사용할 수도 있고, 다른 누군가 만들어둔 라이브러리를 가져다가 그대로 사용하기도 합니다. 또는 직접 필요한 기능들을 클래스에 구현해 모아둔 것도 일종의 라이브러리입니다. 일반적으로 라이브러리는 다른 사람들이 가져다가 사용할 수 있도록 잘 정리해둔 코드들의 집합을 의미합니다.
따라서 프레임워크도, 라이브러리도 프로그램 개발에 있어 필수적인 요소는 아닙니다. 능력이 출중한 개발자라면 처음부터 끝까지 직접 개발하면 됩니다. 하지만 프레임워크와 라이브러리를 사용하면 개발 시간이 극도로 단축될 수 있습니다. 구조와 기준, 공통 기능의 구현은 이미 프레임워크에서 되어 있고, 안의 내용물을 채울 때는 남이 구현해둔 코드를 사용함으로써 보다 효율적으로 프로그램을 완성할 수 있게 되는 것입니다.
제가 볼 때 개발 뿐만 아니라 거의 모든 편집 프로그램은 프레임워크라고 볼 수 있을 것 같습니다. 예를 들어 우리가 문서작성을 할 때 쓰는 한글과컴퓨터도 문서 작성의 프레임워크입니다. 우리는 프로그램 안에서 정해진 규칙에 따라 내용물만 넣으면 되고, 제공되는 옵션에서 설정값들을 이리저리 바꿀 수도 있습니다. 하지만 프로그램에서 제공하지 않는 세모난 문서를 만든다거나 특대형 페이지를 만들어서 인쇄할 수도 없습니다. 동영상을 만들 수도 없습니다. 문서의 내용물과 몇 가지 설정값 외에는 모두 프로그램에서 알아서 만들고 변경하고 삭제하죠. 이게 바로 프레임워크의 역할이라고 보면 됩니다. 그안에서 도형 삽입, 텍스트 정렬 등의 부가 기능들은 라이브러리인 것이죠.
'▸Spring MVC > 기본 상식' 카테고리의 다른 글
스프링 의존 주입(DI)과 인터페이스 사용에 관하여 (4) | 2020.04.23 |
---|---|
스프링(Spring) MVC 동작 구조 및 스프링 컨테이너 (4) | 2020.03.15 |
스프링(Spring) 프로젝트의 폴더 구조 (3) | 2020.03.06 |
스프링(Spring)과 메이븐(Maven) (0) | 2020.03.05 |
댓글