개발지식 먹는 하마 님의 블로그

Java와 Spring 알아보기 본문

TIL

Java와 Spring 알아보기

devhippo 2025. 1. 14. 17:46

[Java]

Java는 High-level의 객체 지향 프로그래밍 언어로 이식성이 높다는 장점이 있다.
Java와 JavaScript는 명칭에 동일하게 Java가 들어가지만 엄연히 다른 언어이다.
Java는 범용 프로그램 언어, JavaScript는 웹에서 실행되는 언어이다.

Java 용어 설명
JDK  Java 개발 키트
JRE  Java 런타임 환경
JVM  Java Virtual Machine
Java 바이트코드 JRE의 일부인 JVM을 위한 명령어 집합
Java API  기본 객체, 네트워킹 및 보안 기능, XML 생성 및 웹 서비스를 포함하는 광범위한 라이브러리 세트
Java 애플리케이션 서버 트랜잭션 관리, 보안, 클러스터링, 성능, 가용성, 연결성 및 확장성 등의 기능을 통해 엔터프라이즈 애플리케이션을 위한 안정적인 배포 환경 형성

 

< 엔터프라이즈 애플리케이션 개발에서 Java의 중요성 >

 Windows, macOS 및 Linux에서 사용할 수 있는 JDK 다운로드 후 Java로 코딩 시, 컴파일러가 이를 Java 바이트코드로 변환한다. Java 바이트코드는 JVM을 지원하는 모든 시스템에서 수정 없이 실행된다. Java와 JVM, Java API 및 전체 개발 환경으로 구성된 Java 소프트웨어 플랫폼이 만나면 시너지가 엔터프라이즈 소프트웨어 개발에서 강력하고 검증된 시너지를 발휘한다.

< 기술적 이점 >

  •  서로 다른 디바이스에서의 상호 운용성
  •  모듈식 프로그램과 재사용 가능한 코드로 개발 주기를 단축, 수명 연장 가능
  • 플랫폼 확장성
  • 새로운 사용 사례에 적응할 수 있는 능력이 높음

[Spring]

< Spring의 특징 >

의존성 주입
Dependency Injection
객체 간의 의존성을 관리하여 코드의 결합도를 낮추고 테스트 용이성을 높인다.
제어의 역전
Inversion of Control
객체의 생성과 생명주기를 컨테이너가 관리한다.
관점 지향 프로그래밍
Aspect-Oriented Programming
공통 기능(예: 로깅, 보안)을 모듈화하여 코드의 중복을 줄이고 유지 관리를 용이하게 한다.
트랜잭션 관리 데이터베이스 작업 시 일관성과 무결성을 유지하도록 지원한다.
유연한 데이터 접근 JDBC, JPA 등 다양한 데이터 접근 기술을 지원하여 데이터 소스와의 연동을 간편하게 한다.
모듈화 필요한 모듈만 선택하여 사용할 수 있어 경량화된 애플리케이션 개발이 가능하다.

< 장점 >

  • 생산성 향상
  • 테스트 용이성 : 의존성 주입과 모듈화를 통해 단위 테스트와 통합 테스트를 쉽게 수행 가능함
  • 유연성과 확장성

< 단점 >

  • 복잡한 초기 설정
  • 높은 학습 곡선
  • 성능 오버헤드

< Spring과 Spring boot의 차이 >

 Spring boot는 Spring 프레임워크를 기반으로 한 확장 프로젝트로, 복잡한 설정을 자동화하여 빠른 개발을 지원한다.
내장 서버(Tomcat, Jetty 등)를 통해 독립 실행형 애플리케이션을 쉽게 생성할 수 있다. 

따라서, 둘의 가장 대표적인 차이는 Spring은 세밀한 제어가 필요하고 Spring boot는 설정이 간편하다는 점이다.

 

 

[정보 출처]

https://www.ibm.com/kr-ko/topics/java

 

Java란 무엇인가요? | IBM

C 및 C++ 언어를 기반으로 하는 Java는 수십억 개의 디바이스에서 실행되는, 널리 사용되는 객체 지향 프로그래밍 언어이자 소프트웨어 플랫폼입니다.

www.ibm.com

 

https://spring.io/projects/spring-boot

 

Spring Boot

 

spring.io

https://spring.io/projects/spring-framework

 

Spring Framework

The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. A key element of Spring is infrastructural support at the application level: Spring focuse

spring.io