프레임워크 (Framework)

 

사전 정의된 규칙 또는 베스트 프랙티스에 따라 설계된 소프트웨어 아키텍처입니다.

개발자가 일정한 틀 안에서 특정 함수나 기능을 확장하거나 구현할 수 있게 돕습니다.

특정 문제를 해결하기 위한 환경을 제공하며, "제어의 역전" 원칙을 따르는 경우가 많습니다.

 

라이브러리 (Library)

 

재사용 가능한 함수, 클래스 또는 컴포넌트의 집합입니다. 개발자는 라이브러리에 있는 기능을 호출하여 필요한 작업을 수행합니다.

 

모듈 (Module)

 

소프트웨어의 독립적인 단위로, 특정 기능을 구현하는 코드의 집합입니다. 코드의 재사용성과 관리를 용이하게 만들기 위해 사용됩니다.

 

공통점

모두 재사용성을 중요하게 생각합니다. 즉, 한 번 작성된 코드나 구조를 다른 프로젝트나 위치에서도 사용할 수 있게 디자인됩니다. 모두 소프트웨어 개발의 효율성과 유지 보수성을 높이기 위한 도구입니다. 각각은 코드나 기능의 집합체로 볼 수 있습니다.

 

차이점

제어의 역전: 프레임워크는 제어의 역전 원칙을 사용하는 경우가 많습니다. 즉, 프레임워크가 애플리케이션의 흐름을 주도하고, 개발자는 프레임워크가 제공하는 확장 포인트에서 코드를 작성합니다. 반면, 라이브러리와 모듈은 개발자가 직접 호출하고 제어합니다.

 

크기와 범위: 일반적으로 프레임워크는 라이브러리나 모듈보다 크고 복잡합니다. 프레임워크는 종종 여러 라이브러리와 모듈을 포함하며, 전체 애플리케이션의 아키텍처나 라이프사이클을 관리할 수 있습니다.

 

독립성: 모듈은 특히 독립적인 기능 단위로 설계되며, 다른 모듈과의 의존성을 최소화하기 위해 노력합니다. 반면, 라이브러리는 여러 모듈의 집합체일 수 있고, 프레임워크는 여러 라이브러리와 모듈을 포함할 수 있습니다.

 

요약

프레임워크는 "어떻게" 개발할 것인지에 대한 방향을 제시하며, 라이브러리는 필요한 기능을 제공하고, 모듈은 특정 기능을 독립적으로 구현합니다. 

'Java' 카테고리의 다른 글

객체 디자인 패턴 DAO, VO, DTO  (0) 2023.10.24
[Java] Generics  (0) 2023.10.03
[Java] StringBuilder 사용법  (0) 2023.10.03
[Java] String, StringBuffer, StringBuilder 차이점과 장단점  (0) 2023.10.03
[Java] Wrapper class  (0) 2023.10.03