ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [IT 용어] API vs 라이브러리 vs 프레임워크 알아보기
    IT/CS지식 2022. 9. 15. 19:20

     

    자바 스페셜리스트가 되기 위한 덕목을 찾아보니 Learn APIs and Libraies가 있었다. 자바는 전세계에서 가장 인기있고 오래된 프로그래밍 언어이며 아주 다양한 라이브러리와 api가 존재하므로 몇몇 중요 API에 대한 경험이나 존재자체에 대해서 인지하고 있어야 된다. 라이브러리, API 공부하면서 많이 들어봤던 말인데 그 의미와 차이점에 대해 생각해보니 구체적으로 떠오르지 않아서 정리해보고자 한다.

     


     

     

    라이브러리 (Library)

     

    라이브러리란 응용 프로그램 개발을 위해 필요한 기능을 모아 놓은 소프트웨어이며, 그 기능에 대한 도구 또는 함수들의 집합이라고 할 수 있다. 

     

    - 프로그래머가 어떠한 기능을 수행하기 위해 도움을 주는 또는 필요한 것을 제공해주는 역할을 하는 것.
    - 라이브러리는 재사용이 필요한 기능으로 반복적인 코드 작성을 없애기 위해 언제든지 필요한 곳에서 호출하여 사용할 수 있도록 class나 Function으로 만들어진다.
    - 프로그램을 만들때 기존에 만들어진 함수를 재사용함으로써, 프로그램의 제작 시간과 노력을 줄일 수 있다. 필요한 함수만 호출하여 사용할 수 있다.
    - 독립성을 가지고, 응용 프로그램이 능동적으로 라이브러리를 사용한다.
    - 한 개 이상의 패키지를 배포의 용이성을 위해 압축한 형태. 다른 프로그램에서 라이브러리 안에 포함된 기능을 활용할 수 있다. 

     

    예를 들어 자바스크립트 라이브러리는 jQuery이며, 그래픽 사용자 인터페이스(GUI)에서 재사용하기 쉽게 버튼, 테이블 같은 구성 요소를 호출해서 쓸 수 있도록 분리해둔 것이다.  객체지향 프로그래밍은 기본적으로 각 기능마다 함수화하는 것으로 클래스 라이브러리라고 할수도 있다. 

     

    ● 자바에서 지원하는 라이브러리

     

    - java.lang

    : 가장 기본이 되는 라이브러리로 생략해서 사용한다.  ex) Object, String, StringBuffer, Math, Wrapper, System ... 

     

    - java.util 

    : import로 불러와야 사용이 가능하다. ex) Date, Calender, List, Set, Map .... 

     

    - java.io 

    ex) File, Buffer

     

    - java.sql

    : 오라클 연결에 필수적인 라이브러리로 웹 프로그래밍 환경에서 많이 사용된다. 

     

    ● 외부에서지원하는 라이브러리 (open source) 

     

    servlet-api.jar, cos.jar, jstl.jar 등등 각종 jar 파일을 다운 받아 사용할 수 있다. 

     

     

     

    API ( Application Programming Interface )

     

    API는 직역하자면 응용 프로그램을 만드는데 사용되는 interface이다. 여기서 interface란 사물간, 사람간 또는 사람과 사물간에 상호작용을 할 수 있도록 연결해주는 장치, 방법, 형식, 공간을 통칭한다. API는 응용 프로그램을 만드는데 필요한 연결 장치, 매개체라고 할 수 있다. 이러한 연결 장치, 매개체가 필요한 이유는 실제 개발을 할 때 혼자 모든 것을 할 수 없기 때문이다. 

     

    예를들어 웹 페이지에 경고창을 띄우려고 한다면 'alert()'를 호출해 사용한다. 이때 경고창을 한 번 띄울때마다, 'alert()'와 동일한 동작을 하는 코드를 모두 작성한다고 생각하면,, 효울성이란 찾아볼 수 없다. 그래서 우리는 API를 사용하는 것이다. 

     

    라이브러리와 API의 개념을 혼동하지 않도록 하자. 실제 개발을 할 때 여러 컴포넌트를 합쳐서 개발을 하게 되는데, 각각의 컴포넌트들은 API를 가지고 있다. 이때 많은 컴포넌트들이 라이브러리의 형태로 제공되기 때문에 API와 라이브러리는 혼동할 수 있지만, 라이브러리는 컴포넌트 자체를 의미하고, API는 그 컴포넌트를 활용하기 위한 규약이다. 

     

    즉) 라이브러리와 API의 차이점은 라이브러리는 재사용이 필요한 기능으로 반복적인 코드 작성을 없애기 위한 어디서든 호출 가능한 코드의 집합이라면 API는 응용 프로그램을 만드는데 필요한 연결 장치나, 매개체라고 생각하면 된다.

     

     

     

     

     

    프레임워크

     

    프레임워크는 뼈대나 기반구조라는 뜻으로, 응용프로그램이나 소프트웨어 구현을 수월하게 하기 위해 제공된 소프트웨어 환경이다. 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 어느 정도 뼈대(구조)를 제공하며 이러한 뼈대 위에서 사용자는 코드를 작성하여 애플리케이션을 개발한다. 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 클레스, 메서드를 구현하면 된다.

     

    - 프레임워크만으로 실행되지 않고, 기능을 추가해야하며, 프레임워크에 의존하여 개발하고, 프레임워크가 정의한 규칙을 준수해야한다.
    - 프로그래밍을 진행할 때 필수인 코드, 알고리즘 등과 같이 어느 정도 구조를 제공해주기 때문에 프레임워크를 사용하는 프로그래머는 이 프레임워크 뼈대 위에서 코드를 작성하여 프로그램을 개발하면 된다. 
    - 프레임워크는 완성된 제품이 아닌 완성된 제품을 만들기 위해 개발자를 도와주는 또는 기반이 되는 역할을 한다. 즉) 소프트웨어의 특정 문제를 해결하기 위해 상호 협력하는 클래스와 인터페이스의 집합이다. 

     

    프레임워크의 예시

    - Java 서버 개발에 사용되는 Spring

    - Python 서버 개발에 사용되는 Django, Flask

    - 안드로이드 앱 개발에 사용되는 Android

    - 웹 개발에 사용되는 Angular, Vue.js 등

    - 자바 기반의 jsp를 위한 프레임워크 stuts

     

     

     

     

    프레임워크 vs 라이브러리

     

    라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다. 단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐이다.

    반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에의해 사용된다. 프레임워크에는 분명한 제어의 역전 개념이 적용되어 있어야 한다. 애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작해야한다.

     

    프레임워크와 라이브러리의 차이점은 "제어 흐름"의 권한이 어디있는가이다. 

     

    라이브러리르 사용할 때 사용자는 애플리케이션 코드의 흐름을 직접 제어해야한다. 개발 시 필요한 기능이 있는 경우 능동적으로 라이브러리를 호출하여 사용하거나 기존에 구성된 함수나 코드를 가져다 서야한다. 

     

    반면 프렐임워크는 애플리케이션의 코드가 프레임워크에 의해 사용된다. 애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작하기 때문에 제어의 흐름은 프레임워크가 가지고 있고 사용자가 그 안에 필요한 코드를 작성하게 된다. 스프링 특징에서 봤지만 제어의 역전(IoC, Inversion of Control)이란, 어떠한 일을 하도록 만들어진 Framework에 Control 권한을 위임하는 것을 의미하는데, 간단히 말해 프로그램의 제어 흐름 구조가 뒤바뀐 것을 의미한다. 

     

     

     

    참고 : https://rlakuku-program.tistory.com/19 , https://cocoon1787.tistory.com/745

    반응형

    댓글

Designed by Tistory.