- 프로그래밍에서 특정 운영 체제를 위한 응용 프로그램 표준 구조를 구현하는 클래스(유틸)의 집합 ( 정의된 API를 제공하는 Software library들의 집합 )
- 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미
- Frame(틀, 규칙) Work(일, 소프트웨어의 목적)
- 만들어져있는 규칙에 따라 프로그래밍, 프로젝트의 맞는 프레임워크를 사용해야 함
- 프레임워크는 특정 목적에 맞는 작업을 효율적으로 진행하기 위해 목적에 따라 효율적으로 구조를 짜놓는 개발 방식임
- 하나의 애플리케이션을 구축할 때, 모든 애플리케이션의 공통적인 개발 환경을 제공 : 개발에 필요한 화면구현, DB연동, 개발환경들에 공통적인 부분을 제공
- 설계의 기반이 되는 부분을 기술한 확장 가능한 기반 코드와 사용자가 이 코드를 수정, 확장하는데 필요한 라이브러리 이 두 가지 요소가 통합되어 제공되는 형태
- 프레임워크는 필요한 라이브러리와 기능 구현에 필요한 설계도 틀을 함께 제공
- 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성
- 추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법을 정의
- 컴포넌트들은 재사용이 가능
- 높은 수준에서 패턴들을 조작화 할 수 있음
- 특정 결과를 얻기 위해 만들어둔 함수들의 집합, 공통으로 사용될 수 있는 특정한 기능들을 모듈화 해둔 것 ( 재사용하기 위한 함수들로 구성 )
- 단순 활용가능한 도구들의 집합
- 라이브러리는 프로그램 기능 구현에 도움을 줌
- 프레임워크와 다른점은 개발자가 코드를 컨트롤한다 ( 개발자가 라이브러리를 호출, 프레임워크는 규칙에 따라 코딩을 하니까 프레임워크가 개발자를 호출하는 느낌 )
SDK(Software Development Kit)으로 소프트웨어 개발 도구 모음
SDK 안에는 개발에 도움이 될 개발 도구 프로그램, 디버깅 프로그램, 문서, API 등이 존재
예시를 든다면 나는 일단 무인 카페 어플을 만들고 싶어 -> SDK 를 이용하여 만들었음 -> 이제 무인 카페 어플의 기능을 만들고 싶은데?? -> 프레임워크를 이용하여 정해진 규칙으로 API를 만들었어 -> 해당 API들이나 API를 만들기위해 필요한 파일, 해당 어플의 기능에 필요한 파일들을 모아놓은 소프트웨어 장소. 결국 무인 카페 어플 라이브러리가 구성되었음!
- 프레임워크와 라이브러리의 차이점은 "제어 흐름"의 권한이 어디에 있는가에 따라서 구분
- 라이브러리를 사용할 때 사용자는 애플리케이션 코드의 흐름을 직접 제어
- 프레임워크는 애플리케이션의 코드가 프레임워크에 의해 사용됨. 애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작하기 때문에 제어의 흐름은 프레임워크가 가지고 있고 그 안에 필요한 코드를 작성
- 어떤한 일을 하도록 만들어진 프레임워크에서 제어 권한이 개발자가 아닌 프레임워크에게 위임하는 것을 제어의 역전(Inversion of Control)이라고 함
- 프레임워크는 단지 미리 만들어준 반제품이나, 확장해서 사용할 수 있도록 준비된 추상 라이브러리의 집합이 아니다. 프레임워크가 어떤 것인지 이해하려면 라이브러리와 프레임워크가 어떻게 다른지 알아야 한다
- 라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다. 단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐이다
- 반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다. 프레임워크에는 분명한 [제어의 역전] 개념이 적용되어 있어야 한다.
- 애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작해야 한다.
- 집에서 요리할 때 오븐이나 접시 등 다양한 도구들을 사용할 수 있는데 이러한 것들이 라이브러리. 이 도구들을 이용해서 전체 과정을 직접 처리함
- 반면 레스토랑의 경우 프레임워크의 특징을 가지는데 레스토랑에서도 위에서 언급한 라이브러리들을 이용해서 요리를 만들었을 것이지만 우리는 레스토랑의 요리 과정에 직접 개입할 수는 없음
- 즉, 누가 코드의 주도권을 가지고 있느냐에 차이점이 있음. 개발자는 라이브러리를 사용해서 비지니스 로직을 작성하고 프레임워크는 개발자의 코드(비지니스 로직)을 호출해서 사용
구분 | 프레임워크 | 라이브러리 |
---|---|---|
설명 | 특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공하는 프로그램 | 프로그램을 개발하기 위해 쓰는 공구와 같은 도구들 |
제어의역전 | O | X |
차이점 | 프레임워크는 꼭 써야되는 것과 지켜야되는 룰 존재 | 라이브러리는 개발자가 판단하여 사용 |
- 지바기반의 JSP만을 위한 프레임워크로, 다양한 운영체제에서 활용할 수 있으며, 오픈소스이기 때문에 개발에 필요한 부분을 수정하여 사용할 수 있음. 웹 개발은 보통 프론트엔드 영역과 백엔드 영역으로 나뉘는데, 이를 디자이너의 프론트엔드 영역과 개발자의 백엔드 영역으로 분리해서 개발을 하자는 목적으로 만들어진 기술이 MVC model2. (Model, View, Controller) 이러한 MVC기반으로 나온 프레임워크가 스트럿츠 프레임워크이며 이렇듯 MVC 모델을 이용한 웹 애플리케이션 구축을 매우 용이하기 때문에 초기에 스트럿츠 프레임워크 기반의 개발이 많이 이루어 짐
- 스프링은 엔터프라이즈급 애플리케이션 개발에 필요로 하는 경량형 프레임 워크.
- 프로젝트의 규모가 커질수록 스트럿츠 보다는 스프링 프로젝트가 많이 활용이 되고 있는 추세. J2EE에서 제공하는 대부분의 기능을 지원하기 때문에 JAVA개발에 있어서 대표적인 프레임워크로 자리잡고 있으며 JDBC를 비롯하여 iBatis, 하이버네이트, JPA등 DB처리를 위해 널리 사용되는 라이브러리와 연동을 지원하고 있음. 또한 전자정부 표준프레임워크의 기반이 되는 기술이기 때문에 스프링 프레임워크의 활용도는 더욱 높아지고 있음.
- 오픈소스 프레임워크
- 애플리케이션 프레임워크로 보통 프레임워크는 애플리케이션의 특정 계층에서 동작하는 한가지 기술 분야에 집중하는데 스프링은 이와 다르게 애플리케이션 개발의 전 과정을 빠르고 편리하며 효율적으로 진행하는데 일차적인 목표를 두는 프레임 워크
- 자바스크립트 기반의 프레임워크. 앵귤러 JS는 2012년에 출시되었으며, 기본적으로 MVC (Model-View-Controller) 모델 지원과 같은 다른 웹 어플리케이션 프레임워크에서도 지원하는 기능을 제공. 자바스크립트 또는 제이쿼리로 만든 코드의 길이를 더욱 단순화 할 수 있으며, 직관적으로 소스를 이해할 수 있게 함. 점점 복잡해지고 대형화 되고있는 (클라이언트 사이드 스크립트)를 (MVC 패턴)으로 규격화 함으로 해서 (프로젝트 유지보수) 비용을 최소화 할 수있기 때문에 앵귤러 JS역시 개발자 분들에게 없어서는 안 될 프레임워크
- 작성해야 하는 자바스크립트의 코드량을 줄여준다.
- 앵귤러 JS의 데이터 모델은 단순 자바스크립트 객체이다.
- 재사용이 쉬운 정적인 UI컴포넌트를 만들 수 있다.
- HTML, CSS개발자와 자바스크립트 개발자를 명확하게 분리해 준다.
- 장고프레임워크란 파이썬으로 작성된 오픈 소스 웹 애플리케이션 프레임워크로 쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소로 이루어 짐. 파이썬 프로그래밍 자체가 다른 프로그래밍에 비해 배우기 쉽고 쓰기 편하게 되어 있기 때문에 개발기간을 상당히 단축시킬 수 있음. 장고프레임워크는 그에 수반되는 강력한 라이브러리들을 그대로 사용할 수 있다는 점이 가장 큰 장점.
- MVC 패턴 기반 MTV (기본적으로 Model-View-Controller 를 기반으로 한 프레임워크)
- ORM(Object-relational mapping) 기능 지원
- 쉬운 DB관리를 위해 프로젝트를 생성하면서 관리자기능을 제공
- 쉬운 URL 파싱 기능 지원
- 동일한 소스코드에서 다른 나라에서 용이하도록 번역, 날짜/시간/숫자 등의 포맷 타임존 지정 등의 기능을 제공
22-08-22