1. 개발 환경의 변화와 자바

강재민·2023년 7월 27일
0

1.1 인프라와 스프링 프레임워크의 변화

  • 적은 인원으로 빠른 시간에 서비스를 완성하기 위해 오픈소스를 조합해서 서비스를 출시하는 경우가 일반화되고 있다.

1.1.1 아키텍처의 변화

  1. 서버/클라이언트 개념이 등장하면서 사용자를 위한 GUI개발이 본격화되고 델파이를 이용한 업무 프로그램과 ActiveX를 이용해 웹에서도 애플리케이션을 실행하는 방식들이 자주 사용되었다.
  2. 서버에서 파일로 데이터를 저장하거나 자체 개발을 통해 데이터를 저장하고 소켓 통신을 통해 클라이언트와 통신하는 방식
  3. 상용 RDS의 흥행으로 3티어로 구성하는 방식

점점 탄력적인 아키텍처를 요구하면서 발전하고 있지만 보안이나 안정성에 민감함 회사는 메인프레임을, 별도의 UI가 필요없는 회사는 서버/클라이언트 방식을 유지하고 있다.

1.1.2 스프링 프레임워크의 변화

  • 초기에는 여러 회사에서 제품으로 경쟁을 하다가 결국 스프링 프레임워크와 톰캣 조합이 표준처럼 쓰이게 되었다.
  • 스타트업들이 대거 등장하면서 작업의 간소화가 필요해졌다.
  • 스프링 프레임워크가 점점 몸집이 커지고 복잡해지면서 스프링 부트가 탄생하였다.
    • 스프링 부트로 인해 클라우드 환경에서 작업 시간을 많이 단축할 수 있었다.

1.2 웹 애플리케이션 컨테이너

  • WAS, Web Application Server는 자바에서 웹 애플리케이션 컨테이너라고도 합니다.

1.2.1 자바 개발을 위해 꼭 필요한 클래스 로더

  • 클래스 로더
    • Write once, run anywhere
    • JVM이 클래스를 실행하기 위해서는 클래스를 로딩하는 과정이 필요하다. 그 역할을 하는 것이 클래스 로더이다.
  • ClassNotFoundException
    • 클래스 로더가 추가된 라이브러리 또는 클래스를 인식하지 못해서 발생하는 오류

1.2.1.1 클래스 로더의 특징

  1. 계층적이다.
  2. 클래스 로딩을 위임할 수 있다.
  3. 클래스 로더는 가시적인 규약이 있다.
  4. 클래스 언로딩 불가능이다.

1.2.1.2 클래스 로더의 유형

  1. bootstrap class loader
    • JVM 런타임 실행을 위해 기반이 되는 파일들을 로드한다.
  2. extension class loader
  3. system class loader
  4. user-defined class loader
    • WebAppclassLoader는 사용자 정의 클래스 로더에 해당된다.

1.3 WAR 파일의 특성

  • 배포할 때 로컬 실행 프로그램은 JAR로 패키징하고 웹은 WAR로 패키징한다.
    • WAR는 압축 파일에 자바 관련 규약이 포함된 것이다.
      • WEB-INF 폴더다.
        • WEB-INF 폴더를 기준으로 클래스 파일들을 로드한다.
    • WAR는 Web Application Archive의 약자이다.
    • JAR는 Java ARchive의 약자이다.
  • content directory는 브라우저에서 보여줘야 하는 정적 자원을 관리하기 위한 폴더다.
    • 이 폴더는 브라우저상에서 직접 접근할 수 있어서 최근에는 WEB_INF 하위에 설정하는 추세다.
  • 웹 애플리케이션 컨테이너는 웹 애플리케이션 자체 API를 제공하기 위해 컨테이너를 로드하는 클래스 로더와 사용자가 추가한 JSP나 WAR 파일들을 다루기 위한 ServletContext Loader를 사용한다.
  1. 컨테이너 시작
  2. 콘텍스트 초기화
  3. 서블릿 스펙의 권장 사항에 따라 WEB_INF/classes 파일을 먼저 검색
  4. WEB_INF/classes 파일을 로딩
  5. WEB-INF/libs에 있는 JAR 파일들을 로드한다.

용어설명비고
자바 관련 규약
JVM(Java Vertural Machine)자바를 실행하기 위한 가상 컴퓨터이다.
델파이(Delphi)윈도우즈, 리눅스, iOS, 안드로이드에서 작동하는 프로그램 제작에 이용되는 통합개발환경(IDE: Integrated Development Environment)이자 언어이다.
iOS(IPhone OS)애플의 자사 모바일 운영 체제이다.
IBm(International Business Machines Co.)국제 사무기기 회사로서 미국의 다국적 기술 및 컨설팅 회사이다. 주로 메인프레임을 위한 하드웨어 업체였으나, 1990년대부터 소프트웨어, 서비스등으로 분야를 넓혀왔다.
웹로직(WebLogic)오라클에서 만든 WAS 제품입니다.
웹스피어(WebSphere)IBM에서 만든 WAS 제품입니다.
Java EE(Java Platform Enterprise Edition)간편하고 견고하고 확장가능하며 안전한 서버측 자바 애플리에키션을 위한 산업 표준이다.
EJB(EnterpriseJavaBean)분산 애플리케이션을 지원하는 컴포넌트 기반의 객체이다.https://m.blog.naver.com/qhdqhdekd261/221690113143
루비온레일스(RubyOnRails)Ruby를 사용하는 웹 프레임워크이다. 풀 스택 웹 프레임워크이다. 애자일 프로세스에 초점을 맞추는 스타트업 기업들이 많이 채택하였다.
장고(Django)Python의 오픈소스 웹 프레임워크이자 풀 스택 프레임 워크이다.
세션빈(SessionBean)비지니스 로직을 포함하고 있고 재사용이 가능한 모듈https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=redeyeant&logNo=100060320552
엔티티빈(EntityBean)DB에 가져온 데이터들을 담는 그릇으로 비유한다. DB에 있는 row정보를 EntityBean 하나에 담는다.https://kimseunghyun76.tistory.com/327
스프링 MVC 모듈(스프링 Model-View-Controller 모듈)애플리케이션의 구성요소를 세 가지 역할로 분리하는 패턴으로, 사용자 인터페이스를 다루는 데 적합하다.
Model애플리케이션의 상태와 데이터를 관리하는 부분이다. 즉, 데이터베이스에서 데이터를 가져와서 가공하거나 변경된 데이터를 저장하는 역할을 한다.
View사용자 인터페이스를 담당하는 부분이다. Model이 가지고 있는 데이터를 이용해 화면에 출력하고, 사용자입력을 받아 컨트롤러에 전달한다.
ControllerModel과 View를 연결해주는 부분으로, 사용자 입력을 처리하고 Model의 데이터를 변경할 수 있다. 사용자의 입력에 따라 Model이 업데이트될 수 있고, 그에 따라 Veiw를 갱신할 수 있다.
DispatcherServlet 설정클라이언트의 HTTP 요청을 받아 적절한 Controller로 전달하고, 처리 결과를 바탕으로 응답을 생성하여 클라이언트에게 보내는 역할
JDBC(Java Database Connectivity)자바에서 DB프로그래밍을 하기 위해 사용되는 API
XML(Extensible Markup Language)데이터를 정의하는 규칙을 제공하는 마크업 언어입니다. 비슷한 예시로 HTML이 있습니다.

1개의 댓글

comment-user-thumbnail
2023년 7월 27일

잘 봤습니다. 좋은 글 감사합니다.

답글 달기