라이브러리 ( 자주 사용하는 코드의 집합 )
응용 프로그램 개발을 위해 필요한 기능을 모아 놓은 소프트웨어이며,
그 기능에 대한 도구 또는 함수들의 집합이라고 할 수 있다.
동작하는 완전한 프로그램이 아닌, 특정한 부분 기능만을 수행 하도록 제작된 ,컴파일 되어 기계어의 형태로
또는 대상 플랫폼에 따라서는 바이트코드로 존재하는 프로그램. ( 이것을 실행하게 해주는게 API )
- 프로그래머가 어떠한 기능을 수행하기 위해 도움을 주는 또는 필요한 것을 제공해주는 역할.
- 라이브러리는 재사용이 필요한 기능으로 반복적인 코드 작성을 없애기 위해 언제든지 필요한 곳에서 호출 해서 사용
- 프로그램을 만들때 기존에 만들어진 함수들을 재활용함으로써, 프로그램의 제작 시간과 노력을 줄일 수 있다
- 구성 데이터, 문서 ,도움말 자료 ,메시지 틀 , 미리 작성된 코드 , 서브 루틴 ( 함수 ) , 클래스 , 값 ,자료형 사양 등..
- 독립성을 가지고, 응용 프로그램이 능동적으로 라이브러리를 사용한다.
- 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비 휘발성 자원의 모임.
더보기
모듈 = 라이브러리와 비슷한 개념이지만 모듈은 프로그램에서 하나의 기능을 수행하는 코드의 집합.
라이브러리가 모이면 하나의 모듈이 될수 있고 라이브러리 자체를 하나의 모듈로 볼수도 있다.
API ( Application Programing Interface )
프로그래밍 언어에서 라이브러리를 사용할 수 있도록 소스코드 수준에서 인터페이스를 노출 시킨것
API란 간단하게 이해하면 “내가 만든 프로그램이 개인 개발자, 기업, 기관이 제공하는 기능, 프로그램 등을 활용할 수 있게끔 도와주는 중간 매개체”
- 직역하면 응용 프로그램을 만드는데 사용되는 interface이다. 여기서 interface란 사물간,사람간 또는 사람과 사물간에 상호 작용을 할 수 있도록 연결해주는 장치,방법,형식,공간 등을 통칭한다
- API는 응용 프로그램을 만드는 데 필요한 연결 장치, 매개체라고 할 수 있다. 이러한 연결 장치, 매개체가 필요한 이유는 실제 개발을 진행 할 때 혼자 모든 기능을 다 개발 하기는 너무 힘들기 때문이다.
- 라이브러리와 API는 혼동하기 쉬운데, 실제 개발을 할때 여러 컴포넌트를 합쳐 개발하게되고, 각각의 컴포넌트 들은 API를 가지고 있다. 이때 많은 컴포넌트들이 라이브러리의 형태로 제공되기 때문에 API와 라이브러리는 혼동 할 수있다. 하지만 라이브러리는 컴포넌트 그 자체를 의미하고 API는 그 컴포넌트를 활용하기 위한 규약이다.
더보기
컴포넌트(Component)란 프로그래밍에 있어 재사용이 가능한 각각의 독립된 모듈을 뜻한다.
프레임워크
- 뼈대나 기반구조라는 뜻, 응용프로그램이나 소프트웨어 구현을 수월하게 하기 위해 제공된 소프트웨어 환경
- 프레임워크만으로 실행되지 않고, 기능을 추가해야 하며 , 프레임 워크에 의존하여 개발해야 하고 프레임 워크가 정의한 규칙을 준수해야 한다.
- 프로그래밍을 진행 할 때 필수적인 코드 , 알고리즘 등과 같이 어느정도 구조를 제공해주기 때문에 프레임워크를 사용하는 프로그래머는 이 프레임워크 뼈대 위에서 코드를 작성하여 프로그램을 개발하면 된다.
- 프레임워크는 완성된 제품이 아닌 완성된 제품을 만들기 위해 개발자를 도와주는 또는 기반이 되는 역할을 한다. 즉 , 소프트웨어의 특정 문제를 해결하기 위해 상호 협력하는 클래스와 인터페이스의 집합.
- ex ) Spring ,Django , Node.js
라이브러리와 프레임워크의 차이
흐름이나 제어의 주도권을 어디서 가지고 있는가에 대한 차이..
프레임워크는 전체적인 흐름을 자체적으로 가지고 있어 프로그래머는 그 안에서 필요한 코드를 작성한다.
반면 라이브러리는 프로그래머가 전체적인 흐름을 가지고 있어 라이브러리를 자기가 원하는 기능을
구현하고 싶을 때 가져다 사용할 수 있다.
프레임 워크는 가져다 사용하는 개념보다 프레임워크라는 특정 공간에 들어가서 사용한다는 느낌이 강하다.
'JAVA' 카테고리의 다른 글
JAVA - Optional 사용하기 (0) | 2023.03.30 |
---|---|
RestAPI 정리 (0) | 2023.03.06 |
빌더 패턴이란?? (0) | 2023.02.20 |
JAVA 9 - Collection Factory Method (0) | 2023.02.20 |
HTTP란??? (0) | 2023.02.19 |