"소프트웨어 개발을 위한 뼈대(기반 구조)를 제공하는 도구로, 애플리케이션의 전체적인 제어 흐름을 관리하는 역할"
- 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 기능을 갖추고 있는 골격, 뼈대를 제공
- 앱/서버 등의 구동, 메모리관리 등 공통된 부분은 프레임워크가 관리하고, 사용자는 프레임워크가 정해준 방식대로 클래스, 메소드를 구현
- 소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합
- 개발자가 코드를 작성하고 프레임워크가 실행
=> 개발자는 프레임워크의 규칙을 따라야만 한다. (제어의 흐름을 프레임워크에 위임)
대표적인 프레임워크에는 Spring, Spring boot, Django, React, Vue.js 등이 있다.
"특정 기능을 수행하는 코드의 모음으로, 개발자가 필요할 때 직접 호출하여 사용"
- 개발자들이 이미 만들어놓은 기능을 제공
ex) List 자바 표준 라이브러리에서는 get, add, remove 등의 다양한 기능이 이미 구현되어 있어, 가져다 쓰기만 하면 됨- 단순 활용가능한 도구들의 집합
- 미리 작성된 코드, 변수, 함수, 클래스가 포함된다.
- 개발자가 코드를 실행하는 과정에서 필요한 기능을 직접 호출
대표적인 자바 표준 라이브러리에는 Math, File, Buffer, List, String 등이 있다.
제어의 역전(IoC)
: 개발자가 작성한 객체나 메서드의 제어를 개발자가 아니라 외부에 위임하는 설계의 원칙
Spring의 DI (IoC 컨테이너가 의존성을 주입해줌)
@Repository
public class SimpleRepository {
public String getMessage() {
return "Hello, Spring!";
}
}
@Service
public class SimpleService {
private final SimpleRepository repository;
// 생성자 주입
public SimpleService(SimpleRepository repository) {
this.repository = repository;
}
public String fetchMessage() {
return repository.getMessage();
}
}
public class MathExample {
public static void main(String[] args) {
int a = 30;
int b = 50;
int maxValue = Math.max(a,b); // 필요할 때 직접 호출하여 사용
System.out.println(maxValue);
}
}
참고 - https://sharonprogress.tistory.com/169
https://idkim97.github.io/2022-08-16-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC%20vs%20%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC/#google_vignette