프레임워크
- 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대
- 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 어느 정도 뼈대(구조)를 제공하여 이러한 뼈대 위에서 사용자는 코드를 작성하여 개발
- 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 클래스, 메소드 구현
- 예시
- Java 개발의 Spring
- Python 개발의 Diango, Flask
- 안드로드 앱 개발의 Android
- 아이폰 앱 개발의 Cocoa Touch
- 웹 개발의 Angular, Vue.js
라이브러리
- 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임
- 특정 기능을 모와둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구들
- 최근(2022년 6월) 키보드 쇼핑몰 웹 프로젝트에 사용한 자바 라이브러리
- activation, mail - 자바 메일 발송 기능 구현을 위한 라이브러리
- jstl, cos, standard - JSP에 JSTL 기능 구현을 위한 라이브러리
- INIpaySample - 이니시스 카드 결제 기능 구현을 위한 라이브러리
- json-simple - JSON 데이터를 처리하기 위한 자바 라이브러리
- mariadb-java-client - Java와 마리아DB를 연결하기 위한 라이브러리
- 다른 예시
- Python pip로 설치한 패키지/모듈 (tensorflow, pandas, numpy 등)
- C++의 표준 템플릿 라이브러리(STL)
- Node.js에서 npm으로 설치한 모듈
- HTML의 클라이언트 사이드 조작을 단순화하는 JQuery
- 웹에서 사용자 인터페이스 개발에 사용되는 React.js
프레임워크 vs 라이브러리
- 프레임워크와 라이브러리의 차이점은 "제어 흐름"의 권한이 어디에 있는가
- 라이브러리 : 사용자가 애플리케이션 코드의 흐름을 직접 제어
- 애플리케이션 : 프레임워크가 애플리케이션의 흐름을 가지고 있어 사용자가 그 안에 필요한 코드 작성
참고