Java
JVM(자바 가상 머신) 위에서 도는 객체지향 언어입니다. 한 번 컴파일하면 OS를 가리지 않고 어디서든 같은 코드가 실행됩니다. 이 프로젝트 백엔드(Spring Boot, Java 17)의 언어예요.
한 줄로
Java? 는 모든 데이터와 동작을 클래스/객체로 표현하고, 값마다 타입을 미리 정해 컴파일 단계에서 실수를 잡아주는 언어입니다. 생태계가 크고 안정적이라 서버 개발에 널리 쓰여요.
- 서버/백엔드 — Spring Boot? 같은 성숙한 프레임워크로 안정적인 API 서버를 만든다
- 큰 규모의 협업 — 타입이 명확해 사람이 많아도 코드 의도가 잘 드러난다
- 이식성 — JVM만 있으면 노트북·서버·클라우드 어디서나 동일하게 실행
- 풍부한 생태계 — DB 연동(JPA?), 보안, 메시징 등 검증된 라이브러리가 많다
핵심 개념
| 개념 | 설명 |
|---|---|
| 클래스 / 객체 | 클래스는 "틀(설계도)", 객체는 그 틀로 new 해서 만든 실체. |
| 타입 | 모든 변수는 타입을 가짐(int, String, 직접 만든 클래스 등). 틀리면 컴파일 에러. |
| 컬렉션 | 여러 값을 담는 그릇. 순서 있는 List, 키-값 짝의 Map 이 대표. |
| 제네릭 | 그릇에 담길 타입을 꺾쇠로 지정. List<String> 는 "문자열만 담는 리스트". |
| 인터페이스 | "무엇을 할 수 있는지"만 정한 약속. 구현 클래스가 실제 동작을 채움. |
| 예외 | 오류 상황을 throw 로 던지고 try/catch 로 받아 처리. |
클래스와 객체
클래스로 틀을 정하고, 그 틀로 객체를 만들어 씁니다.
// 클래스 정의
public class User {
private String name; // 필드
private int age;
public User(String name, int age) { // 생성자
this.name = name;
this.age = age;
}
public String greet() { // 메서드
return "안녕, " + name;
}
}
// 사용
User u = new User("경수", 30);
System.out.println(u.greet()); // 안녕, 경수제네릭과 컬렉션
제네릭? 은 그릇에 담길 타입을 꺾쇠 < > 로 지정합니다.
이렇게 하면 엉뚱한 타입을 넣는 실수를 컴파일러가 막아줘요.
List<String> names = new ArrayList<>();
names.add("경수");
names.add("민지");
// names.add(42); // 컴파일 에러 — String 만 허용
Map<String, Integer> ages = new HashMap<>();
ages.put("경수", 30);
int a = ages.get("경수"); // 30record (간결한 데이터 클래스)
record 는 값만 담는 클래스를 한 줄로 만들어줍니다. 생성자·게터·equals 가 자동 생성돼요. 이 프로젝트의 응답/요청 DTO? 가 주로 record로 작성됩니다.
public record UserDTO(String name, int age) {}
UserDTO d = new UserDTO("경수", 30);
d.name(); // "경수" (게터가 자동 생성됨)람다와 스트림
컬렉션을 가공할 때 반복문 대신 스트림으로 "필터 → 변환 → 모으기"를 흐르듯 표현할 수 있습니다. -> 는 람다(짧은 익명 함수)예요.
List<User> users = List.of(
new User("경수", 30),
new User("민지", 17),
new User("현우", 25)
);
// 성인(19세 이상)의 이름만 모으기
List<String> adults = users.stream()
.filter(u -> u.getAge() >= 19) // 조건에 맞는 것만
.map(User::getName) // 이름으로 변환
.toList(); // [경수, 현우]이 프로젝트의 백엔드 전체 코드가 Java(17)로 작성돼 있습니다.
컨트롤러·서비스·엔티티?가 모두 Java 클래스이고, 요청/응답 DTO는 record 로 만들어요.
Java 위에서 서버를 빠르게 구성해주는 도구가 Spring Boot,
DB를 객체로 다루게 해주는 것이 JPA입니다.
다음 단계
- Java로 서버를 빠르게 구성하는 프레임워크 → Spring Boot
- Java 객체로 DB 테이블을 다루기 → JPA