인프런 커뮤니티 질문&답변

권정익님의 프로필 이미지

작성한 질문수

프레임워크, 라이브러리 의미와 차이

해결된 질문

24.06.05 14:19 작성

·

108

0

프레임워크는 미리 작성된 코드를 말하고,

라이브러리도 이미 만들어진 코드인 거 같고....

 

자바에서 프레임워크와 라이브러리의 의미가 뭔지 잘 이해가 가지 않습니다.

스프링프레임워크는 스프링에서 지원하는 프레임워크인데 어떤게 스프링 프레임워크를 의미하는지도 잘....모르겠습니다.

쉽게 설명해주실 수 없을까요...ㅠ

답변 1

2

weallnoob님의 프로필 이미지

2024. 06. 05. 15:36

라이브러리는 말씀하신것처럼 이미 만들어진 코드들 즉, 함수들이 모여서 책처럼 된것입니다. 예를 들어 "사칙연산" 라이브러리에는 def sum(): def dev(): def minus(): 등과 같은 함수들이 모여 있고, 그것을 불러와서 사용하는 것이죠.

프레임 워크는 "라이브러리를 부를 필요없이 그냥 바로 사용하기 위한 시스템" 이라고 보시면 되겠습니다.
예를 들어 "사칙연산" 사이트를 만든다고 할때, 프레임워크를 설치하면, 위의 함수들을 즉시 사용가능한 사이트가 만들어지고, 이를 편집 또는 추가하여, 원하는 형태로 개조하는 것입니다.

요약
>라이브러리 : 레고 블럭 (성을 만들고 싶다면 적합한 블럭들을 모아서 기초부터 성을 만들어야 합니다.)
>프레임 워크 : 이미 만들어져 있는 성을 개조하는 것
정도로 이해하시면 되겠습니다.

권정익님의 프로필 이미지
권정익
질문자

2024. 06. 05. 20:41

오오...! 뭔가 거의 잡힐 거 같아요!! 답변 감사합니다!

괜찮으시다면 추가 질문 해도 될가요??ㅠㅠ

혹시 제가 이해한 게 맞는 건지 조금 애매해서요ㅠㅠ

 

  1. 그러면 라이브러리는 자바에서 제공하는 메서드를 모아놓은 클래스를 의미한다고 생각해도 되는 건가요??

음... List나 java.util같은 것들도 라이브러리에 속하는 건가요>>??

(예를 들어: 사칙연산이 필요할 때 -> 정적클래스에 접근해서 메서드를 호출하는 이러한 행위도 라이브러리를 사용하는 것.)

 

  1. 프레임워크는 완성된 것들을 가져와서 필요한 형태로 바꿔서 바로 사용할 수 있고,

완성형이다.

 

  1. 성으로 비유하자면 라이브러리를 쌓아서 성을 완성할 수 있는 자잘한 자재들이고,

    프레임워크는 이미 건축이 끝난 성이다.

     

     

  2. 그러면 결국 프레임워크도 라이브러리의 조합으로 탄생한 결과물. 이라고 볼 수 있는거겠죠??

 

weallnoob님의 프로필 이미지

2024. 06. 06. 00:05

  1. List나 java.util 같은 것들도 라이브러리에 속하는 걸까요?
    비슷하지만 조금 개념이 다릅니다,java라는 라이브러리 안의 util(java.util)이라는 패키지안에, List는 클래스입니다.

    라이브러리 > 패키지 > 클래스 > 메서스 순이라고 보시면 되겠습니다.

    예를 들어, import java.util.ArrayList;


    ArrayList<String> tmp_list = new ArrayList<String>();


    temp_list.add("문자열"); 라는 코드가 있을때,

    1. java -> 라이브러리
    2. java.util -> 패키지
    3. ArrayList -> java.util 패키지에 속한 ArrayList 클래스
    4. temp_list -> ArrayList의 인스턴스
    5. add -> 메서드 입니다.

    사실 개념도 중요하지만 원하는 기능을 가져와 사용하거나 개조하는게 더 중요하기 때문에 심각하게 구분하지 않아도 문제 없습니다.


    2. 그러면 결국 프레임워크도 라이브러리의 조합으로 탄생한 결과물??
    정확히는 패키지와 라이브러리들의 조합이라고 보시는게 더 정확합니다.

    모든 프레임 워크들은 프레임 워크를 개발하신분이 개인적으로 개발한 코드들도 있겠지만, 기본적으로 여러 라이브러리들을 사용해서 짜집기하는 경우가 많습니다.
    이는 JAVA 뿐만아니라 거의 모든 언어가 동일하게 사용합니다.

    그래서 left-pad 사건처럼 어떤 패키지가 죽게되면 해당 패키지를 사용하는 모든 코드가 죽어버리는 사건이 벌어지기도 합니다.
    image

권정익님의 프로필 이미지
권정익
질문자

2024. 06. 06. 10:29

헷갈렸던게 속 시원하게 내려갔습니다ㅠㅠ 감사합니다 정말!!!!ㅠㅠ