프레임워크(Framework)
- 프레임워크는 뼈대나 기반구조를 뜻하고, 제어의 역전 개념이 적용된 대표적인 기술입니다.
- 소프트웨어에서의 프레임워크는 ‘소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합’이라 할 수 있으며, 완성된 어플리케이션이 아닌 프로그래머가 완성시키는 작업을 해야합니다.
- 객체 지향 개발을 하게 되면서 통합성, 일관성의 부족이 발생되는 문제를 해결할 방법 중 하나라고 할 수 있습니다.
프레임워크의 특징
- 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성되어 있습니다.
- 추상적인 개념들이 문제를 히결하기 위해 같이 작업하는 방법을 정의합니다.
- 컴포넌트들은 재사용이 가능합니다.
- 높은 수준에서 패턴들을 조작화 할 수 있습니다.
라이브러리(Library)
- 라이브러리는 단순 활용가능한 도구들의 집합을 말합니다.
- 개발자가 만든 클래스에서 호출하여 사용, 클래스들의 나열로 필요한 클래스를 불러서 사용하는 방식을 취하고 있습니다.
프레임워크와 라이브러리의 차이점
-
프레임워크와 라이브러리의 차이는 제어 흐름에 대한 주도성이 누구에게/어디에 있는가에 있습니다.
-
즉, 어플리케이션의 Flow(흐름)을 누가 쥐고 있느냐에 달려 있습니다.
-
프레임워크는 전체적인 흐름을 스스로가 쥐고 있으며 사용자는 그 안에서 필요한 코드를 짜 넣으며 반면에 라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는 것 이라고 할 수 있습니다.
-
다시 말해, 라이브러리는 라이브러리를 가져다가 사용하고 호출하는 측에 전적으로 주도석이 있으며 프레임워크는 그 틀안에 이미 제어 흐름에 대한 주도성이 내재하고 있습니다.
-
프레임워크는 가져다가 사용한다기보다는 거기에 들어가서 사용한다는 관점으로 접근할 수 있습니다.
-
라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어합니다.
-
단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐입니다.
-
반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용되는 것입니다.
-
보통 프레임워크 위에 개발한 클래스를 등록해두고, 프레임워크가 흐름을 주도하는 중에 개발자가 만든 애플리케이션 코드를 사용하도록 만드는 방식입니다.
-
프레임워크는 분명한 제어의 역전 개념이 적용되어 있어야 합니다.
-
애플리케이션 코드는 프레임워크가 짜놓은 틀에서 수동적으로 동작해야 합니다.