나만의 작은 도서관
프레임워크란? (+라이브러리와의 차이점) 본문
프레임워크(Framework)
프레임워크는 소프트웨어 개발을 체계화하고 효율적으로 진행하기 위해 제공되는 구조적 환경을 의미한다. 개발자가 특정 애플리케이션을 개발할 때 필요한 기본 구성 요소, 라이브러리, 규칙을 제공하여, 반복적인 작업을 줄이고 고품질의 소프트웨어를 빠르게 개발할 수 있도록 돕는다. 대표적인 프레임워크로는 다음과 같다.
프레임워크의 종류와 예시
- 웹 프레임워크 : ASP.NET, Django, Flask, Spring, Angular, React.
- 모바일 프레임워크: React Native, Flutter, Xamarin.
- 데스크톱 프레임워크: WPF(.NET Framework), Electron, QT.
- 게임 개발 프레임워크: Unity, Unreal Engine.
- 데이터 처리 및 머신러닝 프레임워크: TensorFlow, PyTorch.
프레임워크와 라이브러리의 차이
아직까지 명확하게 프레임워크와 라이브러리의 구분하는 기준점은 없다. 때때로 두 단어를 혼용하여 사용하기도 한다. 그럼에도 이 둘을 구분하자면 프레임워크와 라이브러리가 가지는 경향의 차이로 구분할 수 있다.
누가 누구를 컨트롤하는가?
프레임워크는 애플리케이션의 구조를 정의하며, 개발자는 정의된 구조의 규칙을 반드시 따라야 한다. 예를 들어, 장고에서 어드민 패널을 만들고 싶다면 admin.py파일을 생성해 그 위에 작성해야한다. 이는 프레임워크가 정의한 규칙이며, 이 규칙을 따르지 않는다면 어드민 패널을 만들 수 없다. 이처럼 프레임워크에서 특정 기능을 사용하기 위해서는 내 맘대로 작성하면 안 되며, 이는 "프레임워크가 개발자가 작성한 코드를 컨트롤하고 있다."라고 볼 수 있다.
반대로 라이브러리는 규칙이 따로 존재하지 않는다. 개발자는 원하는 구조에 맞춰 라이브러리를 선택적으로 사용할 수 있고 라이브러리의 변경 또한 자유롭다. 이를 다르게 말하면 "개발자가 개발자 본인이 작성한 코드를 컨트롤하고 있다."라고 볼 수 있다.
결론
- 프레임워크는 애플리케이션의 구조를 정의하며, 개발자는 정의된 구조의 규칙을 반드시 따라야 한다.
- 반대로 라이브러리는 규칙이 따로 존재하지 않으며, 라이브러리의 선택 및 변경 또한 자유롭다.
- 따라서, 프레임워크와 라이브러리의 차이점은 개발자가 작성한 코드를 컨트롤하는 주체에서 나타난다.
비교 표
특징 | 프레임워크 | 라이브러리 |
컨트롤 주체 | 프레임워크가 흐름을 컨트롤, 개발자가 추가 작업을 수행 | 개발자가 흐름을 컨트롤하고 필요할 때 라이브러리를 호출 |
유연성 | 정해진 규칙과 구조를 따라야 함 | 필요에 따라 원하는 부분만 선택적으로 사용 가능 |
의존성 | 프로젝트 전체가 프레임워크에 종속 | 특정 기능만 의존, 프로젝트 종속성이 낮음 |
사용 목적 | 애플리케이션 전체 구조 설계 | 특정 작업이나 문제 해결 |
예시 | Django, Spring, .NET Framework | NumPy, jQuery, Newtonsoft.Json |
'Common > CS-일반' 카테고리의 다른 글
컴퓨터 구조 #2. 메모리(Memory) (0) | 2024.07.10 |
---|---|
컴퓨터 구조 #1. CPU란 무엇인가? (1) | 2024.07.08 |