Library & API & Framework & Engine & SDK
각각의 특징 및 차이점 정리
Library
- 프로그램에서 자주 사용되는 부분을 모아놓은것
- 정적, 동적(링크,로드) 라이브러리로 분류
정적 라이브러리
- 컴파일러가 소스파일을 컴파일 할 때 참조되는 프로그램 모듈
장단점
- 장점: 시스템 환경이 변해도 애플리케이션에 영향이 없음, 완성된 애플리케이션을 안정적 사용가능
- 단점: 사용하는 모든 오브젝트 코드를 실행파일에 내장하기 때문에 메모리에 로드되는 애플리케이션 코드가 커짐
동적 라이브러리
- 프로그램 수행 도중 모듈이 필요할 때 호출해서 사용하는 프로그래밍 모듈
동적 링크 라이브러리
- 실행 파일과 관련된 라이브러리코드를 모두 메모리에 읽어 들여 호출 관계를 조정한다음 어플리캐이션 실행
동적 로드 라이브러리
- 실행 파일 실행시 읽어 들이지 않은 라이브러리를 추가적으로 이용하는 라이브러리
장단점
- 장점 : 애플리케이션을 빌드 할때 존재하지 않았던 라이브러리 사용가능
- 단점 : 플러그인 형식으로 경로 설정, 따로 설치
API
- 응용 프로그램에서 사용할수있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
- 응용 프로그램 간에 연동이나 개념이 많아지자 서로 다른 응용 프로그램 간 기능을 공유할수있도록 개발
- 응용 프로그램과 디바이스를 연결해주는 역활
Framework
- 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스 제공
특징
- 라이브러리와 달리 애플리케이션의 틀과 구조를 결정할 뿐만 아니라, 그 위에 개발된 개발자의 코드를 제어
- 구체적이며, 확장 가능한 기반 코드를 보유하고 있음
- 설계자가 의도하는 여러 디자인 패턴의 집합으로 구성
Engine
- 핵심적이고 본질적인 기능을 수행하는 프로그램
- 한 가지 목적을 위해 공동작용을 하는 일련의 프로그램들에 대해 전반적인 운영을 조정하거나 응용프로그램 내에서 중심적인 기능을 하고 있는 프로그램
Engine 종류
- 검색 엔진 : WWW(world wide web)과 FTP 서버에서 정보를 찾을 수 있도록 만들어진 소프트웨어
- 게임 엔진 : 컴퓨터·비디오 게임 같은 실시간 그래픽 표시 기능을 갖춘 상호 작용 응용 프로그램을 구현하는 핵심 소프트웨어 구성 요소
SDK
- 소프트웨어 개발 도구
- 지금은 의미가 전용되어 API와 거의 같은 뜻