1주차

NARUMI·2023년 5월 19일
0

프레임워크란?

💡 일정한 틀을 가지고 다양한 웹, 앱, SW를 개발하는 프로그램
ex) 자바 스프링, 파이썬 장고

💡 프레임워크와 라이브러리의 차이는 내가 필요할 때 호출할 수 있는가, 아니면 내 코드를 실행시키기 위해 다른 코드가 내 코드를 콜하는가의 차이이다.
내가 호출할 수 있다면 라이브러리, 내 코드를 호출하는 것은 프레임워크이다.

스프링 프레임워크

💡 자바 스프링 = 스프링 프레임워크
스프링 프레임워크는 자바 기반의 웹 애플리케이션 개발을 위한 포괄적인 인프라를 지원해주는 프레임워크이다.

💡 스프림 프레임워크는 오픈소스이다.

💡 경량급의 프레임워크이다. 방대하지만 개발자가 작성할 코드는 상대적으로 단순 + 불필요한 코드는 제거 -> 코드 복잡성 하락

💡 POJO(Plain Old Java Object)를 지향한다.
순수 자바에 정의된 기술만을 사용하여 만들어진 객체.
외부 모듈이 변화했을 때 사용하는 객체 코드를 변경해야 하지만, 순수 자바만을 사용하면 환경종속성에 얽매이지 않은 개발이 가능함

1) loC/DI(Inversion of Control & Dependency Injection)

제어의 역전(개발자가 설정 클래스 파일에 사용할 객체를 설정하면, 스프링이 설정 클래스 파일을 해석 -> 클래스가 의존관계를 맺어줌)과 의존성 주입(의존관계를 통해)

2) AOP(관심 지향 프로그래밍)
  • 공통 관심 사항 : 애플리케이션의 주된 기능들 중 핵심 사항에 공통적으로 들어있는 사항들(ex: 루틴 공유하기, 루틴 수정하기 등)

  • 핵심 관심 사항 : 애플리케이션의 주된 기능들(ex: 보안)

-> 공통 관심 사항에서 중복 코드가 발생함
스프링 프레임워크는 공통 관심 사항을 별도의 객체로 분리하여 객체의 메소드를 통해 공통 관심사항의 코드를 실행

3) PSA(일관된 서비스 추상화)

데이터베이스와 관련된 특징. 개발 도중 데이터베이스의 종류를 바꾸는 일이 발생하여도 스프링에서는 데이터베이스 서비스를 추상화한 인터페이스(JDBC)를 제공하기에 문제없음
JDBC는 각 데이터베이스를 만든 회사에서 자바 코드로 구현함.

❓ JDBC

Spring Boot

💡 스프링의 필요한 복잡한 설정들을 간편하게 자동화하여 처리해줌. 별도의 프레임워크임.
자체적인 웹 서버가 내장되어 있어 빠른 배포 가능.

출처1

출처2

JSP와 Servlet

💡 JSP : 동적 웹 페이지를 만들기 위한 html 안의 java코드. server side에서 돌아가는 스크립트 언어 (응용 프로그램을 제어하는 언어) 이다.

💡 Servlet : 동적 웹페이지를 만들기 위한 server side의 자바 프로그램. 클래스의 일종
java코드 안의 html

❓ 서블릿 컨테이너

❓ Web Container

❓ MVC

❓ WAS와 Web Server의 차이
❕ Web Server
- static page(정적 페이지)를 클라이언트에게 제공함.
- 동적인 컨텐츠를 WAS에게 요청함
- Apache
❕ WAS(Web Application Server)
- 어플리케이션 서버의 한 종류.
- 동적 페이지를 클라이언트에게 제공하고 DB조회와 로직 처리를 담당.
- 정적 페이지도 제공할 수 있지만 서버 부하 방지를 위해서 동적 페이지는 웹서버가 담당.
- Tomcat

출처 :
https://yozm.wishket.com/magazine/detail/1780/

JPA(Java Persistence API)

💡 자바 ORM 기술에 대한 API 표준 명세. 쉽게 말해, 자바로 관계형 DB를 사용하는 방식을 정의한 인터페이스

❓ 관계형 데이터베이스 : 행과 열로 이루어진 각각의 테이블을 고유값을 참조하여 종속되는 관계를 표현한 데이터베이스
참조 : https://www.oppadu.com/%EA%B4%80%EA%B3%84%ED%98%95-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4/

❓ Java Interface : 추상 메서드만을 가질 수 있는 추상 클래스이다. 다중 상속이 가능하다.

❓ 오버라이딩과 오버로딩 : 오버라이딩(부모 클래스로부터 상속받은 메서드의 내용을 재정의하는 것), 오버로딩(이름은 같은 메서드이지만 매개변수의 유형과 개수를 다르게 한 것)

❓ ORM(Object-Relational Mapping)
객체를 데이터베이스 테이블과 맵핑시켜주는 프레임워크. SQL 쿼리가 아닌 메서드와 같은 코드로 데이터에 접근, 조작 가능.

❓ Hibernate : JPA 명세의 구현체. JPA가 인터페이스라면 Hibernate는 그것을 구현한 클래스이다.

💡 스프링 부트 어플리케이션의 필드값들은 JPA를 통해 데이터베이스의 콜럼 값들과 맵핑시키는 작업을 수행됨.

💡 장점 : 객체와 DB사이의 중간 역할을 수행하기에, SQL문을 사용하지 않아도 되므로 개발자는 객체지향적인 코드만 생각할 수 있다.

출처 :
https://hyeonyeee.tistory.com/68
https://moonong.tistory.com/83
https://developsd.tistory.com/133
https://victorydntmd.tistory.com/195

Gradle과 Maven

💡 둘다 대표적인 자바 빌드 관리 tool

❓ 빌드 관리 도구란?
프로젝트에 필요한 파일들 자동 인식. 컴파일, 테스트, 분석, 정보관리, 배포 등. 가장 주된 목적은 외부 라이브러리를 참조하여 자동으로 다운로드와 업데이트를 관리해줌

❓ 빌드, 컴파일, 인터프리터.. 헷갈린다

  • 컴파일 : 소스코드를 바이너리 코드로 변환(컴퓨터가 이해할 수 있는 언어로 변환). .java를 .class로 바꿔준다.
  • 빌드 : .class로 변환된 코드를 컴퓨터가 실행할 수 있는 상태로 변환하는 것
    출처
  • 인터프리터 : 컴파일러와 인터프리터의 차이에서 나온 것. 프로그램 실행 시, 컴파일러는 전체 스캔. 인터프리터는 한 줄씩 스캔하여 실행 출처

❓ Gradle
💡 groovy 스크립트를 활용한 빌드 관리 도구. Maven보다 빠르고 간결함. bulid.gradle이란 파일을 사용

❓ Gradle의 장점(왜 쓸까?)

  • 장점 : 성능이 좋기에 대규모 프로젝트에 좋음. 설치없이 사용가능(Gradle Wrapper)
    자바 개발자의 경우 groovy가 JVM에서 실행되는 스크립트 언어이기에 자바와의 호환성, 자바 문법사용, 컴파일이 필요없다는 장점이 있기에 gradle이 적합하다.

❓ Maven

💡 기존에 존재하던 Ant는 빌드의 기능만을 가지고 있음. 라이브러리까지 관리해주는 기능이 추가된 것이 Maven. pom.xml 파일로 명시하여 관리한다.

❓ Maven의 장점과 단점

  • 장점 : 참조한 외부 라이브러리가 다른 라이브러리도 참조하고 있을 때, 그 라이브러리까지도 관리함. 라이브러리에 변동사항이 있으면 자동으로 업데이트 진행. 라이프사이클 도입
  • 단점 : xml로 관리하기에(태그 구성) 복잡하여 대규모 프로젝트에는 맞지 않음

출처 : https://dev-coco.tistory.com/65

profile
成海

0개의 댓글