kang9366
Repository
kang9366
글쓰기
설정
전체 방문자
오늘
어제
  • 분류 전체보기 (143)
    • Programming (70)
      • Java (1)
      • C++ (11)
      • Kotlin (12)
      • Keras (2)
      • Android (34)
      • Jetpack Compose (1)
      • Error Solution (7)
    • CS (36)
      • 자료구조 (13)
      • 운영체제 (1)
      • 알고리즘 (4)
      • 컴퓨터 보안 (8)
      • 기타 (10)
    • Data Science (28)
      • 데이터분석 (7)
      • 머신러닝 (14)
      • 딥러닝 (7)

인기 글

최근 글

최근 댓글

Github · Instagram · Facebook
kang9366

Repository

라이브러리 vs 프레임워크
CS/기타

라이브러리 vs 프레임워크

2022. 6. 16. 08:53

 

 

라이브러리

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

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

 

물론 남들이 만들어둔 외부 라이브러리도 가져다 사용할 수 있다.

1) Browser환경에서 script src 로 불러들이는 js파일(JQuery 등)

2) node.js 환경에서 npm으로 설치한 모듈

3) Python 환경에서 pip로 설치한 패키지/모듈

4) Java 환경에서 설치한 jar

 

프레임워크

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

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

 

앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 알아서 관리하며,

개발자는 서비스별로 다른 부분만 "프레임워크가 정해준 방식대로" 클래스, 메서드 등에 구현해두면 된다.

(자세한 내용은 아래의 라이브러리 vs.프레임워크 항목을 보면 알 수 있다.)

 

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

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

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

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

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

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

 

라이브러리 vs. 프레임워크

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

 

1. 라이브러리

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

 

2. 프레임워크

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

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

 

 

예를 들어 모바일 앱 개발 시, 

버튼이 눌렸을 때 수행하고 싶은 작업이 있다면, 아래의 코드처럼 콜백함수만 정의해서 넣어주면 된다.

button.setOnClickListener( 콜백함수(){ ... 작업 내용 ... } );

 

개발자는 버튼이 눌렸을 때 수행할 작업만 콜백함수로 넣어주면 되며,

버튼이 클릭되는걸 감지하는 등의 복잡한 작업과 콜백함수의 호출은 프레임워크가 수행한다.

 

 

또한 안드로이드 앱은 아래 메서드를 정의하는 것으로 개발이 시작된다.

@Override
protected void onCreate(Bundle savedInstanceStore){
	// ... 코드 ...
}

 

개발자는 프레임워크가 정해준대로 onCreate라는 이름의 메서드에 필요한 내용을 구현하면 되며,

실제 실행주기에 따라 onCreate메서드를 호출하는건 안드로이드 프레임워크가 알아서 해준다.

(onCreate메서드 자체도 프레임워크가 미리 정해둔 메서드를 오버라이딩하는 개념이다)

 

즉, 프레임워크는 라이브러리처럼 다양한 기능을 제공하지만,

개발자가 직접 필요한 기능을 가져다가 호출하는 방식이 아니라 "프레임워크의 구조에 맞추어" 객체나 함수를 구현해두면

프레임워크에 의해 적절한 시점/상황에 자동으로 호출되고 실행되는 구조라고 볼 수 있다.

저작자표시 비영리 변경금지

'CS > 기타' 카테고리의 다른 글

컴퓨터구조 정리  (0) 2022.06.26
Stack과 Heap  (0) 2022.06.16
API  (0) 2022.06.16
정적 웹페이지와 동적 웹페이지  (0) 2022.06.16
개발자 면접시 단골질문 13개와 모범답안  (0) 2022.06.10
    'CS/기타' 카테고리의 다른 글
    • 컴퓨터구조 정리
    • Stack과 Heap
    • API
    • 정적 웹페이지와 동적 웹페이지
    kang9366
    kang9366

    티스토리툴바