ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프레임워크(Framework)와 라이브러리(Library) 차이점
    고급 JAVA 2020. 3. 22. 17:39

    프레임워크(Framework)와 라이브러리(Library) 차이점

     

    라이브러리는 코드에의해 불려지고 프레임워크는 프레임워크가 동작하다가 어플리케이션을 호출한다?

     

    1. 프레임워크(Framework)

     

    - 뼈대나 기반구조를 뜻함

     

    - Application 개발 시 필수적인 코드, 알고리즘, 데이터베이스 연동 등과 같은 기능을 위해

     

      어느정도 뼈대(구조)를 제공해주는 것

     

       그러므로, 그러한 뼈대 위에 프로그래머가 코드를 작성하여 Application을 완성시켜야 함

     

    - 어느정도 뼈대를 제공해주기 때문에, 객체지향 개발을 하면서 일관성 부족 등의 문제를 해결해줌

     

    ==> 소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스

     


    2. Libray (라이브러리)

     

    - 라이브러리는 특정 기능에 대한 도구나 함수들을 모은 집합

      

       즉, 프로그래머가 개발하는데 필요한 것들을 모아둔 것

     

    => 단순 활용이 가능한 도구들의 집합

     

     


    3. 프레임워크와 라이브러리의 차이

     

    둘의 차이는 Flow(흐름)에 대한 제어 권한이 어디에 있느냐의 차이

     

    프레임워크는 전체적인 흐름을 자체적으로 가지고 있으며, 프로그래머가 그 안에 필요한 코드를 작성하는 반면에

     

    라이브러리는 사용자가 흐름에 대해 제어를 하며 필요한 상황에 가져다 쓰는 것

     

    ==> 프레임워크에는 제어의 역전이 적용되어 있다.

     

     

    * 제어의 역전

     

    어떤한 일을 하도록 만들어진 프레임워크에 제어의 권한을 넘김으로써 클라이언트 코드가 신경써야 할 것을 줄이는전략

     

    일반적으로 프로젝트를 생성하고 Main함수를 만들어서 시작지점을 형성한다.

     

    그리고 Main함수에서 프로그램의 흐름을 정하는 것은 프로그래머의 몫으로 우리가 어떠한 순서를 부여하느냐에 따라서

     

    흐름을 제어하는 것이 일반적인 사고이다.

     

    하지만, 여기서 프레임 워크는 일반적인 사고와 반대되는 모습을 보여주는데 실행의 흐름을 프레임워크 자체가 

     

    가지고 있어서 우리의 코드를 프레임워크 안에 넣어서 개발을 진행해야 한다.

     

    실제로 Maven과 같은 프레임워크의 프로젝트를 생성해보면 어느정도 뼈대를 만들어서 그 안에 필요에 따라 우리의

     

    코드를 넣는다. 일밙거으로 프로그래머가 가지고 있어야하는 제어의 권한을 프레임워크에게 주었기 때문에

     

    이것을 제어의 역전이라고 한다.

     

     

    예제

    전체작업흐름{
    
        학생들 점수를 입력받는다();
        
        정렬한다();
        
        성적순으로 출력한다();
    }

    여기서 내가 전체 코드를 작성하는데 정렬한다() 를 이미 다른 사람이 구현해놓은게 있어서 가져와서 쓰면

     

    이게 라이브러리, 반대로 이미 저 전체흐름 코드는 범용적으로 쓸 수 있도록 만들어져 제공되는게 있고

     

    다만, 저걸 가져와서 쓰는 사람이 점수를 입력받는다() 라는 부분을 omr카드를 쓸지, 키보드로 받을지, 음성으로 받을지

     

    적절하게 구현해서 끼워넣게 한다면, 자기가 짠 코드가 저 전체 프로그램 수행 중에 호출이 되는 것

     

     

    다른 예

     

    라이브러리는 톱, 망치, 삽같은 연장 즉, 도구

     

    사람이 직접 들고 썰고, 바꿔들고 내리치고, 다시 바꿔들고 땅을 파는 것

     

    프레임워크는 차, 비행기, 배같은 탈 것

     

    사람이 타서 엔진 켜고, 기어 넣고, 핸들 돌리고, 운전하거나 조정하거나 하는것

     

    도구를 쓸 때, 급하면 썰어야할 곳에 망치를 사용해도 되고 땅 파야할 곳에 톱으로 땅을 긁어내도 된다.

     

    사람은 도구를 선택하는 입장이기 대문에, 어떤 도구를 사용하던 원하는 것을 만들어낼 수만 있으면 된다.

     

    반면, 탈 것은 정해진 곳으로만 다녀야 한다. 차를 타고 하늘을 날거나, 배를 타고 땅으로 갈 수 는 없다.

     

    하지만, 그 목적에 만들어져 있기 때문에, 톱이나 망치를 들고 먼저 탈 것을 만들어야할 필요가 없다.

     

    그냥 정해진 규칙에 맞춰서 엔진, 기어, 핸들만 잘 돌리면 된다.

     

    라이브러리와 달리 프레임 워크는 이미 프로그래밍할 규칙이 정해져 있다.

     

    예를 들어, 설정파일로 사용되는 XML에 어떤 태그를 써야하며, 어떤 함수를 추가적으로 작성해야하고,

     

    소스 파일을 어느 위치에 넣어야하며, DB와 연동하기 위해 무엇을 써넣어야 하는지는 이미 정해져 있다.

     

    보통 이런 대부분의 작업은 프레임워크가 하고자 하는 일에 비하면 아주 작은 일이며, 사람은 극히 일부분만

     

    조정함으로써 목적을 달성할 수 있다.

     

    만약, 프레임워크가 담당하는 부분이 내가 하고자 하는 목적과 다를 경우에는 어떻게 해야할까

     

    그럼 그건 그냥 프레임워크를 잘못 사용한 것

     

    더 목적에 가까운 프레임워크를 찾아보면 대부분 존재하기 때문에 찾아 쓰면 되고

     

    없거나 구하기 힘들다면, 비슷한 프레임워크를 라이브러리 단계에서 변경해서 다른 프레임워크로 만들면 된다.

     

    차를 튜닝한다음, 차를 다시 운전하면 된다는 것

     

    프레임 워크 없이 그냥 라이브러리만 사용해서 코드를 짜도 상관없다

     

    다만 전부 다 다시 만들 능력과 시간적 여유가 충분하다면..

     

    스스로 만든 프레임워크는 버그도 스스로 잡아야하지만, 남들이 만들어놓은 프레임워크는 쓰는 사람이 많은 만큼

     

    그만큼 수정이나 업데이트도 빠르다.

     

     

    '고급 JAVA' 카테고리의 다른 글

    JavaFX 정리  (0) 2020.05.16
    API  (0) 2020.04.24
    JSON  (0) 2020.04.24
    IBatis  (0) 2020.03.26
    Framework (프레임워크)란?  (0) 2020.03.21

    댓글

Designed by Tistory.