Business Object Model
- 클라이언트로부터 정보 요청을 받아서, DB로부터 정보를 조회한 후, 다시 클라이언트에 최종 결과물을 전송하는 관계를 모델
- 프리젠테이션(Presentation)
-
- 우리가 현재 보고 있는 페이지 또는 브라우저로 출력되는 페이지 생성
- 비지니스 로직 계층(Business Logic, Logic, Application Processing)
-
- 퍼시스턴스와 프리젠테이션 사이에서 조율
- 데이터 퍼시스턴스(Data Persistence, Data, Data Access)
-
- DB에서 정보를 꺼내오는 역할
2계층 아키텍처
- 비즈니스 로직을 적용한 자료접근 및 자료표현 담당
-
서버가 제공하는 서비스는 데이터베이스 서버 뿐이다
- 단점
-
- 보안 문제
- 구현은 쉽지만 향상 또는 업그레이드가 어렵다.
- 비즈니스 및 프레젠테이션 로직을 재사용하기 어렵다
- 확장성이 떨어지고 인터넷에 적합하지 않다.
다계층 아키텍처 (N-tier Architectrue)
- 프레젠테이션, 비즈니스 로직, 데이터 액세스 관리 기능을 논리적으로 분리
자바 플랫폼
- 자바 프로그래밍 언어로 작성된 프로그램을 개발 및 실행할 수 있는 프로그램 모음
- 실행 엔진(가상 머신), 컴파일러 및 라이브러리 집합을 포함한다. 요구사항에 따라 달라지는 추가 서버와 대체 라이브러리도 있을 수 있다.
- 소프트웨어는 두 가지 필수 요소로 구성된다.
-
- 자바 애플리케이션과 애플릿을 실행하는 데 필요한 Java Runtime Environment(JRE)
- Java 애플리케이션 및 애플릿 개발에 필요한 Java Development Kit(JDK)
- 서로 다른 플랫폼은 서로 다른 등급의 장치 및 애플리케이션 도메인을 대상으로 한다
- Java Card : 소형 자바 기반 애플리케이션(애플릿)을 스마트 카드 및 유사한 소형 메모리 기기에서 안전하게 구동할 수 있는 기술
- Java ME(Micro Edition) : 저장, 디스플레이 및 전력 용량이 제한된 장치에 대해 여러 가지 라이브러리 세트(프로파일)을 지정한다. 모바일 장치, PDA, TV 셋톱박스 및 프린터용 응용 프로그램을 개발하는 데 자주 사용됩니다.
- Java SE(Standard Edition) : Java Se와 다계층 클라이언트-서버 엔터프라이즈 애플리케이션에 유용한 다양한 API를 제공합니다. 분산 컴퓨팅 및 웹 서비스와 같은 엔터프라이즈 기능에 대한 사용으로 Java SE를 확장하는 일련의 사양
- Java FX
-
- 다양한 장치에서 실행할 수 있는 풍부한 웹 애플리케이션뿐만 아니라 데스크톱 애플리케이션을 만들고 제공하기 위한 소프트웨어 플랫폼입니다.
- Microsoft Windows, Linux 및 MacOS에서 데스크톱 컴퓨터 및 웹 브라우저를 지원하고 IOS 및 안드로이드를 실행하는 모바일 장치를 지원한다.
자바 플랫폼, 엔터프라이즈 에디션, 자바 EE
- Java EE는 Java와 인터넷 기술을 이용한 엔터프라이즈급 애플리케이션 구현 아키텍처다
-
- Java EE는 Java의 애플리케이션이다
-
- 2계층 아키텍처의 문제 해결
-
- N계층 애플리케이션 개발
-
- 코드를 한 번 작성하여 모든 플랫폼에 배포
- 다양한 애플리케이션 유형 개발을 지원한다
-
- 소규모 클라이언트-서버 시스템
-
- 인트라넷에서 실행되는 시스템
-
- 대규모 인터넷 전자상거래 사이트의 시스템
Java EE Components & Services
- 주요 기술
-
- Java Server Page (JSP)
- 서블릿
- Enterprise Java Beans(EJB)
- 표준 서비스 & 지원 기술
-
- Java database connectivity(JDBC) data access API
- Remote Method Invocations (RMI)
- Extensible Markup Languages(XML)
- JavaIDL
- JavaMail
Java Server Pages(JSP)
- JSP는 소프트웨어 개발자가 HTML, XML 또는 기타 문서 유형을 기반으로 동적으로 생성된 웹페이지를 만들 수있도록 지원하는 기술
- JSP는 PHP나 ASP와 유사하지만 자바 프로그래밍 언어를 사용한다
- JSP는 독립적으로 또는 서버사이드 모델-뷰-컨트롤러(MVC) 설계의 뷰 구성요소로 사용될 수 있다.
서블릿
-
자바 서블릿은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 “서블릿”이라 불린다. 자바 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다.
- 서버의 기능을 확장하는 자바 프로그램
- 서블릿은 모든 유형의 요청에 응답할 수 있지만, 웹서버에서 호스팅되는 애플리케이션을 가장 많이 구현한다.
- JSP 컴파일러에 의해 JSP에서 서블릿을 자동으로 생성할 수 있다
- 서블릿은 일반적으로 자바코드에 HTML을 내장한다
-
- HTMLㅇ르 넣기에 불편함
- JSP는 HTML에 자바코드 내장한다
-
- html 작성은 쉬우나 로직과 디자인이 한 파일 내에 섞여 있어 유지보수가 어렵다
모델-뷰-컨트롤 구조인 모델2라는 패턴에서 JSP와 함께 서블릿을 사용한다.
모델1 방식으로 웹개발
- 사용자로부터 요청을 JSP가 받아 Java Bean(DTO, DAO)를 호출해 처리
- 개발 속도가 빠르고 배우기 쉽다
- 프레젠테이션 로직과 비즈니스 로직이 섞여있다.
-
- JSP 코드가 복잡해져 유지 보수가 어렵다
MVC 기반 웹
- Model-View-Controller로 각각의 역할을 나누어 작업하고자 하는 일을 분담
- Model은 Application 로직을 담당하는 부분으로 데이터베이스나 레거시 시스템과의 로직을 담당하는 부분
- View는 사용자가 직접 사용하는 부분으로 프레젠테이션 로직을 담당하는 부분이다. 컨트롤러와 모델에 의해 생성된 결과물을 보여주는 역할을함
- 컨트롤러는 비즈니스 로직을 담당하느 부분으로 사용자의 요청을 받아 요청에 해당하는 작업을 한 후 작업 결과에 따라 응답을 결정하는 역할을 한다. Model과 View 사이에 데이터를 전달하는 역할을 한다.
모델2 방식으로 웹 개발(MVC 기반 웹)
- Model 2는 이 같은 MVC구조를 웹에 적용하여 개발하는 방식을 말한다
- View는 JSP가 담당하고, Controller는 서블릿, Model은 application을 이용하여 개발하는 방식
-
- 보여지는 부분은 HTML이 중심이 되는 JSP가 담당
- 다른 자바 클래스에게 데이터를 넘겨주는 부분은 Java 코드가 중심이 되는 서블릿이 담당
- Model 영역에서는 DTO, DAO를 통해 MySQL과 같은 데이터 저장소에 접근
Java Framework
- 프레임워크
-
- 어떤 문제 영역을 해결하기 위한 잘 설계된 일반적인, 재사용 가능한 모듈
- 특정 목적의 서비스 혹은 어플리케이션을 제작하기 쉽게끔 일련의 작업 흐름을 미리 만들어 둔 소프트웨어 반제품
- 일련의 과정을 수행하는 부품들이 조립되어 있어 간단한 설정만으로 어플리케이션 제작 가능
- 기능 프레임워크
-
- 전체 어플리케이션 중 특정 기능 부분의 구현에 사용하는 프레임 워크
- MVC 기반 웹 어플리케이션 프레임 워크
-
- Struts, 스프링 MVC
- 데이터베이스 관련 프레임 워크
-
- 스프링 DAO, Hibernate, Ibatis, MyBatis
- 비즈니스 관련 프레임워크
-
- 자바빈즈, 엔터프라이즈 자바빈즈, 스프링
JDBC
- 자바 어플리케이션이 데이터베이스에 연결하여 이용할 수 있도록 하는 자바 인터페이스, 클래스들의 모임
- 자바 API는 JDBC 인터페이스만 제공하며 실제 구현물은(JDBC 드라이버) 각 데이터베이스 벤더 사에서 제공하므로 어플리케이션은 JDBC 인터페이스를 이용하면 실제 데이터베이스 제품에 상관없이 서비스가 가능함
- JDBC를 이용하여 프로그래밍을 할 경우 드라이버 로딩, 커넥션 연결, 쿼리문 생성, 쿼리문 실행, 결과처리, 커넥션 종료 등의 반복된 작업을 하여야 하며 예외 처리 등의 구문까지 개발자가 일일이 신경을 써야 한다는 단점이 있다
Spring DAO
- Data access object(DAO)는 데이터베이스 유형 또는 기타 지속성 메커니즘에 추상 인터페이스를 제공하는 개체이다.
- Spring DAO 모듈은 JDBC의 반복적인 문제를 해결하기 위해 JDBC를 한 단계 더 추상화하여 제공하며 개발자들이 구현해야 했던 많은 부분을 처리함. 또한 트랜잭션 코드에 일일이 기술하지 않고 AOP를 이용하여 선언적으로 처리하는 방법을 제공한다.
J2EE Tiers
- 클라이언트 프레젠테이션
-
- HTML 또는 자바 애클릿을 브라우저에 배포한다.
- XML 문서를 HTTP를 통해 전송한다
- JVM에서 실행중인 자바 클라이언트
- 프레젠테이션
-
- 웹서버에서 실행중인 서블릿 또는 JSP
- 애플리케이션 로직
-
- 애플리케이션 서버에서 작동중인 엔터프라이즈 자바빈즈
웹서버 vs 애플리케이션 서버
웹 서버 | 애플리케이션 서버 |
---|---|
HTTP 콘텐츠를 제공하기위함 | HTTP 콘텐츠를 제공하지만 HTTP에만 제한되지 않는다. RMI/RPC와 같은 다른 프로토콜도 지원한다. |
대부분의 웹서버는 동적 HTTP 콘텐츠를 생성할 수 있는 PHP, JSP등과 같은 스크립트 언어를 지원하는 플러그인을 가지고 있지만 대부분 정적 콘텐츠를 제공하도록 설계되었다 | 대부분의 앱 서버에는 웹 서버가 포함되어 있다. 즉, 앱 서버는 웹 서버가 할 수 있는 모든 작업을 수행할 수 있다. 또한 앱 서버에는 연결 풀링, 개체 풀링, 트랜잭션 지원, 메시지 서비스 등과 같은 응용 프로그램 수준 서비스를 지원하는 구성 요소 및 기능이 있다. |
웹 서버는 정적 콘텐츠에 적합하다 | 앱 서버는 동적 콘텐츠에 적합하다 |
웹 서버는 리소스 사용률 면에서 앱 서버보다 더 가볍다 | 리소스 사용률 면에서 앱 서버가 웹 서버보다 더 무겁다 |
웹 서버 : 아파치
앱 서버(WAS) : 톰캣