API (Application Programming Interface)는 두 소프트웨어가 기능이나 데이터를 주고받기 위해 정해놓은 규칙(명세)이다.
쉽게 말해, 서로 다른 프로그램이 정해진 방식에으로 소통할 수 있게 해주는 설명서 또는 사용법을 말한다.
List<String> list = new ArrayList<>();
list.add("추가");
위 코드에서 add()는 우리가 직접 구현한 메서드가 아니지만,
Java API에 정의된 메서드를 호출함으로써 리스트에 데이터를 추가할 수 있다.
add()가 아니라 추가해줘() 같은 임의의 이름을 사용하면 동작하지 않는다.
Java API가 정의한 명세를 따라야만 우리가 의도한 기능이 수행되는 것이다.
Java API는 Java에서 기본적으로 제공하는 기능들의 집합이다.
우리가 Java에서 사용하는 List, Map, Math, Stream 등은 모두 Java API에 포함되어 있으며,
다음과 같이 기능별로 패키지(package)라는 단위로 나뉘어 관리된다.
java.util → 유틸리티 클래스 (List, Map 등)java.io → 입출력 기능 (InputStream 등)java.util.stream → 스트림 처리 기능 (Stream 등)Stream의 사전적 의미는 흐름, 연속적인 흐름이며,
프로그래밍에서는 일련의 데이터를 한 방향으로 흘려보내며 처리하는 구조를 의미한다.
대표적인 예:
InputStreamOutputStreamJava Stream API를 설명하기 전, 먼저 "Stream"은 데이터를 흐름처럼 처리하는 방식 이라는 개념부터 이해하면 된다.
Java Stream API는 위에서 설명한 Stream 개념을 Java에서 공식적으로 구현해 제공하는 기능 집합이다.
Java Stream API에는 다음과 같은 클래스들이 포함되어 있으며,
java.util.stream 패키지 안에 정의되어 있다.
Stream, IntStream, LongStream 등 스트림 인터페이스Collectors, StreamSupport, Spliterator 등 보조 유틸리티 클래스이해하기 쉽게 비유로 포현해보자면 다음과 같다.
| 비유 대상 | 실제 의미 |
|---|---|
| 📦 java.util.stream 패키지 | 기능이 정리되어 담긴 서랍 |
| 🔧 Stream API | 서랍 안에 있는 공구 세트 (기능 집합) |
| 🛠️ Stream, Collectors, map, filter... | 우리가 직접 사용하는 공구들 |
| 🧑🔧 개발자 | 공구를 조합해 데이터를 가공하는 사람 = Stream 사용자 |
이 기능들은 java.util.stream 패키지 안에 포함되어 있고,
우리는 그 안의 메서드들(map, filter, collect 등)을 조합해 데이터를 처리한다.
이러한 과정을 우리는 흔히 "Stream을 사용한다"고 말하는 것이다.