내일배움캠프 사전캠프 JAVA 걷기반
🚀 JAVA
JAVA 란?
Java는 범용 프로그래밍 언어로, 1995년에 Sun Microsystems(현재 Oracle)에 의해 처음 출시되었습니다. 객체 지향 프로그래밍(OOP) 언어이며, 플랫폼 독립성, 강력한 보안성, 풍부한 라이브러리 등을 갖춘 특징 덕분에 전 세계적으로 널리 사용되고 있습니다.
JAVA 주요 특징
- 플랫폼 독립성 (Write Once, Run Anywhere)
- Java는 JVM(Java Virtual Machine) 위에서 실행되기 때문에, 어떤 운영체제에서도 같은 Java 프로그램을 실행할 수 있습니다.
- 즉, 한 번 작성한 코드는 Windows, macOS, Linux 등 어떤 환경에서도 실행 가능.
- 객체 지향 프로그래밍 (Object-Oriented Programming)
- Java는 객체(클래스)를 중심으로 설계되며, 재사용성과 유지보수가 뛰어남.
- 풍부한 라이브러리와 API
- 다양한 기능을 지원하는 표준 라이브러리와 프레임워크들이 잘 갖추어져 있음 (예: java.util, java.io, Spring 등).
- 자동 메모리 관리 (Garbage Collection)
- 프로그래머가 직접 메모리를 해제하지 않아도 되며, JVM이 자동으로 불필요한 메모리를 정리함.
- 멀티스레딩 지원
- 동시에 여러 작업을 수행할 수 있는 기능이 내장되어 있어 복잡한 애플리케이션 구현에 유리함.
- 보안
- Java는 강력한 보안 모델을 가지고 있어 네트워크 환경에서 안전하게 실행될 수 있음.
🚀 Spring
Spring 프레임워크란?
Spring은 Java 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로, 주로 웹 애플리케이션 및 서버 개발에 사용됩니다.
Spring 장점
- 높은 확장성과 유연성
- 객체 지향 설계 철학에 충실
- 다양한 모듈과 생태계 제공 (Spring MVC, Spring Data, Spring Security 등)
- 테스트 용이 (DI 기반 구조로 단위 테스트 수월함)
- 커뮤니티와 자료가 풍부함
Spring 단점
- 초기 설정 복잡 (XML 또는 Java Config 설정이 많음)
- 러닝 커브가 있음 (DI, AOP 등 개념 학습 필요)
- 설정 관리가 어려움 (애플리케이션이 커질수록)
🚀 Spring Boot
Spring Boot 란?
Spring Boot는 Spring 프레임워크를 더 쉽게 사용하도록 만든 프레임워크입니다.
Spring의 복잡한 설정 문제를 해결하고, 빠르게 애플리케이션을 개발할 수 있도록 도와줍니다.
Spring Boot 특징
| 특징 | 설명 |
|---|---|
| 자동 설정 (Auto Configuration) | 대부분의 설정을 자동으로 구성해줌 |
| 내장 서버 제공 | Tomcat, Jetty 등을 내장해 바로 실행 가능 (war → jar) |
| 간단한 의존성 관리 | spring-boot-starter-* 의존성으로 필요한 기능 쉽게 추가 |
| 실행 가능한 JAR 파일 | java -jar 명령으로 애플리케이션 실행 |
| Production-ready | Actuator, metrics, 모니터링 기능 내장 |
Spring vs Spring Boot 차이점
| 항목 | Spring | Spring Boot |
|---|---|---|
| 설정 방식 | 복잡한 XML, Java 설정 필요 | 대부분 자동 설정 |
| 서버 설정 | 외부 WAS 필요 | 내장 Tomcat 사용 가능 |
| 프로젝트 시작 | 복잡한 초기 설정 필요 | Spring Initializr로 빠르게 시작 가능 |
| 배포 | WAR 파일로 배포 | JAR 파일로 배포 가능 |
| 목표 | 유연하고 확장성 있는 프레임워크 제공 | 빠른 개발, 설정 간소화 |
결론
| Spring | Spring Boot |
|---|---|
| 강력하고 유연한 프레임워크 | 빠르고 쉽게 Spring을 쓸 수 있도록 개선된 도구 |
| 대규모 프로젝트에서 유리 | 초기 개발 속도 빠름, 스타트업/소규모 서비스에 적합 |