에이전트 오브 쉴드의 용어에 대한 내용은 에이전트 오브 쉴드 문서
의
프레임워크 부분을
참고하십시오.모듈형 노트북 브랜드에 대한 내용은 Framework 문서 참고하십시오.
1. 개요
Framework어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조로, 소프트웨어 개발에 있어 하나의 뼈대 역할을 한다.
2. 라이브러리와의 차이점
읽기 전에 답부터 이야기하면 둘의 차이를 엄밀히 말하는 건 불가능에 가깝다. 여러 사이트들의 설명[1]들은 학술적으로는 의미가 없는 내용이다. 해외의 유명한 개발책들을 읽어도 갑론을박이 활발한 것을 알 수 있다. 아래의 설명을 읽을 때 대략 이런 경향이 있다로 이해를 해야지 단순하게 라이브러리는 무엇이고 프레임워크는 무엇이다 같은 이야기를 면접 때 한다면 매우 불리해질 것이다.[2][3]보통 프레임워크라고 하면 여러 기능을 가진 클래스와 라이브러리가 '특정 결과물을 구현하고자' 합쳐진 형태라고 볼 수 있다. 따라서 프레임워크는 라이프 사이클이나 일종의 상태를 가지며 대부분의 프레임워크들은 다양한 기능들을 지원하기 위해 많은 라이브러리들을 가지고 있다. 다만 이 분류법도 예외가 있다.
메서드 및 클래스화, 즉 모듈화를 하는 이유 중 하나가 재사용성인데, 프레임워크는 이 재사용성을 큰 그룹 단위로 묶어주었다고 보면 된다. 재사용 가능한 수많은 클래스들과 라이브러리들을 융합한 채로 처음부터 제공해 주기 때문에, 여러 개의 표준을 만들지 않아도 돼서 개발자의 피곤함을 덜어준다.
예를 들어, 웹 프레임워크는 '웹 서버'를 구현하기 위한 목적으로 만들어진 프레임워크다. 웹 서버를 구현하기 위해선 페이지 구현, DB 관리, 유저 인증, API 서버, 라우팅, 사이트맵, 세션 관리 등 여러 기능이 들어있어야 할 것이다. 각 기능을 보유한 라이브러리들을 한데 묶어 담은 것이 바로 프레임워크라고 보면 된다.
현재는 만든 사람이 라이브러리라고 하면 라이브러리이고 프레임워크라고 하면 프레임워크로 굳는 분위기이다.
3. 종류
- Spring: Java의 웹 프레임워크
- Apache 시리즈 (Sling, Structs 2, Wicket 등)
- JWT
- Django: Python의 웹 프레임워크
- Flask: Python의 마이크로 웹 프레임워크
- Ruby on Rails: Ruby의 웹 프레임워크
- Laravel, Codeigniter, CakePHP, Symfony, Zend: PHP의 웹 프레임워크
- Bootstrap: 트위터의 JavaScript 기반 웹 프레임워크
- .NET Framework
- Qt
- Node.js의 Express.js, NestJS, meteor 프레임워크
- 웹 프론트엔드의 SPA용 프레임워크 ( Angular, Vue.js 등)
- Play: 함수형 언어 Scala의 웹 프레임워크
- 안드로이드: 안드로이드 애플리케이션용 프레임워크
- Cocoa: iOS, macOS 애플리케이션용 프레임워크
- ALSA
- Electron
- 퀘이사
- INTARFRM: 후지쯔에서 사용하는 .NET 기반의 다용도 프레임워크. VB.NET, C# 혹은 Java 중 선택하여 앱을 개발할 수 있다.
4. 관련 문서
[1]
이는 나무위키도 포함한다.
[2]
보통 FE 프레임워크로 자주 예시를 드는 게 Vue와 React이고 둘은 일반적으로 우리가 이야기하는 프레임워크 정의에 완벽하게 부합하지만 Vue는 본인을 프레임워크라고 소개하고 React는 본인을 라이브러리라고 소개한다.
[3]
또한 유닛 테스트를 보통 우리는 프레임워크라고 부르는 경향이 있는데 언어마다 유닛 테스트를 어떤 관점으로 보는지 또한 완전 다르다.