글쓰기

개인 공부 상자/참고 자료

API, 프레임워크, 라이브러리 정리

RSpring41 2021. 9. 27. 12:06

# API란?

Application Programming Interface에 약자로 사전에서는 "API는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 '인터페이스'를 뜻한다."라고 설명되어 있다.

(인터페이스 - 서로 다른 두 개의 시스템, 장치에서 서로 접근하는데 도움을 주는 시스템)

 

글쓴이가 사용해본 API는

-영화 순위 API는 내가 조회하고 싶은 날짜에 영화 순위 데이터를 가져오고 싶다면 API를 통해 날짜 정보를 전송하고 응답으로 영화 순위를 반환받았다. 

-Speech To Text는 녹음한 음성 파일이나 현재 마이크를 통해 들어오는 음성을 전송하면 텍스트 형태에 데이터로 반환받았다.

 

글쓴이 마음대로 다시 정리해 보자면 'API'는

"API는 서로 다른 시스템에서 정보를 교환하거나 제어할 수 있는 기능을 가지고 있는 인터페이스(시스템)"이다.

 

 


# 프레임워크(framework)란

Gof의 디자인 패턴으로 유명한 랄프 존슨(Ralph Johnson)은 "프레임워크란, 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것"이라고 정의하였다.

(Gof - 해당 분야에 대표적인 4인)

(디자인 패턴 - 문제를 해결하기 위한 방법을 정의하여 재사용하기 용의 하게 정리해 놓은 것)

 

또는, 사전적인 의미로는 소프트웨어 개발을 수월하게 하기 위해 구체적인 기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화된 형태로 제공하는 소프트웨어 환경을 말한다.

 

국비 지원 교육을 들으면서 Spring framework를 처음 접했고 실습해보면서 초기 웹페이지 교육에서 사용된 'Dynamic Web Project'와 차이점을 정리해 보았다.

 

- 'Dynamic Web Project'는 웹 서비스를 구현' 할 때는 Servlet를 이용하여 Controller를 구성하고 각 Service에 맞는 DAO를 생성해주었다. 이렇게 되면 하나에 기능마다 DAO가 생성되어야 하며 내부에 중복되는 코드가 너무 많았다. 

- 'Spring framework'는 Mapper.xml파일과 @Mapper를 이용하여 간결하게 SQL문을 작성 및 사용할 수 있으며, @Controller를 통해 ForntController를 통해 통합했던 Servlet기능을 하나로 통합하여 작성 및 관리할 수 있었다.

(DB에 연동하려면 maven를 이용하여 해당 API를 추가해 주어야 한다.)

글쓴이 마음대로 다시 정리해 보자면 '프레임워크'는

"소프트웨어 개발을 수월하게 하기 위해 자주 사용되는 기능들에 설계와 구현을 재사용하기 편하게 현업화 된 형태로 제공하는 소프트웨어 환경"이다.

 

 


# 라이브러리(Library)란?

사전적 의미로는 "소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다."으로 정의되어 있다.

 

라이브러리 = 도서관이라는 개념과 같이 소프트웨어를 개발할 때 반복적인 코드 묶음이 있다거나 자주 생성하여 사용되어야 하는 메서드, 변수 등등을 '비휘발성'으로 만들어 간단한 호출을 통해 사용하는 것으로 정의될 수 있다.

 

예를 들어서 게시글 목록을 만드는데 하나에 게시글에 5개에 정보를 표현하기 위해서 5개에 정보를 가져오고 출력하는 메서드를 만들 것이다.만약 다른 영역에 새로운 게시글 목록을 만들려고 한다면 위에서 선언하였던 5개의 정보를 가져오는 메서드를 또다시 작성해서 사용해야만 한다. 이때 5개에 정보를 가져오는 메소드를 가진 '라이브러리'를 사용한다면 간단하게 라이브러리를 불러와 해당 기능을 호출하여 간단하게 게시글 목록을 구현할 수 있을 것이다.

 

글쓴이 마음대로 다시 정리해 보자면 '라이브러리'는

"소프트웨어 개발에 수월하도록 반복되는 변수, 메서드, 기능 등을 호출하여 사용할 수 있게 정리해 놓은 비활성 자원의 모임"이다.

 

 

 

 

 

 

'개인 공부 상자 > 참고 자료' 카테고리의 다른 글

applicationContext와 태그 정리  (0) 2021.10.05
Spring내부 Tomcat과 외부 Tomcat차이  (0) 2021.10.03
DispatcherServlet란  (0) 2021.10.02
web.xml이란  (0) 2021.10.02
자바 버전별 특징  (0) 2021.09.25