250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 레퍼클래스
- 스파르타코딩클럽 #사전캠프
- 스프링부트
- 깃
- 깃헙
- 자바
- Framework
- 내일배움캠프
- Til
- Spring
- 패키지구조
- 스파르타코딩클럽 #개발자 #백엔드
- 스파르타사전캠프
- 계층형
- 함바그
- Java
- 스터디카페
- 요시
- 키오스크
- 스파르타코딩클럽
- optional
- 도메인별
- til #데이터베이스 #sql
- springboot
- 프레임워크
- 캡슐화
- 메모리구조
- jvm
- static
- 사전캠프
Archives
- Today
- Total
John's Code Journey
[TIL] JAVA, Spring 알아보기 본문
728x90
1. 자바란?
자바(Java)는 객체 지향 프로그래밍(Object-Oriented Programming) 언어로, Sun Microsystems에서 1995년에 처음 출시되었습니다. 자바는 플랫폼 독립적이고 웹 기반 애플리케이션을 개발하는 데 유용한 언어로, 서버 사이드 개발, 모바일 앱 개발(Android) 등 다양한 분야에서 널리 사용됩니다.
2. 자바의 작동 방식
자바의 작동 방식은Write Once, Run Anywhere (한 번 작성하고 어디서나 실행 가능)라는 원칙을 기반으로 합니다. 자바 프로그램은 소스 코드를 바이트코드(bytecode)로 컴파일하고, 이 바이트코드는 자바 가상 머신(JVM)에서 실행됩니다.
- 소스 코드 작성: 자바 개발자는 .java 확장자로 프로그램을 작성합니다.
- 컴파일: 자바 컴파일러는 이를 바이트코드로 변환합니다. 바이트코드는 .class 파일로 생성됩니다.
- JVM 실행: 자바 가상 머신(JVM)은 이 바이트코드를 실행합니다. JVM은 운영 체제에 관계없이 동일한 방식으로 동작하기 때문에 자바 프로그램은 다양한 플랫폼에서 실행될 수 있습니다.
3. 자바가 중요한 이유
- 플랫폼 독립성: 자바는 JVM을 통해 어떤 운영체제에서든 동일한 방식으로 실행될 수 있어, 다양한 환경에서 호환성 문제 없이 동작합니다.
- 객체 지향 프로그래밍(OOP): 자바는 객체 지향 언어로, 코드의 재사용성과 유지보수성을 높여줍니다. 프로그램을 객체로 나누어 관리하기 때문에 복잡한 시스템을 효율적으로 개발하고 관리할 수 있습니다.
- 광범위한 활용 분야: 자바는 다양한 애플리케이션에서 사용됩니다. 특히 웹 애플리케이션, 모바일 앱(Android), 데스크탑 애플리케이션, 게임 개발 등에서 널리 사용되며, 대규모 시스템을 구축하는 데 매우 적합합니다.
4. Spring의 특징
Spring은 자바 기반의 애플리케이션 프레임워크로, 대규모 애플리케이션을 개발할 때 유용한 다양한 기능을 제공합니다. 주요 특징은 다음과 같습니다:
- 제어의 역전(Inversion of Control, IoC): 객체의 생성과 관리 책임을 Spring 컨테이너가 담당하며, 개발자는 필요한 객체를 주입받아 사용합니다. 이는 코드의 의존성을 관리하고 결합도를 낮추는 데 도움을 줍니다.
- 의존성 주입(Dependency Injection, DI): 객체 간의 의존 관계를 외부에서 주입하여, 유연하고 테스트하기 쉬운 코드를 작성할 수 있게 합니다.
- 모듈화: Spring은 다양한 모듈로 구성되어 있어, 필요에 맞는 모듈만 선택해서 사용할 수 있습니다. (예: Spring Web, Spring Data, Spring Security 등)
- 트랜잭션 관리: 다양한 트랜잭션 관리 기능을 제공하여 데이터베이스 연산에서 발생할 수 있는 오류를 처리하고, 일관된 상태를 유지할 수 있게 도와줍니다.
- AOP(Aspect-Oriented Programming): 관점 지향 프로그래밍을 지원하여 공통 관심사를 분리하고, 로깅, 보안, 트랜잭션 관리 등을 효율적으로 처리할 수 있습니다.
5. Spring의 장점
- 유연성과 확장성: 다양한 모듈로 구성되어 있어 필요한 부분만 선택하여 사용할 수 있습니다. 또한 다른 프레임워크와 쉽게 통합 가능합니다.
- 테스트 용이성: IoC와 DI 덕분에 객체들이 분리되어 있어 유닛 테스트를 쉽게 할 수 있습니다.
- 대규모 애플리케이션 관리 용이: 모듈화, AOP, 트랜잭션 관리 등 대규모 시스템 개발을 위한 다양한 기능을 제공합니다.
- 커뮤니티와 지원: Spring은 매우 활발한 오픈 소스 커뮤니티와 풍부한 문서, 튜토리얼 등을 제공하여 개발자들이 쉽게 학습하고 적용할 수 있습니다.
- 보안: Spring Security와 같은 모듈을 통해 강력한 인증 및 권한 관리 기능을 제공합니다.
6. Spring의 단점
- 복잡성: Spring은 많은 기능과 설정을 제공하기 때문에, 초보자에게는 학습 곡선이 가파를 수 있습니다. 프로젝트가 커지면 설정이나 코드가 복잡해질 수 있습니다.
- 퍼포먼스 문제: IoC 컨테이너를 사용하여 객체를 관리하는 데 추가적인 오버헤드가 발생할 수 있으며, 이는 대규모 애플리케이션에서 성능 저하를 일으킬 수 있습니다.
- 구성 파일 관리: XML 설정 방식이 많았던 예전에는 복잡한 설정 파일들이 많았고, 이를 관리하는 데 어려움이 있었습니다. (하지만 최근에는 애너테이션 기반 설정이 많이 사용되고 있습니다.)
7. Spring과 Spring Boot의 차이
Spring과 Spring Boot는 둘 다 자바 기반의 애플리케이션 개발을 위한 프레임워크이지만, Spring Boot는 Spring Framework의 확장판으로, 더 쉽게 설정하고 개발할 수 있도록 도와주는 도구입니다.
Spring
- Spring은 다양한 모듈을 제공하는 프레임워크로, 개발자가 필요에 따라 각종 설정을 수동으로 해야 합니다.
- 복잡한 설정(XML 또는 Java Config)이 필요하고, 애플리케이션을 실행하기 위한 웹 서버 설정이나 의존성 관리 등을 개발자가 직접 해줘야 합니다.
Spring Boot
- Spring Boot는 **자동 설정(Auto Configuration)**을 제공하여, 개발자가 복잡한 설정 없이 애플리케이션을 빠르게 개발할 수 있게 도와줍니다.
- 내장된 **웹 서버(Tomcat, Jetty 등)**를 제공하므로, 별도로 서버 설정을 하지 않고 실행할 수 있습니다.
- "기본값을 설정해 놓고, 필요하면 수정하는" 방식으로 설정을 간소화하여 생산성을 높입니다.
- 스타터(Starter) 프로젝트를 제공하여, 필요한 의존성들을 쉽게 추가할 수 있습니다.
'Today I Learned > 스파르타 사전캠프' 카테고리의 다른 글
[TIL] sql 강의 3주차 수강 완료 (0) | 2025.02.07 |
---|---|
[TIL] sql 강의 1주차 2주차 수강 완료 (0) | 2025.02.06 |
[TIL] SQL 집계함수 (0) | 2025.02.05 |
[TIL] SQL 기초 (0) | 2025.02.04 |
Spring 트랙 6기 스타터 노트 (2) | 2025.02.03 |