면접을 볼 때마다 느끼는 나의 기본기 부족.. ㅎ
대락 이런거지~ 라는 정도를 머릿속으로는 알아도 이걸 남에게 설명하는 것은 쉽지 않다 ㅜㅜ
초등학교때부터 했던 생각이지만 역시 누군가에게 전달할 수 있어야만 해당 부분에 대해 제대로 안다고 할 수 있는 것 같다.
그리고 누군가에게 알려주는 것은 스스로의 공부에도 큰 도움이 된다!
그래서 오늘 얘기해볼 내용은 아래의 것들이다
프레임워크(Framework), SDK, 라이브러리(Library), 플러그인(Plug-in), API
딥한 내용은 차차 생각하고.. 우선 간단한 개념과 기본적인 내용을 제대로 알아보고자한다...!
정의
- 프레임워크(Framework)
: 영어로 검색해보면 뼈대, 틀이라는 뜻을 지니고 있으며, 프로그램을 개발하기 위한 틀이라고 할 수 있다.
: 프로그램 개발을 편하게 할 수 있도록 환경을 구성하여 제공한다.
: 개발에 필수적이고 표준적인 설계나 구현을 재사용 가능하도록 제공한다 (설계,구현-라이브러리, API 등...)
- SDK
: Software Development Kit의 약자로 해석하면 소프트웨어 개발 키트이다
: 소프트웨어 개발에 도움이 되는 다양한 소스(Source)와 도구 패키지를 모아둔 것
: 일반적으로 컴파일러, 디버거, API 등이 포함되며, 라이브러리/편집기/드라이버 등도 포함될 순 있다
- 라이브러리(Library)
: 개발을 진행할 때 특정한 부분/분야의 기능을 수행할 수 있도록 구성한 도구 모임
: 해당하는 분야의 기능들을 위해 함수나 클래스 등의 단위로 코드를 재사용 할 수 있게 모아두었다
- 프레임워크(Framework)
: 영어로 검색해보면 뼈대, 틀이라는 뜻을 지니고 있으며, 프로그램을 개발하기 위한 틀이라고 할 수 있다.
: 프로그램 개발을 편하게 할 수 있도록 환경을 구성하여 제공한다.
: 개발에 필수적이고 표준적인 설계나 구현을 재사용 가능하도록 제공한다 (설계,구현-라이브러리, API 등...)
- 플러그인(Plug-in)
: 기존의 프로그램에 특정 기능 추가하기 위해 만든 요소
: 자주 사용할만한 특정 기능을 그때 그때 찾아서 사용할 수 있도록 만들어둔 컴포넌트
- API
: Application Program Interface의 약자로 특정 기능을 사용하기 위해 프로그램 내에서 정의하는 규약이다
: 프로그램이 다른 시스템과 소통 혹은 다른 시스템의 기능을 이용하기 위해 사용하는 언어 혹은 메세지 형식을 의미한다
예시 및 종류
- SDK
분류 | |
예시 | Flutter, 안드로이드 SDK, Java JDK, 카카오 SDK, Google SDK 등.. |
- 라이브러리(Library)
분류 | |
예시 | React, RxSwift, RxJava, import하여 사용하는 클래스 |
- 프레임워크(Framework)
분류 | Front-end | Back-end | Full-Stack |
예시 | Vue.js, Angular, React Native | Spring, Spring Boot | .NET |
- 플러그인(Plug-in)
분류 | |
예시 | 부가적으로 특정 기능을 편리하게 사용하기 위해 설치할 수 있도록 구현됨 |
- API
분류 | |
예시 | 네이버/카카오에서 지도, 검색과 같이 해당 기능을 사용할 수 있도록 제공해주는 오픈API |
차이점
- 라이브러리 VS 프레임워크
라이브러리 | 프레임워크(Framework) |
제어권(코드 흐름)이 사용자에게 있다. 동작 중 필요한 기능을 직접 사용하는 형식이다. |
프레임워크에 맞추어 코드를 구현하여 동작한다. 코드가 프레임워크에 의해 사용되는 형식이다. |
- 플러그인 VS API
플러그인(Plug-in) | API |
모듈화된 개체를 직접 프로그램 내부에 설치해야 사용할 수 있다. | 호출을 통해 외부에서 기능을 수행하고 결과를 전달받을 수 있다. |
개념적 크기 비교
SDK < 라이브러리(Library) = 프레임워크(Framework) < 플러그인(Plug-in) = API
개념적으로 다른 부분들이 많으나, 크기만을 생각하여 비교하자면 위와 같은 순서가 되지 않을까 싶다.
참고사이트
- https://www.redhat.com/ko/topics/cloud-native-apps/what-is-SDK
- https://doozi0316.tistory.com/m/entry/%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%ACFramework-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%ACLibrary-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8Plug-in-%EB%AA%A8%EB%93%88Module%EC%9D%98-%EC%B0%A8%EC%9D%B4
- https://doozi0316.tistory.com/entry/SDK-API%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90
- https://cocoon1787.tistory.com/745
'EXPERIENCE > ETC' 카테고리의 다른 글
ICC, ICM Profile이란? Color Profile에 대해 알아보자 (0) | 2023.08.13 |
---|---|
ARC, RxSwift, Combine 설명할 수 있을 때까지! (with. 차이점) (0) | 2023.02.02 |
구글 로그인(Google Login) OAuth 동의화면 앱 이름 및 정보 변경 (0) | 2023.01.26 |
[SourceTree/Github] 소스트리 원격 저장소 연결하기 (with. repo Token) (0) | 2023.01.10 |
검색엔진(Google, Naver)에 내 글 또는 티스토리 사이트 노출시키기 (with. RSS, sitemap) (0) | 2022.12.29 |