본문 바로가기

#기본개념

프레임워크와 라이브러리의 차이점은 무엇일까?

반응형

프레임워크와 라이브러리의 차이점은 무엇일까?

 

 

 

 

 

 

 

 

[작성자의 다른 글 보러가기: 'Node.js란 무엇인가? (+ 블로킹,논블로킹,I/O Model이란?)']

 


개요

 

우리가 흔히 사용하는 프레임워크와 라이브러리. 같은 듯하면서 다른 이 두가지의 각각의 개념은 무엇인지,

공통점은 무엇이며 차이점은 무엇인지 깊이있게 알아보도록 하자.

 

 


 

목차

 

# 프레임워크란 무엇일까? 

# 라이브러리란 무엇일까?

# 두가지의 공통점은 무엇일까?

# 두가지의 차이점은 무엇일까?

 

 

 

 


 

# 프레임워크란 무엇일까?

 

 

Frame work : 

 프레임워크는 어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조며, 소프트웨어 개발에 있어 하나의 뼈대 역할을 한다. 

출처: 나무위키

 

프레임워크작업(work)의 구조(frame)가 정해져 있는 라이브러리라고 볼 수 있다.

단, '프레임워크가 원하는 방식'대로 다양한 기능을 제공한다.


클래스와 라이브러리가 합쳐진 구조이며, 이러한 협업 형태를 제공하는 것이다.
예를 들어, 콜백 함수의 정의는 개발자가 하지만 정해진 알고리즘에 따라 그 콜백 함수를 실행하는 건 프레임워크이다.
개인이 라이브러리로 이러한 규칙을 구축하는 데에는 시간과 돈이 필요하므로 이미 구축되어 있는 프레임워크를 사용하여 제작에만 집중하는 것이다.

 

 

유명한 프레임워크로는 아래와 같은 것들이 있다.

1) Java 서버 개발에 사용되는 Spring

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

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

4) 아이폰 앱 개발에 사용되는 Cocoa Touch

5) 웹 개발에 사용되는 React, Angular, Vue.js 등

* React는 라이브러리긴 하지만, 프레임워크처럼 사용하는 듯한 느낌이 든다.

 

 

 


 

 

# 라이브러리란 무엇일까?

 

 

라이브러리(Library) :

소프트웨어의 구성요소 중 한가지로, API를 기반으로 대상 환경(플랫폼)에서 바로 실행될 수 있도록 모듈화된 프로그램 모음이다. 라이브러리는 혼자서 동작하는 완전한 프로그램이 아닌, 특정한 부분 기능만을 수행하도록 제작된, 컴파일되어 기계어의 형태로 (또는 대상 플랫폼에 따라서는 바이트코드로) 존재하는 프로그램이다. 이 자체로는 사용자가 직접 일반적인 조작으로 실행할 수 없으며, 해당 라이브러리의 기능을 직접 호출하는 프로그램을 실행하거나, 사용자가 해당 라이브러리의 기능을 실행하는 API를 사용하는 프로그램을 직접 개발하면 실행할 수 있다.

출처: 나무위키

 

 

라이브러리란 필요한 기능들이 모여있는 코드의 묶음이라고 생각할 수 있다.

자주 사용되는 기능들을 라이브러리(객체나 함수등의 형태)로 만들어두면, 필요할 때마다 직접 호출하여 사용할 수 있다.

라이브러리를 사용하더라도 프레임워크가 정한 방식에 따라야 하지만 어떻게 사용할 지는 개발자가 정할 수 있다.

 

 

 

 

 

 


 

 

# 프레임워크와 라이브러리의 공통점은 무엇일까?

 

  • 재사용 가능한 코드의 모음이다
  • 프로그래밍을 쉽게 할 수 있도록 도와주는 역할 (편리성 up)

 

 

 

 

 


 

 

# 프레임워크와 라이브러리의 차이점은 무엇일까?

 

  • 가장 큰 차이점은 "코드 흐름의 제어권"이 누구에게 있느냐이다.

        - 라이브러리는 객체나 함수를 개발자가 직접 호출하여 사용한다.

        - 프레임워크는 개발자가 구현한 메서드가 프레임워크에 의해 호출된다.

           (이를 제어의 역전(IoC: Inversion of Control)이라고 한다.)

  • 프레임워크는 밀키트라고 생각하면 쉽다. 이미 주어진 재료를 가지고 정해진 레시피대로만 하면 요리가 완성된다. 요리의 완성도는 어느정도 보장되어 있지만 자유도는 떨어진다.
  • 라이브러리는 음식재료함 이라고 생각하면 쉽다. 요리하는 데에 정해진 규칙은 없지만 재료는 준비되어 있다. 재료함에 있는 식재료를 원하는 대로 가져와서 원하는 대로 요리하면 된다. 그 요리가 어떤 결과를 가져올 지는 아무도 모르지만.

 

 

 

 

 


 

# 끝으로

 

프레임워크는 "프레임워크가 요구하는 방식"을 처음에 학습하는데 시간이 소요되지만,

일단 익숙해지면 개발 시간을 획기적으로 단축해주고, 상대적으로 안전한 구조의 개발을 할 수 있는 장점이 있다.

하지만 내부적으로 돌아가는 원리에 대해 파악하지 못하고 시키는대로만 개발하게 된다는 단점(?)도 있을듯 하다.