라이브러리와 프레임워크의 차이점
라이브러리와 프레임워크의 중요한 차이점은 내가 작성한 코드에 대한 제어 권한이 어느 쪽이 있는지이다.
라이브러리가 복잡해지면 프레임워크가 된다는 말이 있다. 이것은 사실이지만, 사실이 아니기도 하다. 우리는 흔히 재사용 가능한 코드를 라이브러리로 만든다. 한 번 작성된 라이브러리는 재사용이 가능해서 코드의 중복 작성을 줄여준다. 대표적인 라이브러리로는 대부분의 언어에 있는 Math 라이브러리가 있다. Math 라이브러리를 이용하면 반올림, 내림, 올림 등 다양한 연산을 손쉽게 할 수 있도록 만들어준다.
코드에 대한 제어 권한이 없는 라이브러리
Math 라이브러리에서는 우리는 우리가 원하는대로 올림, 내림, 반올림 등을 할 수 있다. 라이브러리의 내부 규약에 의해 코드를 작성하는 것을 제한 받는 일이 없다. 즉, 코드에 대한 제어 권한이 나에게 있다. 그렇다면 프레임워크는 어떨까?
코드에 대한 제어 권한을 갖는 프레임워크
스프링 프레임웍에서는 스프링 프레임 웍에서 정한 대로 객체들의 라이프 사이클이 정해진다. 우리는 해당 뼈대(Framework)를 사용해서 우리의 비즈니스 로직을 넣을 뿐이다. 안드로이드에서 또한 마찬가지이다. Activity, Fragment등의 Lifecycle이 정해져 있고, 우리는 해당 Lifecycle에 맞춰 코드를 짜야한다.
우리가 코드를 만들 때 스프링 프레임웍이나 안드로이드 프레임웍에서 따른 제한에 맞추어 코드를 짜야되는 것이다. 즉, 프레임워크(Framework)에서는 코드에 대한 제어 권한이 프레임워크에 있다.
정리
요약하면 프레임워크와 라이브러리의 큰 차이점은 다음과 같다.
라이브러리 : 내가 작성한 코드에 대한 제어 권한이 내가 작성한 코드에 있음(직접 제어)
프레임워크 : 내가 작성한 코드에 대한 제어 권한이 프레임워크에 있음