1.2 Understanding frameworks and containers

1.2.1 What is a framework?

  • WebWork를 만든 Rickard Oberg 는 "프레임워크의 힘은 무엇을 가능하게 하느냐가 아니라, 무엇을 제약하느냐에서 나온다" 라고 말했다.
  • 웹어플리케이션 프레임워크의 목적은 기반 클래스와 태그라이브러리를 제공하여, 수많은 JSP파일이 난잡하게 엉킬 가능성을 피하게 하는 것 이다.
  • 프레임워크가 없으면 혼돈상태가 되어버리고, 그 반대로, 프레임워크가 너무 많은 것을 제약하면 어플리케이션을 제대로 만들 수 없게 된다.
    양 극단의 중간 어딘가에 적당한 지점이 있을 것이며, 그것이 WebWork나 다른 MVC프레임웍이 찾고자 하는 것이다.

1.2.2 What a container can do

  • Tomcat, Orion, Resin, WebLogic, WebSphere 등등 많은 서블릿 컨테이너들이 있다.
  • 이것들은 비용, 성능, 지원기능 등에서 서로 다르다. 그리고 각각의 컨테이너는 자신만의 고유한 기능을 제공한다.
  • 컨테이너는 자신만의 고유한 기능을 수행하는 코드를 제공한다는 것이다. 더 많은 유용한 기능을 제공할수록, 더 좋은 컨테이너이다.
  • 서블릿 컨테이너는 스펙에 정의되거나 컨테이너 개발자가 추가한 기능을 제공한다.
  • 컨테이너란 어떤 컴포넌트들을 자신의 위에 위치시키거나 포함해서 향상된 기능을 제공하는 컴포넌트를 컨테이너라고 한다.
  • WebWork는 프레임웍이면서 컨테이너다. 자세한 내용은 6장 "Inversion of Control" 에서 보여줄것이다.

※ 아래 내용은 마이크로소프트웨어 기사 성공적인 프로젝트를 위한 프레임워크의 재발견 참고 하였습니다.

프레임워크 vs 라이브러리

  • 프레임워크의 가장 대표적인 특징 중 하나는 그 안에 클래스 라이브러리를 가지고 있다는 것이다
  • 프레임워크를 반제품이라고 설명하기도 한다. 개발해야 할 애플리케이션의 일부분이 이미 만들어져 있다는 뜻이다.
  • 프레임워크를 이용한 개발은 결국 그 기반이 되는 이미 존재하는 부분을 확장하고 이용하는 것이라고 볼 수 있다.
  • 여기까지는 프레임워크와 라이브러리를 비슷하게 생각 할 수 있다. 하지만 프레임워크와 라이브러리는 다르다.
  • 프레임워크는 주로 프레임워크 쪽에서 사용자의 코드를 호출하는 구조로 동작한다.
    실행의 흐름에 대한 제어를 프레임워크가 담당하게 된다.
  • 결과적으로 사용자의 코드는 프레임워크 클래스에 이미 설계되어있는 흐름구조에 따라 동작하게 된다.
  • 프레임워크의 동작원리를 그 제어흐름 일반적인 프로그램 흐름과 반대로 동작한다고 해서 \*IoC(Inversion of Control)*라고 설명하기도 한다
  • 라이브러리는 유저의 코드가 라이브러리를 호출해서 사용하는 구조로 되어있다. 즉 코드의 흐름을 유저코드가 관장하고 있는 것이다.

프레임워크 = 디자인 패턴 + 라이브러리

  • 디자인 패턴과 마찬가지로 프레임워크는 반복적으로 발견되는 문제를 해결하기 위한 특화된 솔루션이라고 이해할 수 있다.
  • 디자인 패턴은 프레임워크의 핵심적인 특징이고 프레임워크를 사용하는 애플리케이션에 그 패턴이 적용된다는 특징을 가지고 있다.
  • 프레임워크는 디자인 패턴과 그것이 적용된 기반 라이브러리의 결합으로 이해할 수 있다.

문서에 대하여

  • 이 문서의 내용은 Webwork In Action 교재를 스터디 하면서 정리한 내용 입니다.
  • 최초작성자 : 김정식
  • 최초작성일 : 2007년 9월 12일
  • 이 문서는 오라클클럽 자바 웹개발자 스터디 모임에서 작성하였습니다.
  • 이 문서를 다른 블로그나 홈페이지에 퍼가실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^