티스토리 뷰

Etc

API vs Library vs Framework 차이

os94 2019. 9. 26. 00:12

API(Application Programming Interface)

설명

응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스

대표적인 예

Java API, Google Map API ...

Library(라이브러리)

설명

응용 프로그램 개발을 위해 필요한 기능들을 모아 놓은 소프트웨어

대표적인 예

Apache Commons, Guava, Lombok, jQuery ...

Framework(프레임워크)

설명

응용 프로그램 개발을 수월하게 하기 위해 제공된 소프트웨어 환경

대표적인 예

Spring Framework, Junit, Ruby on Rails ...


각 설명만 보면 무슨 차인가 싶다..

Library vs Framework

Library vs Framework의 차이점은 쉽게 구분할 수 있다.

라이브러리는 응용 프로그램이 능동적으로 라이브러리를 사용한다.
반면 프레임워크는 응용 프로그램이 수동적으로 프레임워크에 의해 사용된다.

즉, Library와 Framework의 차이점은 응용 프로그램의 흐름 주도권을 누가 갖고 있느냐이다.

간단히 프레임워크는 프레임워크란 공장안에 우리가 들어가서 일을 하는 느낌, 라이브러리는 우리가 필요할 때 연장을 가져다 쓰는 느낌에 가깝다.


API vs Library

API, Library와 Framework의 차이는 잘 구분되며 이해됬다.
전자는 필요할때 갖다쓰는 느낌, 후자는 기반기술 위에 우리코드가 얹어지는 느낌으로.

이때 상대적으로, API와 Library의 차이는 다소 애매했다.
주변사람들과 이야기하며 느낀점들은 다음과 같다.

굳이 구분하자면,
API는 외부 서비스를 이용하기위한, 연결 다리의 느낌에 가깝고 (사실, 인터페이스니까)
Library는 tool kit에 가깝다.

이런 차이도 있다.
Library는 우리 gradle에 import된거보면, 내부 코드 까볼 수 있지만
API는 /map/위도&경도 같이 구글맵에 request보내 응답만 받는다.

확실한건, 세 용어가 모두 그렇지만 특히 API는 버즈워드로서 나머지 둘에 비해, 좀더 추상적이고 널리 폭넓게 쓰이는 용어라는 느낌을 받았다.


사실 캡틴의 한마디는 이렇다.
다만, 용어에 갇혀서 너무 구분하려고만 하진 말자
(셋다 buzzWord로서 폭넓게 쓰이기도 하고.,)


주제에서 약간 벗어나서, 오늘 이런 재밌는 토론도 있었다.

자바의 Collections Framework는 왜 프레임워크일까?

왜 라이브러리라고 안할까? 라는 질문이 던져졌다.
이런 저런 의견이 오갔고, 개인적인 내 생각은 이렇다.

콜렉션의 경우 둘 사이에서 애매하긴한데,
자바의 여러가지 자료구조를 제공해주므로 '기반기술'에 좀더 가깝게 보아서 프레임워크라고 부르는게 아닐까.
내가 흔히 썼던 Apache Commons의 StringUtils, FileNameUtils 처럼 좀더 '비즈니스 로직 & 유틸성'을 띄는 것들을 라이브러리로 부르는 느낌.
사실 그냥 내맘대로 콜렉션 라이브러리라고 불러도, 그냥 그거대로 된거 아닌가 싶다. 정답이 있는건 아니니까.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함