728x90
반응형
1. 라이브러리 (Library)
    1-1. 라이브러리의 분류
    1-2.
라이브러리의 장점
    1-3.
언어별 지원 라이브러리

2. 프레임워크 (Framework)
    2-1.
프레임워크의 장점
    2-2.
프레임워크의 단점
    2-3.
언어별 지원 프레임워크
3.
라이브러리 vs 프레임워크 차이점

 


라이브러리란?

라이브러리는 개발할 때 빈번히 재사용되는 기능들을 모듈화 하여 모아놓은 기능들의 집합으로, 혼자서 동작하는 완전한 프로그램이 아닌 특정 부분 기능만을 수행하도록 제작되었기 때문에 프로그램 개발 시 개발자의 목적에 맞게 쉽게 삽입해서 사용할 수 있다.

 

라이브러리는 프로그래밍 언어에 자체적으로 포함되어있는지 개발자가 필요에 따라 만든 것인지에 따라 크게 표준라이브러리와 외부라이브러리로 분류할 수 있다.

  표준라이브러리 외부라이브러리
특징 프로그래밍 언어에 기본적으로 내장되어 있는 라이브러리로, 별도의 설치 없이 사용할수 있다. 개발자들이 필요에 따라 만들어 놓은 라이브러리로, 파일을 다운로드해 설치하여 사용한다.
예시 자바의 java.lang/java.util, 파이썬의 math/sys 등 자바스크립트의 jQuery, 파이썬의 NumPy/TensorFlow 등

 

1. 코드의 재사용으로 중복되는 코드를 줄일수 있어 효율적인 개발이 가능해진다.

2. 용도에 맞는 라이브러리를 사용함으로써 개발 기간을 단축할 수 있고, 완성도 높은 프로그램을 만들 수 있다.

3. 소스를 제공하지 않기 때문에 중요 기술 유출 방지할 수 있다.

 

언어 라이브러리
C OpenGL, Vulkan, Mantle
C++ STL, MFC, Qt, DirectX, Boost
Python NumPy, Pandas, matplotlib, scipy, PyTorch
Java Lombok, JSTL, Gson, Jackson, LWJGL, JOML
JavaScript jQuery, React, Jindo

 

 

 


프레임워크란?

프레임워크는 프로그램 개발에 필수적이고 표준적인 부분을 재사용하도록 모듈화 한 반제품 성격의 개발도구이다.

프레임워크는 소프트웨어의 구체적인 기능들에 해당하는 부분의 설계와 구현을 재사용할 수 있도록 준비해 놨기 때문에 개발자는 이 환경위에서 기능을 구현하기만 하면 된다.

 

1. 코드의 재사용, 확장성, 제어의 역흐름으로 인해 효율적인 개발이 가능해진다.

2. 유지보수가 용이해지고 프로그램의 품질을 향상시킬수 있다.

 

1. 개발언어외에 프레임워크를 별도로 학습해야 하며 체득시간이 필요하다.

2. 기본설계된 구조로 인해 자유로운 개발에 한계가 있다.

3. 초기에 잘못된 프레임워크를 선택하면 큰 손실로 이어질 수 있다.

4. 구현하려는 기능과 상관없는 라이브러리나 기능들이 포함될수 있기 때문에 필요이상의 컴퓨팅 자원이 소모될 수 있다.

5. 같은 프레임워크를 사용한 것은 외관이나 동작이 비슷해 개발자가 독창성을 발휘하기 어렵다.

 

언어 프레임워크
Java Spring
PHP Laravel
Python Django, Flask
Ruby Ruby on Rails
PHP Laravel, Codeigniter, CakePHP, Symfony, Zend
JavaScript Bootstrap
Scala Play

 

 

 


라이브러리와 프레임워크는 둘다 누군가 미리 작성해 놓은 코드로써, 코드의 재사용, 유지보수의 편의성, 개발기간의 단축, 코드 품질의 향상 등의 공통점이 많지만 개발의 제어권(누가 누구를 제어하는가)을 누가 가지느냐에 있어서는 큰 차이가 있다.

 

라이브러리의 경우, 개발 제어권이 개발자에게 있기 때문에 개발자가 주도적으로 라이브러리를 호출하는 반면, 프레임워크는 개발 제어권을 개발자가 아닌 프레임워크가 가지고 있기 때문에(제어의 역흐름) 개발자는 비즈니스 로직에만 신경 쓰고 적절한 코드를 호출하고 동작시키는 것은 프레임워크가 한다.

때문에 라이브러리는 프로그램에 편리한 기능을 추가할 수는 있지만 개발자가 지시하지 않는 한 아무것도 처리하지 않는 반면, 프레임워크는 처리를 구현하지 않아도 어느정도 자동으로 처리한다.

 

결국 관점에 따라 라이브러리와 프레임워크를 나눌수 있는데, 개발자가 어떤 도구에 대해서 모든 결정을 다 내리고 있다면 그 도구는 라이브러리이고, 개발자가 누군가 정한 규칙에 따라 도구를 사용하고 있다면 그 도구는 프레임워크라고 생각하면 된다.

  라이브러리 프레임워크
개발 제어권 개발자 프레임워크
교체 난이도 쉬움 어려움

 

 


글 내용 중 잘못된 부분이 있거나, 첨부하실 내용이 있으시면 댓글로 남겨주세요. 공부하는데 많은 도움이 됩니다.
-- 기억의 유효기간은 생각보다 짧다. --

 

728x90
반응형

'기타 > IT 용어' 카테고리의 다른 글

소프트웨어기술자의 기술등급 및 인정범위  (0) 2023.03.09