[SEB BE]Section 2. 프레임워크와 라이브러리의 장,단점과 차이!

박두팔이·2023년 2월 2일
0

스프링프레임워크

목록 보기
1/18

프레임워크와 라이브러리

정의

❗️프레임워크를 직역하여 해석하면 제공받은 일정한 요소와 틀 규약을 가지고 만드는 일이다.

이를 IT에 접목시키면 특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공하는 프로그램 으로 Spring, Django, Ruby on Rails 등이 이에 속하며, 어플리케이션 틀과 구조를 프레임워크에서 제어하고, 프레임워크 위에서 개발자의 코드가 동작한다.

❗️그렇다면 라이브러리는 무엇일까? 라이브러리는 소프트웨어개발을 편하게 할 수 있도록 기능을 제공하는 도구의 모음 이며, Java에서 Apache Common Library, C#에서는 STL 등이 이에 속한다.

한마디로 정의하면, 라이브러리는 애플리케이션을 개발할 때 필요한 기능을 미리 코드로 구현해놓은 집합체(데이터)라고 할 수 있다.


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

  • 애플리케이션에 대한 제어권의 차이
    프레임워크는 정해진 규약이 있지만 라이브러리는 정해진 규약이 없다. 따라서 한번 정해진 프레임워크를 교체하는 일은 어렵지만 라이브러리는 쉽게 교체가 가능하여 선택적으로 사용할 수 있다.

예를들어 아래와 같은 코드가 있다.

StringUtils.upperCase(message);

StringUtils 클래스는 Apache Commons Lang3 라이브러리의 유틸리티 클래스 중 하나인데 애플리케이션이 동작하는 중에 이 StringUtils 클래스의 upperCase() 메서드의 파라미터로 전달하는 문자열(message 변수)을 대문자로 변환한다.

❓ 그렇다면 StringUtils 클래스가 라이브러리라는 것을 어떻게 판단할 수 있을까?

애플리케이션코드는 애플리케이션을 개발한 개발자가 작성을 한다. 개발자가 짜 놓은 코드내에서 필요한 기능이 있으면 해당 라이브러리를 호출해서 사용하는 것이다.

즉, 라이브러리는 애플리케이션의 흐름을 주도하는 주도권이 개발자에게 있다는 뜻이다.

그러나 반대로 프레임워크는 아니다.

1. 애너테이션
@SpringBootApplication
@RestController

2. main() 메서드 내의 SpringApplication.run()메서드
public static void main(String[] args) {
     SpringApplication.run(SampleApplication.class, args);
}

애너테이션과 스프링애플리케이션의 rum()메서드는 스프링프레임워크에서 지원하는 기능이다. 라이브러리와는 다르게 코드상에 보이지 않는 많은 일들을 뒤에서 하고있다. 즉, 애플리케이션의 흐름을 주도하는 것은 개발자가 아닌 프레임워크에게 있다는 것이다.

이것이 바로 스프링 프레임워크의 핵심 개념인 IoC(Inversion Of Control, 제어의 역전)이다.


💡자바에서 발견하는 프레임워크?

JAVA에서도 프레임워크를 발견할 수 있는데 그것이 바로 컬렉션 프레임워크(Collections Framework)다.

컬렉션 프레임워크는 자바클래스에서 기본 뼈대로만 구성되어 있는(추상메서드로만 정의되어있는) 인터페이스라고 할 수 있다. 컬렉션은 Map,Set,List와 같은 인터페이스와 그 인터페이스들을 구현한 집합이다.

결론적으로 프로그래밍 상에서의 프레임워크는 프로그래밍을 하기위한 기본적인 틀이나 구조를 제공한다는 것을 알 수 있다.

프레임워크사용의 장점과 단점?

장점

  • 코드작성의 편의성
  • 효율적인 애플리케이션 관리
 로직의 문제파악과 수정 등 유지보수의 편의성.
 코드의 재사용과 기능확장에 용이하다.
  • 코드작성의 편리성
    프레임워크는 기본 구조가 이미 만들어져 있기 때문에 개발자가 애플리케이션의 핵심로직을 개발하는 것에 집중할 수 있도록 해준다.

  • 효율적인 애플리케이션 관리
    프레임워크의 규약에 맞게 코드를 작성하기 때문에 유지보수를 보다 빠르고 쉽게 처리할 수 있도록 한다. 로직의 문제점을 파악하거나 수정하는 경우에도 빠른대처가 가능하다. 또한 동시에 내가 작업했던 코드를 다른 사람이 수정할 경우에도 코드의 흐름을 빠르게 파악할 수 있다. 코드의 재사용또한 용이하며 기능의 확장 또한 쉽게 할 수 있다.

단점

  • 프레임워크에 대한 추가학습이 필요
  • 유연한 개발이 어려움

프레임워크를 사용하기 위해선 프로그래밍 언어뿐 아니라 프레임워크에서 정하는 규약들을 추가적으로 학습해야한다는 단점이 있다.

또한 프레임 자체가 구조나 틀을 의미하는 것이기 때문에 이미 만들어진 애플리케이션에서 프레임워크를 변경하거나 혹은 프레임워크를 사용하지 않도록 변경할 경우 많은 시간과 노력이 필요하다.

profile
기억을 위한 기록 :>

0개의 댓글