플랫폼, 프레임워크, 라이브러리, API에 대한 이해

조회수 11002회

제목에 적은 저 단어들에 대한 개념이 정확하지 않고, 블로그들을 검색해봐도 뭔가 확 오는 것이 없어서 이렇게 질문올립니다 ㅠ

일단 제가 이해한 것까지 적어보면 (저는 안드로이드를 공부하고 있으므로 안드로이드를 기준으로 예시를 들면서 설명해보겠습니다.)

플랫폼 - 안드로이드 자체가 플랫폼이라고 생각합니다. 음... 아이폰이면 아이폰? 컴퓨터는 윈도우와 맥 등이 있는 것 처럼? 전문적인 용어를 사용하면서 설명을 못하겠네요.....ㅠㅠㅠㅠㅠㅠ

프레임워크 - 플랫폼에 대한 것을 개발할 때 사용하는 도...구? 안드로이드는 안드로이드 스튜디오와 이클립스?가 있을 거고, 웹으로는 스프링프레임워크, ruby on rails...?(이건 프레임워크는 아닌건가요...)

이렇게 두개는 예시를 들어서 이해를 어느정도만 했는데... 라이브러리와 API의 차이를 모르겠습니다.....

github에 올라오는 오픈소스들 이라고 하는 것들은 라이브러리 인것인가요...?

안드로이드에서 API를 보면 버전별로 API 23,22,21,20 이렇게 있고, API 5.0이다 이런것도 있었던거 같은데....(그냥 안드로이드 5.0 이였나...) 이 두개의 차이가.... 무엇인가요...

이해하기가 어렵네요.. ㅠ

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 이 문제는 많이 듣는 만큼 정의하기가 쉽지 않은 문제 인것 같네요. 제 생각은 다음과 같습니다.

    플랫폼

    • 이 사용자들에 의해서 서드파티(플랫폼 개발을 담당하는 자/기관이 아닌 자/기관)에 의해 개발된 것이 사용/유통될 수 있는 환경/기술을 의미한 다고 생각합니다.
    • 온라인으로 옮겨가면서 이 서드파티도 별도의 그룹이 아닌 플랫폼 내에서 활동하는 사용자들 중의 하나인 상태이며, 플랫폼은 사용자들 사이에서 공급과 수요를 이끌어내어 사용자들간의 비지니스가 가능한 형태를 말하는 것 같습니다.

    프레임워크

    • 특정 형태의 프로그램 설계에 대한 청사진으로써, 완성된 프로그램이나 기능을 목표로 하는 것 보다는 일관된 방법론이나 설계를 제공하여, 프레임워크 사용자(개발자)가 구현하고자 하는 목표를 달성할 수 있도록 하는 것이라고 생각합니다.
    • 이를 위해서 대체로, 설계에 필요한 기능(클래스, 함수)과 다양한 개발방법론들을 제공합니다.
    • 완성된 도구가 아니라는 점에서 라이브러리와 차별된다고 생각합니다.
    • 현실에서 보면 요즘 많이 나오는 DIY 제품에 해당하지 않을까 싶네요.

    라이브러리

    • 어떤 목표를 달성하거나 도와주기위한 기능의 집합(모음집)이라고 생각됩니다.
    • 이는 프레임워크와 달리 완성된 형태이며, 라이브러리를 사용하는 사용자(개발자)에 의해서 라이브러리가 제공하는 기능들을 수정하거나 변경할 수 없습니다.(혹은 매우 어렵습니다.)
    • 현실에서 보면 스패너, 스크류 드라이버와 같은 연장들에 해당하지 않을까요?

    API

    • API는 Application Program Interface의 약자로 말 그대로 인터페이스를 의미합니다. 앞의 라이브러리도 이러한 API를 제공합니다. 서로 다른 목적으로 개발된 프로그램/라이브러리들의 특정 기능을 호출하기 위해서, 혹은 외부의 다른 프로그램이 개발된(하고있는) 프로그램/라이브러리의 기능을 사용할 수 있게 하기 위해서는 기능을 호출해야 하는 사용자를 위한 배려가 필요한 데, 이것이 API라고 생각합니다.
    • 일종의 약속인 것으로, 같은 개발 환경을 사용할 경우 쉽게 사용할 수 있게 됩니다.
    • 기능을 (온라인)서비스하거나 라이브러리로 제공하기 위해서는 기능을 호출할 수 있는 명세(API)도 같이 제공해야 사용할 수 있겠습니다.

    일단 제가 생각하는 것은 위와 같습니다.

    라이브러리와 API는 다른 말이긴 하지만, 보통 라이브러리를 획득하면 해당 라이브러리의 API가 따라옵니다. 그래야 라이브러리를 쉽게 사용할 수 있기 때문입니다. 하지만 API가 라이브러리를 의미하지는 않습니다.

    안드로이드 API도 안드로이드 개발에 필요한 기능 중에서 안드로이드 플랫폼(운영체제보다는 플랫폼이 적당한 것 같습니다)이 제공하는 다양한 기능 - 하드웨어 접근 방법, 그래픽 화면 설계, 프로그램 간 통신 등 - 을 명세하고 이를 사용/설계하는 방법에 대해서 제공하는 데, 이러한 방법들이 변하면서 수정된 API를 계속해서 배포하는 것이겠죠?

    마지막으로 안드로이드 API는 21,22,23 과 같이 수정된 일련번호로 되어 있으며, 5.0, 6.0 으로 부르는 것은 안드로이드 버전을 의미합니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)