안루피취뽀일기

라이브러리(Library)와 프레임워크(Framework)차이 본문

IT

라이브러리(Library)와 프레임워크(Framework)차이

안루피 2023. 9. 13. 11:47
728x90

개발자들은 종종 "라이브러리"와 "프레임워크"라는 용어를 같은 것처럼 사용한다. 그러나 두 용어는 차이가 있다. 라이브러리와 프레임워크는 모두 일반적인 문제들을 더 쉽게 해결하기 위해 다른 개발자들이 작성한 재사용 가능한 코드이다. 

 

 

 

 

프레임워크는 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 커넥션 등의 기능들을 위해 뼈대(구조)를 제공한다. 개발자는 이러한 뼈대 위에서 코드를 작성해 원하는 애플리케이션을 개발할 수 있다. 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 상호 협력하는 클래스와 인터페이스의 집합이라고 할 수 있다.

쉽게 말해 프레임워크는 개발자가 개발을 쉽게 할 수 있도록 뼈대를 제공해준다고 생각하면 된다. 예를 들어 Java 개발에서 사용되는 Spring 프레임워크나 Python 개발에 사용되는 Django, 안드로이드 앱개발에 사용되는 Android 등이 있다.

 

 

 

라이브러리개발에 필요한 것들을 미리 구현해놓은 도구라고 할 수 있다. 재사용이 가능한 기능을 미리 구현해놓고 필요한 곳에서 호출하여 사용 가능하도록 만들어진 집합이다. 프로그래머가 어떠한 기능을 수행하기 위해서 도움을 주는 또는 필요한 것을 제공해주는 역할을하는 것이다. 예를 들어 C++의 STL 이나 Python의 Pip로 설치한 패키지/모듈(pandas, tensorflow 등)이 있다. 

 

 

 

프레임워크와 라이브러리 차이

 

 

* 제어역전?

 

프레임워크와 라이브러리를 검색하다보면 "제어역전" 이라는 개념이 계속해서 나온다.
제어역전이란, 개발자가 해왔던 일(제어)을 프로그램. 즉, 프레임워크가 대신 해준다는 의미이다. 스프링과 같은 프레임워크를 사용하다보면, 스레드를 직접 만들고, 객체의 생명주기를 직접 코딩하진 않는 것처럼 원래 개발자가 가지고 있어야 할 객체의 제어권을 프레임워크가 대신 해준다는 의미로, "제어권이 역전되었다" 라는 뜻에서 제어역전 이라고 한다.

 

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

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

 

반면 프레임워크는 애플리케이션의 코드가 프레임워크에 의해 사용된다. 애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작하기 때문에 제어의 흐름은 프레임워크가 가지고 있고 사용자가 그 안에 필요한 코드를 작성하게 된다.

 

 

 

 

 

 

 

 

참고자료 

https://velog.io/@sy3783/%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC%EC%99%80-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%EC%9D%98-%EC%B0%A8%EC%9D%B4%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

https://code-lab1.tistory.com/284

https://velog.io/@whitecloud94/%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC-vs-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC

728x90

'IT' 카테고리의 다른 글

네트워크와 인터넷의 개념  (1) 2023.11.04
웹의 개요  (0) 2023.11.04