일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 2022 플러터 설치
- 클래스
- rxjava cold observable
- 서비스 쓰레드 차이
- 객체
- 큐 자바 코드
- 안드로이드 유닛 테스트
- 서비스 vs 쓰레드
- android retrofit login
- ar vr 차이
- 스택 큐 차이
- 안드로이드 라이선스
- 안드로이드 os 구조
- ANR이란
- android ar 개발
- 멤버변수
- jvm이란
- rxjava disposable
- 안드로이드 레트로핏 crud
- 안드로이드 레트로핏 사용법
- 자바 다형성
- 안드로이드 유닛 테스트 예시
- 2022 플러터 안드로이드 스튜디오
- 안드로이드 라이선스 종류
- rxjava hot observable
- 안드로이드 유닛테스트란
- 플러터 설치 2022
- jvm 작동 원리
- 스택 자바 코드
- Rxjava Observable
- Today
- Total
나만을 위한 블로그
프레임워크와 라이브러리의 차이점 본문
먼저 프레임워크의 뜻부터 생각해보자. Frame과 Work라는 2개 단어가 합쳐진 것 같으니, 이 둘의 뜻을 따로 떼어내서 생각해보자.
Frame : (나무, 금속등으로 된) 틀, 액자, 뼈대
Work : 일하다, 일, 직장, 직업, 업무
Framework : 어떤 것의 뼈대를 구성하는 일을 하는 것?
내가 상상한 뜻에서 핵심 키워드는 '뼈대 구성'이다. 이제 프레임워크의 사전적 정의를 보자.
Framework : (건물 등의) 뼈대, 골조 / (판단, 결정 등을 위한) 틀 / 체제, 체계
얼추 맞았다. 뼈대나 틀이라는 사전적 정의를 가진 단어니까 라이브러리와 엮여 나오는 프레임워크도 이와 비슷한 뜻을 갖고 있을 것이다.
영문 위키백과에 프레임워크를 검색해봤다. 종류가 많았지만 구글에 검색했을 때 소프트웨어 프레임워크로 리다이렉트됐기 때문에, "프레임워크 = 소프트웨어 프레임워크"라고 가정하고 읽었다.
소프트웨어 프레임워크는 일반 기능을 제공하는 소프트웨어가 추가 사용자 작성 코드에 의해 선택적으로 변경될 수 있는 추상화로, 애플리케이션 별 소프트웨어를 제공한다. 응용 프로그램을 빌드, 배포하는 표준 방법을 제공하며 소프트웨어 응용 프로그램, 제품, 솔루션의 개발을 용이하게 하기 위해 더 큰 소프트웨어 플랫폼의 일부로 특정 기능을 제공하는 보편적이고 재사용 가능한 소프트웨어 환경이다
소프트웨어 프레임워크에는...(중략)...API가 포함될 수 있다.
사용자가 코드를 추가하면 전체가 아닌 원하는 부분을 바꿀 수 있는 추상화된 무언가, 보편적이고 재사용 가능한 소프트웨어 환경이란 것 정도로 생각했다. 뭐라는 건지. 설명이 너무 추상적이다.
추가적으로 API도 포함될 수 있다는데, API에 대해선 추후 포스팅에서 다룰 것이니 여기선 제외한다.
이제 구글에 검색해봤다. 포스팅들을 확인하고 공통적으로 보이는 설명들은 아래와 같다.
- 프레임워크는 소프트웨어의 구체적인 부분의 설계, 구현을 재사용 가능하도록 협업화된 형태로 클래스들을 제공하는 것이다
- 프레임워크는 어떤 프로그램을 만들기 위한 기본적인 틀이다. 거푸집같은 것이다
- 프레임워크는 프로그램 구조에 대해 규칙이 정해진 가이드라인을 제시한다
- 프레임워크는 골격을 이루는 코드다
추상적인 설명 뿐이지만, 프레임워크는 응용 프로그램이나 제품, 솔루션을 개발할 때 사용되는 클래스, 인터페이스의 집합이라고 생각한다.
대표적인 프레임워크로는 Spring 프레임워크, .NET(닷넷) 프레임워크가 있고 웹 쪽에는 Angular JS, 부트스트랩, PHP의 라라벨, Django 등이 있다.
프레임워크가 뭔지 설명하는 예시로, 롯데리아와 맥도날드라는 햄버거만 판매하는 체인점이 있다고 가정하자.
두 가게는 서로 햄버거 제조법이 다르며 맛도 다르다. 왜냐면 롯데리아에는 롯데리아 햄버거를 만드는 방법(프레임워크)이 있고, 맥도날드에는 맥도날드 햄버거를 만드는 방법(프레임워크)가 있기 때문이다.
여기서 햄버거를 만드는 방법에 따라 불고기버거가 만들어질 수도 있고, 새우버거가 만들어질 수도 있다. 그래서 프레임워크는 햄버거가 만들어지는 방식을 제어하는 클래스(종업원, 의자, 책상 등)와 인터페이스의 집합이라고 할 수 있다.
그럼 라이브러리란 뭔가? 라이브러리는 도서관이라는 뜻이 있다.
이것도 영문 위키백과에 검색해봤다.
라이브러리는 소프트웨어 개발을 위해 컴퓨터 프로그램에서 사용하는 비휘발성 모음이다...(중략)...동작이 호출되는 잘 정의된 인터페이스를 가진 언어로 작성된 동작 구현 모음이다.
라이브러리는 소프트웨어 개발 시 활용 가능한 도구나 함수들의 집합이다.
개발자가 어떤 기능을 개발할 때 필요하거나 도움이 되는 도구, 함수를 제공한다.
그럼 프레임워크와 라이브러리의 차이점은 뭘까?
가장 큰 차이점은 개발 프로세스를 제어를 누가 하냐는 것이다. 라이브러리의 경우 개발자가 필요할 때마다 호출한다.
반면 프레임워크는 개발자가 프레임워크 안으로 들어가서 그곳의 규칙에 맞춰 작업해야 한다.
프레임워크를 보면 프레임워크가 개발자를 불러서 작업하게 하는 것 같다. 그래서 프레임워크는 제어의 반전(역전)이 적용됐다는 문장을 여러 포스팅에서 심심찮게 볼 수 있다.
라이브러리 : 내가 라이브러리를 부른다
프레임워크 : 내가 프레임워크로 불려(들어)간다
'개인 공부' 카테고리의 다른 글
NoSQL이란? SQL이란? 둘의 차이는 무엇인가? (0) | 2020.12.03 |
---|---|
HTTP와 HTTPS의 차이란? (0) | 2020.11.18 |
디자인 패턴이란? (0) | 2020.11.14 |
클린 코드란? (0) | 2020.11.10 |
REST란? (0) | 2020.07.21 |