91. Servlet Container
구현되어 있는 서블릿 클래스의 규칙에 맞게 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리, 스레드 지원 및 관리
Java Servlet과 JavaServer Pages (JSP)와 같은 Java 웹 컴포넌트를 실행하고 관리하는 서버 환경을 제공하는 소프트웨어이다. 이것은 Java 웹 애플리케이션 서버와 웹 서버 사이에서 동작하며, 클라이언트 요청을 받아들이고 서블릿 및 JSP를 실행하여 동적인 웹 페이지를 생성한다.
Servlet 컨테이너의 주요 역할 : 서블릿 라이프 사이클 관리, 스레드 관리, 요청 및 응답 객체 관리, 세션 관리, 보안 관리, 에러 처리, 정적 자원의 제공 등
대표적인 Java Servlet 컨테이너로는 Apache Tomcat, Jetty, 그리고 웹로직(WebLogic)과 같은 상용 제품들이 있다. 이러한 서블릿 컨테이너는 Java EE(Enterprise Edition) 및 Jakarta EE(이전에는 Java EE의 일부로 알려져 있었음) 스펙을 준수하며, Java 웹 애플리케이션을 개발하고 배포하기 위한 중요한 도구이다.
92. JSP(JavaServer Pages)
서블릿의 사용을 통해 웹페이지의 내용이나 모양을 제어하는 기술
동적 웹 컨텐츠를 생성하기 위한 Java 기반의 웹 프로그래밍 언어. HTML 코드 안에 Java 코드를 포함시킬 수 있어, 웹 디자인과 프로그래밍 로직을 쉽게 통합할 수 있도록 해준다. JSP 페이지는 서버 측에서 실행되며, 서버에서 실행되기 전에 Java 서블릿으로 변환되어 컴파일된다.
JSP의 주요 특징 : 간편한 문법, 동적 컨텐츠 생성, 재사용 가능한 컴포넌트, 서버 측 기능, 자동화된 서블릿 변환, 내장 객체, 태그 라이브러리(Tags Library) 사용 등
JSP는 Java Servlet 기술 위에서 동작하며, Java 웹 애플리케이션 개발에서 널리 사용된다. JSP를 사용하면 웹 페이지를 동적으로 생성하고 웹 애플리케이션의 복잡한 로직을 쉽게 구현할 수 있다.
93. WAS(Web Application Server)
Web Server + Servlet/JSP Container, Server 측에서 Application 동작 지원, 동적 서버 콘텐츠 수행. 웹 애플리케이션을 실행하기 위한 소프트웨어 환경을 제공하는 서버. 클라이언트의 요청에 대해 동적으로 웹 페이지를 생성하고 데이터베이스와 통신하여 필요한 기능을 수행한다. 이는 정적인 웹 서버와는 대조적으로, 동적인 콘텐츠를 생성하고 관리할 수 있다.
WAS의 주요 기능과 특징 : 웹 애플리케이션 실행 환경 제공, 스레드 관리와 성능 최적화, 데이터베이스 연동, 보안 기능 제공, 트랜잭션 관리, 클러스터링과 로드 밸런싱 등
대표적인 WAS로는 Apache Tomcat, Red Hat JBoss, IBM WebSphere, Oracle WebLogic 등이 있다. 이러한 WAS들은 Java EE(Enterprise Edition) 스펙을 준수하며, Java 기반의 웹 애플리케이션을 실행하고 관리하는 데 필요한 다양한 기능과 도구를 제공한다.
94. PL/SQL(Procedural Language/Structured Query Language)
오라클 DBMS에서 SQL 언어를 확장하기 위해 사용하는 언어
프로시저, 함수, 트리거, 커서 등을 구현하기 위한 절차적 프로그래밍 언어. SQL의 확장으로, 데이터베이스에서 실행되며 데이터베이스 객체를 조작하고 관리하는 데 사용된다.
PL/SQL의 주요 특징과 기능 : 절차적 프로그래밍, SQL 문의 통합, 커서 사용, 예외 처리, 트리거, 커스텀 데이터 타입과 레코드, 동적 SQL 실행 등
PL/SQL은 주로 Oracle 데이터베이스 환경에서 사용되며, 데이터베이스 내에서 빠르고 효율적인 데이터 처리 및 관리를 위해 널리 사용된다. PL/SQL을 사용하면 데이터베이스 프로그램을 더 효율적으로 작성하고 유지보수할 수 있다.
95. Configuration
구성, 환경설정
시스템, 응용 프로그램 또는 서비스의 동작을 정의하는 데이터와 정보의 집합. 종종 환경 변수, 데이터베이스 연결 정보, 로깅 설정, 보안 규칙 등과 같은 시스템 동작을 설정하는 데 사용된다.
- Configuration File (구성 파일 또는 설정 파일) : 애플리케이션 또는 시스템의 동작을 구성하는 데 사용되는 파일. 일반적으로 텍스트 파일이며, 애플리케이션의 설정 옵션을 포함. XML, JSON, YAML과 같은 형식으로 구성될 수 있다.
- Environment Variables (환경 변수) : 운영 체제나 애플리케이션에 설정된 시스템 환경을 나타내는 변수들. 애플리케이션은 환경 변수를 통해 실행 환경에 따라 동적으로 동작할 수 있다.\
96. URI(Uniform Resource Identifier)
인터넷에 있는 자원을 나타내는 유일한 주소. 인터넷 상에서 특정 자원을 식별하기 위한 문자열. 웹에서 가장 흔하게 볼 수 있는 형태인 URL(Uniform Resource Locator)의 일반화된 버전. URI의 한 형태로, URI는 URL을 포함하며 더 넓은 범위의 식별자를 나타낸다.
1) URL (Uniform Resource Locator) : 특정 자원의 위치를 가리키는 URI의 하위 집합. URL은 자원의 주소를 나타내며, 특정 프로토콜(예: HTTP, FTP)을 사용하여 자원에 접근하는 방법을 제공한다. 예를 들어, "https://www.example.com/index.html"은 웹 페이지에 접근하기 위한 URL
2) URN (Uniform Resource Name) : 자원의 이름을 나타내는 URI의 다른 형태. URN은 자원의 위치나 접근 방법이 아닌, 자원의 고유한 식별자를 제공하여 자원이 영구적으로 식별될 수 있게 한다. 예를 들어, URN은 "urn:isbn:0451450523"과 같은 형태일 수 있다.
URI는 다양한 인터넷 프로토콜을 사용하여 리소스에 접근하는 데 사용된다. 이것은 웹 브라우저, 웹 애플리케이션, 웹 서버, 파일 시스템, 데이터베이스 시스템 등과 같은 여러 응용 프로그램에서 사용된다. URI의 가장 중요한 특징은 리소스를 고유하게 식별할 수 있고, 이를 통해 인터넷 상에서 정보를 검색하고 공유할 수 있다는 것이다.
97. HTTP(Hypertext Transfer Protocol)
웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위해 사용되는 통신 규약
웹 상에서 데이터를 주고받기 위한 표준 프로토콜. 클라이언트와 서버 간의 통신을 관리하며, 웹 브라우저와 웹 서버 사이의 요청과 응답을 처리한다. HTTP는 주로 HTML 문서, 이미지, 스크립트 파일, 스타일 시트 등을 전송하는 데 사용된다.
HTTP의 주요 특징과 동작 : Stateless (무상태), Request-Response Protocol (요청-응답 프로토콜), Connectionless (무연결성), Methods (메서드), URL (Uniform Resource Locator), Status Codes (상태 코드) 등
HTTP는 웹 브라우저를 통해 웹 페이지를 로드하고, API를 통해 데이터를 전송하고, 웹 애플리케이션 간에 통신하는 등 다양한 웹 기반 응용 프로그램에서 핵심적으로 사용된다.
98. HTML(Hypertext Markup Language)
웹 문서 작성용 언어, 하이퍼텍스트 작성
웹 페이지를 만들기 위해 사용되는 표준 마크업 언어. 웹 브라우저에게 문서의 구조를 알려주는 역할. 웹 페이지의 텍스트, 이미지, 링크, 테이블, 폼 등을 정의하고 표시하는 데 사용.
HTML 문서는 태그(tag)라고 불리는 요소(element)들의 집합으로 구성된다. 각 태그는 특정한 의미를 가지고 있으며, 웹 브라우저는 이러한 태그를 해석하여 문서를 표시한다.
HTML의 주요 구성 요소와 예시 : 태그(Tag), 요소(Element), 속성(Attribute), 중첩(Nesting) 등
HTML은 웹 페이지를 구성하고 디자인하는 기초이다. CSS(Cascading Style Sheets)와 함께 사용하면 웹 페이지의 스타일링 및 레이아웃을 조절할 수 있고, JavaScript와 함께 사용하면 웹 페이지에 동적인 기능을 추가할 수 있다. 이러한 기술들을 함께 사용하여 다양한 형태와 기능의 웹 페이지 및 웹 애플리케이션을 개발할 수 있다.
99. VO(Value Object)
불변성(immutability), 값 동등성(value equality), 자가 유효성 검사(self Validation), 객체를 값처럼 쓸 수 있다.
소프트웨어 개발에서 데이터를 담기 위한 객체. 주로 데이터베이스에서 가져온 데이터나 다른 계층(layer)에서 전달된 데이터 등을 담기 위해 사용. 불변(immutable)하거나 변경 불가능한 속성을 가지고 있어야 하며, 주로 데이터를 전달하고 저장하는 데 사용.
VO의 주요 특징 : 불변성(Immutability), 캡슐화(Encapsulation), 동등성(Equivalence), 데이터 전달(Data Transfer), 가변성 방지(Prevention of Mutability) 등
예를 들어, 주문(Order)을 나타내는 VO는 주문 번호, 상품 정보, 수량, 가격 등의 속성을 포함할 수 있다. 이러한 VO 객체는 주문 정보를 보유하고, 불변성을 유지하여 여러 부분에서 안전하게 사용될 수 있다.
100. DAO(Data Access Object)
DB 작업에 필요한 접근 방식을 구현하는 것
소프트웨어에서 데이터베이스와의 상호작용을 담당하는 객체. 데이터베이스 연결 및 트랜잭션 처리와 같은 복잡한 데이터베이스 로직을 캡슐화하여 비즈니스 로직과 데이터베이스 연동을 분리시키는 역할을 한다. 이는 응용 프로그램의 유지보수성을 높이고, 코드의 재사용성을 향상시키며, 데이터베이스와의 의존성을 낮추는 데 도움을 준다.
DAO의 주요 목적 : 데이터베이스 연결 관리, CRUD (Create, Read, Update, Delete) 연산 처리, 트랜잭션 관리, 데이터베이스와 응용 프로그램 간의 추상화 등
일반적으로 DAO는 데이터베이스의 특정 테이블이나 데이터베이스 연산을 처리하는 인터페이스와 그 구현 클래스로 구성된다. 이러한 설계는 코드의 모듈화와 유지보수성을 높이며, 테스트가 쉽고 효과적으로 이루어지도록 한다. DAO는 Java에서는 JDBC(Java Database Connectivity)와 함께 자주 사용되지만, 다른 프로그래밍 언어와 데이터베이스 기술에서도 비슷한 개념을 가지고 적용될 수 있다.