-
API vs 라이브러리 vs 프레임워크TIL 2021. 2. 1. 14:01
API, 라이브러리, 프레임워크는 공부하다 보면 정말 수도 없이 보고 듣게 되는 말이다. 하지만 이들의 차이점과 역할을 말해보라 한다면 뭐라고 말을 할 수가 없어 정리를 하려고 한다.
라이브러리
응용 프로그램 개발을 위해 필요한 기능을 모아 놓은 소프트웨어이며,
그 기능에 대한 도구 또는 함수들의 집합이라고 할 수 있다.
○ 프로그래머가 어떠한 기능을 수행하기 위해 도움을 주는 또는 필요한 것을 제공해주는 역할을 하는 것.
○ 라이브러리는 재사용이 필요한 기능으로 반복적인 코드 작성을 없애기 위해 언제든지 필요한 곳에서 호출하여 사용할 수 있도록 Class나 Function으로 만들어진다.
○ 프로그램을 만들때 기존에 만들어진 함수들을 재활용함으로써, 프로그램의 제작 시간과 노력을 줄일 수 있다. 그리고 필요한 함수만 호출하여 사용할 수 있다.
○ 독립성을 가지고, 응용 프로그램이 능동적으로 라이브러리를 사용한다.
좀 더 직관적인 이해를 위해, 간단한 예시를 들어보겠다. 이 블로그 의 라이브러리 예시를 보고, 라이브러리에 대한 정리가 되어서 한번씩 참고해 보면 좋겠다.
위 블로그의 일부를 인용하면,"big_integer 클래스의 생성자의 인자와, add 함수의 인자 및 리턴 타입 등 big_integer 클래스를 사용하기 위한 메소드 프로토타입들은 이 C++ big_integer 라이브러리의 'API'가 된다." 다음은 이 API라는 것에 대해 알아보도록 하자.
API(Application Programming Interface)
○ 직역하자만 응용 프로그램을 만드는데 사용되는 interface이다. 여기서 interface란 사물간, 사람간, 또는 사람과 사물간에 상호작용을 할 수 있도록 연결해주는 장치, 방법, 형식, 공간 등을 통칭한다.
○ Application Programming Interface 즉, API는 응용 프로그램을 만드는데 필요한 연결 장치, 매개체라고 할 수 있다. 이러한 연결 장치, 매개체가 필요한 이유는, 실제 개발을 할 때 혼자 모든 것을 개발할 수는 없기 때문이다.
○ 예를 들어 우리가 웹 페이지에 경고창을 띄우려고 한다면, 'alert()'를 호출해 사용한다. 이때 우리가 경고창을 한번 띄울때마다, 'alert()'와 동일한 동작을 하는 코드를 모두 작성하는 것을 생각해보라. 정말 끔찍한 일이 아닐 수 없다. 그래서 우리는 API를 사용하는 것이다. 여기서 'alert()'도 API 중 하나이다.
○ 라이브러리와 API를 혼동하지 않도록 주의하자! 실제 개발을 할 때는 여러 컴포넌트를 합쳐서 개발을 하게 되고, 각각의 컴포넌트들은 API를 가지고 있습니다. 이때 많은 컴포넌트들이 라이브러리의 형태로 제공되기 때문에 API와 라이브러리는 혼동할 수 있다. 하지만, 라이브러리는 컴포넌트 자체를 의미하고, API는 그 컴포넌트를 활용하기 위한 규약이다.
○ An API is defined as a specification of possible interactions with a software component. Well, imagine that a car was a software component. Its API would include information about what it can do—accelerate, brake, turn on the radio, etc. It would also include information about how you could make it do those things. For instance, to accelerate, you put your foot on the gas pedal and push.
API는 소프트웨어 구성 요소(컴포넌트)와의 가능한 상호 작용 사양으로 정의됩니다. 예를 들어, 자동차를 소프트웨어 구성요소(컴포넌트)라고 생각해봅시다. 여기서 API는 자동차가 '할 수 있는 것' (가속, 브레이크, 라디오를 켜는 법 등)에 대한 정보를 포함할 수 있습니다. 또한 이러한 작업을 수행 할 수있는 방법에 대한 정보도 포함됩니다. 예를 들어, 가속하기 위해서는, 당신은 당신의 발을 가스 페달에 두고 눌러야합니다.
○ API의 예시나 문서들을 더 자세히 살펴보고싶다면, OpenJDK API Documentation 을 참고하도록 하자.
프레임워크
○ 뼈대나 기반구조라는 뜻. 응용프로그램이나 소프트웨어 구현을 수월하게 하기 위해 제공된 소프트웨어 환경이다.
○ 프레임워크만으로 실행되지 않고, 기능을 추가해야하며, 프레임워크에 의존하여 개발해야하고, 프레임워크가 정의한 규칙을 준수해야한다.
○ 프로그래밍을 진행할 때 필수적인 코드, 알고리즘 등과 같이 어느 정도 구조를 제공해주기 때문에 프레임워크를 사용하는 프로그래머는 이 프레임워크 뼈대 위에서 코드를 작성하여 프로그램을 개발하면 됩니다.
○ 프레임워크는 완성된 제품이 아닌 완성된 제품을 만들기 위해 개발자를 도와주는 또는 기반이 되는 역할을 한다. 즉, 소프트웨어의 특정 문제를 해결하기 위해 상호 협력하는 클래스와 인터페이스의 집합.
예 : Spring, Django, Node.js
라이브러리 vs 프레임워크
○ 차이점 : 흐름을 누가 가지고 있는가의 차이이다. 프레임워크는 전체적인 흐름을 자체적으로 가지고 있어 프로그래머는 그 안에서 필요한 코드를 작성한다. 반면에 라이브러리는 프로그래머가 전체적인 흐름을 가지고 있어 라이브러리를 자기가 원하는 기능을 구현하고 싶을 때 가져다 사용할 수 있다. 프레임워크는 가져다 사용하는 개념보다는 프레임워크라는 특정 공간에 들어가서 사용한다는 느낌이 더 강하다.
라이브러리는, 내가 직접 라이브러리를 호출해서 사용한다. 예를 들어, 시험 평균 점수를 구하고자 한다면, 아래와 같이 내가 필요한 시점에 라이브러리를 호출해서 사용한다.
double average = library.calculate(scores);
아래와 같이 내가 필요한 시점에 라이브러리를 호출해서 사용한다.
프레임워크는 이와 달리, 프레임워크가 나를 호출하는 방식으로 동작한다.
지금까지 API, 라이브러리, 프레임워크와 그 차이에 대해 공부했다. 생각보다 너무 모호한 개념들이 많고, 모르는 내용이 많구나 절감했다. 특히 인터페이스...는 정말 두루뭉술한 개념같다. Java를 배울때부터 늘 느끼던 것이었는데, 몇 년이 지난 지금까지도 여전히 그렇게 느끼고 있다. 그래서 다음에는 이 인터페이스에 대해 공부해야겠다. 이상 API vs 라이브러리 vs 프레임워크 포스트 끝.
________________________________________________________________________________________________________
참고자료
프레임워크와 라이브러리의 차이
안녕하세요, 오늘은 프로그래밍을 할 때 자주 이용되는 위의 두 가지에 대해서 이야기하려고 합니다. 저를 포함한 많은 사람들이 프레임워크와 라이브러리의 차이에 대해서 잘 모르고 계셔서
juyeop.tistory.com
www.infoworld.com/article/3269878/what-is-an-api-application-programming-interfaces-explained.html
What is an API? Application programming interfaces explained
Application programming interfaces hide complexity from developers, extend systems to partners, organize code, and make components reusable
www.infoworld.com
An Ontology: Component vs Class vs Object vs Service vs Application vs Process vs Library, etc
Trying to write something that covers a few computing topics, but remains short and copy/pasteable. If for nobody else, then I’ll use it client work going forwards (subject to community corrections - pls email me) Process - Appears in ‘ps’ (Linux), A
paulhammant.com
API vs 라이브러리 vs 프레임워크
api, 라이브러리, 프레임워크의 차이점을 알아보자
velog.io
라이브러리, 프레임워크, API, ABI 뜻 비교 정리
---------------------------------------------------------------------------------------- - 이 글은 2020-01-08에 마지막으로 수정되었습니다. - 글 상에 오류나 틀린 내용이 있을 수 있습니다. - 잘못된 내..
eine.tistory.com
steemit.com/kr/@yahweh87/it-api
[IT용어] API란 무엇인가? — Steemit
안녕하세요. 어미새입니다. 정말 오랜만에 스팀잇에 포스팅을 진행하는것 같습니다. 개인적으로 바쁜 일상을 보내고 있다보니, 1일 1포스팅이 아닌 1주 1포스팅도 어려운 상황이었습니다. 다시
steemit.com