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 기반의 웹 애플리케이션 개발 학습 예정 🚀