프레임워크
(♥ 0)
분류
의 프레임워크 부분을
참고하십시오.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중 선택하여 앱을 개발할 수 있다.