본문 바로가기
스파르타 내일배움캠프/TIL(Today I learned)

25.02.04 사전캠프 TIL - Java와 Spring

by pandastic 2025. 2. 4.
반응형

 

목차

     

     

    1. Java란?

    • 객체 지향 프로그래밍 언어 및 소프트웨어 플랫폼.
    • 규칙 및 구문은 C 및 C++ 언어를 기반으로 함.

     

     

    ※ Java와 Javascript의 차이

    Java Javascript
    컴파일 필요 컴파일 불필요
    어디서나 실행됨 웹 브라우저에서만 실행됨.

     

    ※ Java의 작동방식

    • Java로 개발하려면 JDK(Java 개발 키트)를 다운로드 해야함.
    • Java 언어로 프로그램 작성 → 컴파일러가 프로그램을 Java 바이트 코드로 변환

    * Java 바이트 코드 : Java 런타임 환경(JRE)의 일부인 Java 가상 머신(JVM)을 위한 명령어 집합.

    * JVM(Java 가상 머신) : Java 바이트 코드를 구문 분석하고, 실행하거나 해석함.

     

     

    ※ Java가 중요한 이유

    • 전 세계 스마트폰 중 가장 많은 점유율을 차지하고 있는 Android 운영 체제의 핵심을 형성.
    • 모든 산업 분야에서 웹 애플리케이션을 개발하기 위한 이상적인 프레임워크.
    • 안정적인 배포 환경 형성.

     

    ※ 기술적 이점

    • 상호 운용성 : Java의 객체 지향 아키텍처를 사용하면 재사용 가능한 코드를 만들 수 있어 개발 주기를 단축하고, 애플리케이션의 수명을 연장할 수 있음.
    • 플랫폼 확장성 : Java의 핵심 속성으로, 애플리케이션을 모바일에서 데스크톱으로 마이그레이션 하거나, 앱을 데스크톱 소프트웨어에 통합하는 등 개발 주기를 생략할 수 있음.
    • 적응성 : 적응성이 좋아 새로운 기술에 사용하는 언어로 많이 쓰임. 새로운 라이브러리를 지속적으로 개발하고 공유함.

     

    2. 객체 지향 언어란?

    • '실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물 간의 상호작용이다.' 가 기본 개념.
    • 현실 세계를 객체 단위로 프로그래밍.
    • 객체는 field(데이터)와 method(코드)를 하나로 묶어 표현하는 구성 요소.

     

    3. 객체 지향 프로그래밍 특징

    • 캡슐화 : 데이터와 코드의 형태를 외부로부터 알 수 없게 데이터의 구조와 역할, 기능을 하나의 캡슐 형태로 만드는 방법. (= 정보은닉)
    • 상속 : 부모 클래스에 정의된 변수 및 메서드를 자식 클래스에서 상속 받아 사용하는 것.
    • 추상화 : 클래스들의 공통적인 특성(변수, 메소드) 들을 묶어 표현하는 것.(= 코드의 유지보수, 재사용성이 높아짐.)
    • 다형성 : 하나의 객체나 메소드가 여러가지 다른 형태를 가질 수 있는 것(오버로딩, 오버라이딩)
      • 오버로딩(Overloading) : 클래스 안에서 동일한 이름의 메서드를 서로 다른 파라미터와 리턴 타입으로 여러 개 정의 하는 것.(= 동적 다형성)
      • 오버라이딩(Overriding) : 부모 클래스에 정의된 메서드를 자식 클래스에서 새롭게 정의하는 것. 매개변수와 리턴 타입이 같아야 함.(= 정적 다형성)

     

    4. Spring이란?

    • POJO(Plain Old Java Object) 기반의 경량화된 개발 환경을 제공하는 오픈소스 프레임워크.

     

    5. Spring의 특징

    • POJO 기반의 경량화된 개발 환경을 제공함.
    • IoC(Inversion of Control) 컨테이너 : 제어의 역전으로, 프로그램 제어 흐름을 개발자가 직접 제어하는 것이 아니라 프레임워크나 라이브러리가 흐름을 제어하는 것. 개발자는 비즈니스 로직에 집중할 수 있게 됨.
    • AOP 지원 : 공통으로 사용하는 기능들을 외부의 독립된 클래스로 분리하고, 해당 기능을 프로그램 코드에 직접 명시하지 않고 선언적으로 처리하여 적용하는 것. 즉, 공통된 기능을 재사용하는 기법.
    • DI(Dependency Injection) 지원 : 의존관계 주입으로, 의존관계를 외부에서 결정하고 주입하는 것. 의존 관계 주입 방법에는 생성자 주입 방법, 수정자 주입 방법이 있음.

    의존 관계 주입 이용 시,

    1. 의존성이 줄어듦.
    2. 재사용성이 높은 코드가 됨.
    3. 테스트하기 좋은 코드가 됨.
    4. 가독성이 높아짐.

    라는 장점이 있음.

     

    6. Spring의 장단점

    • 장점
      • 애플리케이션, 웹사이트 등 다양한 개발에 적합함.
      • 사용자가 많아 다양한 라이브러리 등을 활용할 수 있음.
    • 단점
      • 버전 관리가 어려움.
      • Spring의 학습에 상당한 시간과 노력을 투자해야함.
      • 많은 기능을 탑재하고 있어 무거움.

     

    7. Spring과 Spring Boot의 차이점

    • Spring Boot는 Spring과 달리 내장서버를 가지고 있어 별도의 설정 없이 사용 가능.
    • Spring Boot는 사용하고 싶은 모듈을 의존성으로 추가하면 자동으로 라이브러리를 다운로드 하고, 라이브러리 간의 의존성 문제를 해결함.
    반응형