안드로이드 개발자 면접이라고 안드로이드 질문만 한다는 보장은 없다. 그래서 그동안 궁금했는데 귀찮아서 알아보지 않았던 CS에 대한 상식도 몇 가지 공부해본다.
차이점을 알기전에 무엇인지 알아보자
- Framework(프레임워크)
먼저 프레임워크에 대해서 설명해본다. 프레임워크는 Frame과 work의 합성어이다. 여기서 Frame은 다들 알다시피 구조, 틀, 일정한 규격으로 완성되어있거나, 그것을 완성시킬 수 있는 요소들의 집합이다. 그리고 그 정해진 구조와 틀, 규격을 준수하며 일하는 것이 프레임워크의 뜻이다.
아래 글 참조에 링크를 걸어둔 새로비님이 찰떡같은 비유를 해주셨는데, Framework를 일종의 레고에 대입해보자. 레고에는 일정한 형태와 틀, 그리고 Description이 있고, 그것들을 가지고 다양한 결과물을 만들 수 있다.
그리고 레고의 부품들은 레고라는 제조사에서 나오게 되는데, 프로그래밍 적으로 옮겨 생각하면, 이 레고라는 제조사가 Framework가 되는 것이다. 물론 Framework Provide Program 이라는 표현이 더 맞긴 하지만, 그냥 Framework라고 하자. 그리고 이러한 예시들이 Angular JS, Ruby on rails 등이 있다.
위 예시들은 전부 웹에 관련된 프레임워크 들이며, 웹(혹은 웹 어플리케이션)을 만들 때 쉽고 간단하게 만들도록 도와주기 위해서 특정 요소와 규칙등을 사용자에게 제공하여 효율성과 생산성 향상에 도움을 준다.
- Library
라이브러리를 직역하면 도서관이다. 좀더 이 뜻을 물고 늘어져 보자. 도서관에 가면 수많은 책들이 있을것이다. 그리고 내가 원하는 책을 고르면, 그 책에는 내가 알고싶어하던 내용들이 있다. 이렇게 알게된 것들을 나는 추후에 사용할 수 있고 사용하지 않을 수 있게 된다. 어쨌든 이런 일련의 상황들을 프로그래밍적인 부분과 연결시켜 보자.
일상생활적 접근 | 프로그래밍적 접근 |
원하는 도서관을 간다. | 사용하고자 하는 라이브러리를 import 한다. |
도서관에서 원하는 책을 골라서 빌린다 | 라이브러리에서 사용하고자 하는 클래스를 선언한다. |
빌린 책에서 원하는 부분을 읽는다. 이러한 내용은 추후에 사용하게 된다. | 선언한 클래스의 메소드, 매개변수 등을 사용하여 프로그래밍 한다. |
(뭔가 다른걸 써보고 싶어서 표를 써봤다)
위의 표와 같이 접근하면 라이브러리는 일종의 지식모음(수학 공식 모음), 도구 모음과 같은 결론에 도달하게 된다. 그리고 그 예시는 Android에서 Glide, Retrofit2 등과 같은 느낌이다.
공통점과 차이점
결론적으로 프레임워크나 라이브러리는 사용자가 프로그램을 만들 때 더 쉽고 간편하게 만들도록 도와준다는 공통점이 있다. 하지만 자율성에서 프레임워크와 라이브러리는 차이점을 보이게 된다. 특정 프레임워크를 사용한다는 가정하에 개발자는 지켜야할 룰들이 반드시 존재한다. 가령 C언어를 사용하면 문장의 끝맺음의 의미로 '; (세미콜론)을 사용해야 한다'라는 룰이 있다. 반면, 라이브러리는 프레임워크의 룰이 지켜진다는 전제아래 사용해도 그만 사용하지 않아도 그만이라는 자유도가 있다.
쉽게 얘기해서, Angular JS라는 프레임워크의 틀 안에서 내가 코딩을 한다면, 나는 Angular JS에서 제시한 규칙을 따라서 그 틀에 맞춰서 코딩을 해야 한다. 반면 라이브러리는 특정 라이브러리의 사용법만 안다면, 어떤 방식으로 코딩을 해도 상관이 없다. 단 프로그래밍 언어적 규칙은 꼭 지켜야 한다.
글 참조
https://laradevsbd.com/story/the-difference-between-a-framework-and-a-library
https://engkimbs.tistory.com/673
'안드로이드 > 알아두기' 카테고리의 다른 글
[안드로이드] 제네릭 함수, 클래스 정의하고 사용해보기 (0) | 2021.12.08 |
---|---|
[안드로이드] LiveData에 대하여 다시 (0) | 2021.12.07 |
[안드로이드] Handler와 Looper 에 대하여 (0) | 2021.12.05 |
[안드로이드] MVP와 MVVM 패턴에 대하여 (0) | 2021.12.05 |
[안드로이드] 안드로이드 4대 컴포넌트 (0) | 2021.12.04 |