라이브러리란 ?
비유 하자면 톱, 망치, 삽 같은 연장(도구) 이다. 사람들이 흔히 도구를 사용하여 썰고, 박고, 땅을 파는 역할과 같다.
도구를 사용하다 보면 급할 때는 톱으로 못을 박을 수 있다. IT 프로젝트 시에 개발자는 도구를 선택하는 입장이기 때문에, 어떤 도구를 사용하든 사용자가 원하는 것을 만들어 줄 수만 있으면 된다.
Framework 란?
차, 비행기, 배 같은 탈것과 같은 운송 수단이다. 사람이 탑승하여 시동을 걸고, 기어를 넣고, 핸들을 작동하고, 운전을 해야한다.
하지만 앞서서 제시한 탈것들은 라이브러리처럼 대체가 어렵다. 이유는 하늘을 날려면 비행기를 타야하고 도로를 달리려면 자동차가 훨씬 유용하다.
바다에서는 배를 타야한다. 애초에 그목적에 맞게 만들어졌기 때문에 톱이나 망치를 가지고 탈 것을 직접 만들 필요를 업게 한다.
다만, 정해진 규칙에 따라 시동을 걸고 기어를 넣고 핸들을 돌리기만 하면 된다. 즉, 라이브러리와는 달리 프레임워크는 이미 프로그래밍할 규칙이 정해져 있음을 말한다.
예를 들어, 개발 시 어떤 태그를 써야 하며 어떤 함수를 추가로 작성해야 하고 소스 파일은 어느 위치에 넣어야 하며 DB 연동을 위해 무엇을 넣어야 하는지 정해져 있다.
보통 이런 류의 작업은 프레임워크가 하고자 하는 일에 비하면 아주 작은 일이며, 극히 일부분만 조정함으로써 목적을 달성 할 수 있다.
앞서 비유한 프레임워크의 사전적 정의는 다음과 같다.
프로그래밍에서 특정 운영 체제를 위한 응용 프로그램 표준 구조를 구현하는 클래스와 라이브러리 모임(간단하게 프레임워크라고 부른다.)
FRAME 프레임(툴, 규칙or법칙) + WORK 워크(일, 소프트웨어의 목적) 모든 소프트웨어는 각기 다른 프레임워크를 구축하기 마련이고, 프레임워크마다 “존재하는 이유(목적)”이 있다.
프레임워크는 목적에 따라 효율적으로 구조를 짜놓는 개발 방식이라고 이해 할 수 있다.
Framework 종류
-
스트럿츠 프레임워크(STRUTS Framework)
자바기반의 JSP만을 위한 프레임워크로 다양한 운영체제에서 활용 할 수 있으며, 오픈소스이기 때문에 개발에 필요한 부분을 수정하여 사용 할 수 있다.
웹 개발은 보통 프론트 엔드 영역과 백엔드 영역으로 나뉘는데, 이를 디자이너의 프론트엔드 영역과 개발자의 백엔드 영역으로 분리해서 개발을 하자는 목적으로 만들어진 기술이 MVC model2이다. (Model, View, Controller) 이러한 MVC 기반으로 나온 프레임워크가 스트럿츠 프레임워크이며 이렇듯 MVC 모델을 이용한 웹 애플리케이션 구축이 매우 용이하기 때문에 초기에 스트럿츠 프레임워크 기반의 개발이 많이 이루어 졌다.
-
스프링 프레임워크(Spring Framework)
스프링프레임워크란 엔터프라이즈급 애플리케이션 개발에 필요로 하는 경량형 프레임워크이다. 프로젝트의 규모가 커질수록 스트럿츠 보다 스프링 프로젝트가 많이 활용이 되고 있는 추세이다. J2EE에서 제공하는 대부분의 기능을 지원하기 떄문에 JAVA 개발에 있어서 대표적인 프레임워크로 자리잡고 있으며 JDBC를 비롯하여 Mybatis, 하이버네이트, JPA등 DB 처리를 위해 널리 사용되는 라이브러리와 연동을 지원하고 있다. 또한 전자정부 표준프레임워크의 기반이 되는 기술이기 때문에 스프링 프레임워크의 활용도는 더욱 높아지고 있다.
스프링 프레임워크 특징
- 경량컨테이너로 라이프사이클을 관리하고 필요한 객체를 스프링으로부터 받아온다.
- DI지원하여 객체간의 의존관계 설정이 가능하다.
- AOP를 지원한다.
- POJO 방식으로 자바객체는 특정한 인터페이스를 구현하고 클라스 상속이 필요치 않다.
- 트랜젝션 처리를 위한 일관된 방법을 제공한다.
- 영속성 관련 다양한 API를 지원한다
- API 연동을 지원한다.
-
앵귤러 JS(AngularJS)
자바스크립트 기반의 프레임워크이다. 앵귤러 JS는 2012년에 출시 되었으며, 기본적으로 MVC(Model-View-Controller) 모델 지원과 같은 다른 웹 어플리케이션 프레임워크에서도 지원하는 기능을 제공한다.
자바스크립트 또는 제이쿼리로 만든 코드의 길이를 더운 단순화 할 수 있으며, 직관적으로 소스를 이해할 수 있게 된다. 점점 복잡해지고 대형화 되고있는 클라이언트 사이드 스크립트를 MVC패턴으로 규격화 함으로 해서 프로젝트 유지보수 비용을 최소화 할 수 있기 때문에 앵귤러 JS역시 개발자 분들에게 없어서는 안될 프레임워크인듯 하다.
앵귤러 JS 특징
- 작성해야 하는 자바스크립트의 코드량을 줄여준다.
- 앵귤러 JS의 데이터 모델은 단순 자바스크립트 객체이다.
- 재사용이 쉬운 정적인 UI컴포넌트를 만들 수 있다.
- HTML, CSS개발자와 자바스크립트 개발자를 명확하게 분리해 준다.
-
장고 프레임워크
장고 프레임워크란 파이썬으로 작성된 오픈 소스 웹 애플리케이션 프레임워크로 쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성 요소로 이루어져 있다. 파이썬 프로그래밍 자체가 다른 프로그래밍에 비해 배우기 쉽고 쓰기 편하게 되어 있기 때문에 개발 기간을 상당히 단축 시킬 수 있다.
장고 프레임워크는 그에 수반되는 강력한 라이브러리들을 그대로 사용할 수 있다는 점이 가장 큰 강점이라고 볼 수 있다.
- MVC 패턴 기반 MTV(기본적으로 Model-View-Controller 를 기반으로 한 프레임워크)
- ORM(Object-relational mapping) 기능 지원
- 쉬운 DB관리를 위해 프로젝트를 생성하면서 관리자 기능을 제공
- 쉬운 URL 파싱 기능 지원
- 동일한 소스코드에서 다른 나라에서 용이하도록 번역, 날짜/시간/숫자 등의 포맷 타임존 지정 등의 기능을 제공