TIL
[250318 TIL] 프레임워크, 라이브러리, Java 웹 기술의 역사
도원좀비
2025. 3. 18. 21:17
📚 프레임워크 vs 라이브러리
| 구분 | 프레임워크 | 라이브러리 |
| 개념 | 애플리케이션 개발을 위한 전체적인 틀 제공 | 특정 기능을 수행하는 코드 모음 |
| 제어 흐름 | 프레임워크가 제어 (IoC, Inversion of Control) | 개발자가 직접 호출 |
| 예시 | Spring, Django, Angular | Lombok, JUnit, Jackson |
📌 프레임워크 특징
- 일관된 구조 제공 → 협업 용이
- 비즈니스 로직에 집중 가능
- 보안 기능 기본 제공
📌 라이브러리 특징
- 코드 재사용 가능 → 생산성 증가
- 테스트 및 커뮤니티 지원
1️⃣ 어노테이션 (Annotation)
📌 정의: 코드에 메타데이터 추가 기능 제공
📌 예시
- @Override : 부모 클래스 메서드 오버라이딩
- @Deprecated : 사용 중단된 코드 표시
- @SuppressWarnings("unused") : 경고 억제
📌 Lombok 어노테이션
- @Getter, @Setter : getter/setter 자동 생성
- @ToString : toString() 자동 생성
- @NoArgsConstructor, @AllArgsConstructor : 생성자 자동 생성
- @Builder : 빌더 패턴 적용
- @Slf4j : 로그 객체 자동 생성
2️⃣ Spring Framework & Spring Boot
📌 Spring Framework
- 엔터프라이즈 애플리케이션 개발을 위한 Java 프레임워크
- MVC 패턴 지원 → 유지보수 용이
- 유연한 모듈화 가능
📌 Spring Boot
- Spring을 쉽게 사용하도록 만든 프레임워크
- 설정 자동화 (Auto Configuration)
- 내장 WAS (Tomcat) 포함
- 라이브러리 호환성 자동 관리
3️⃣ Gradle - 빌드 관리 도구
📌 정의: Java 프로젝트의 빌드, 의존성 관리 자동화
📌 Gradle의 특징
- Build Cache: 빌드 결과물 재사용 → 속도 향상
- 점진적 빌드: 변경된 부분만 빌드
- 데몬 프로세스: 백그라운드 실행으로 빌드 시간 단축
📌 build.gradle 주요 구성
plugins { id 'java' } repositories { mavenCentral() }
dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' }
4️⃣ Java 웹 기술의 역사
| 연도 | 기술 | 특징 |
| 1997 | Servlet | 동적 웹 개발의 시작 |
| 1999 | JSP | HTML 내 Java 코드 삽입 가능 |
| 2000~ | MVC 패턴 도입 | UI, 로직, 데이터 분리 |
| 2003~ | Spring MVC | 웹 애플리케이션 구조화 |
| 2007~ | Annotation 기반 Spring MVC | 설정 복잡도 감소 |
| 2014~ | Spring Boot | 설정 자동화 및 내장 WAS 제공 |
📌 Spring MVC vs Spring WebFlux
- Spring MVC : 동기식 프로그래밍 → 안정적
- Spring WebFlux : 비동기 & 넌블로킹 → 실시간 처리 최적화
📌 현재 실무에서는
- Spring MVC 사용 多 (RDBMS 지원 & 쉬운 유지보수)
✅ Spring Boot + Gradle 사용 시 웹 개발 간편화
✅ Lombok 활용으로 코드 가독성 향상
✅ Spring MVC 기반의 웹 애플리케이션 개발 학습 예정 🚀