Java 기술
이 단원에서는 여러 유형의 Java 프레임워크, 서버, 플랫폼을 구분합니다.
Spring Framework
Spring Framework는 애플리케이션 프레임워크 및 IoC(inversion of control) 컨테이너입니다. 지금까지 Spring은 Enterprise JavaBeans(EJB) 모델을 보완하는 데 사용되었습니다. 핵심 기능은 다음과 같습니다.
- 종속성 주입
- 관점 지향 프로그래밍
- 비즈니스 추상화
Spring Boot
Spring Boot는 Spring Framework에서 실행되며 독자적인 자동 구성이 있습니다. Spring Boot 애플리케이션은 독립 실행형이며 마이크로 서비스에 적합합니다.
Spring Data
Spring Data는 관계형 및 비관계형 데이터베이스, MapReduce 프레임워크, 클라우드 기반 데이터 서비스의 데이터 액세스를 간소화합니다.
Spring Security
Spring Security는 Spring 기반 애플리케이션의 실질적인 표준입니다. 높은 수준의 인증 및 액세스 제어를 제공합니다. 예를 들어 Spring Security는 Active Directory와 잘 통합됩니다.
Spring Cloud
Spring Cloud는 분산 시스템에 사용됩니다. Spring Cloud는 서비스 검색, 구성 관리, 모니터링, 우수한 개발자 환경을 제공합니다.
Spring Batch
Spring Batch는 일상적인 작업에 필수적인 강력한 배치 애플리케이션을 위한 간단한 프레임워크입니다.
MicroProfile 및 Jakarta EE
MicroProfile 및 Jakarta EE(Enterprise Edition)는 Java EE 사양의 오픈 소스 후속 버전으로 간주할 수 있습니다.
MicroProfile은 마이크로 서비스 아키텍처의 사양 세트입니다. 마이크로 서비스 아키텍처용으로 Enterprise Java를 최적화하는 오픈 포럼이라고도 합니다. MicroProfile의 목적은 여러 구현에서 혁신을 이루고 공통의 관심 영역에서 협업하는 것입니다.
Jakarta EE는 엔터프라이즈 애플리케이션을 빌드하기 위한 사양 세트입니다. 모듈화된 구조 덕분에 개발자가 효율적인 소프트웨어 솔루션을 만들 수 있습니다. Jakarta EE 애플리케이션은 EAR 파일 또는 WAR 파일로 패키지할 수 있습니다.
WebProfile은 웹 포커스를 사용하는 백 엔드 서비스용 Jakarta EE 하위 집합이지만 걱정하지 마세요. 여기에 Enterprise 플랫폼의 특정 API를 추가할 수 있습니다.
애플리케이션 서버
Java EE 애플리케이션은 Java EE 규격 애플리케이션 서버(WebLogic, WebSphere, WildFly, GlassFish, Payara 등)에 배포되어야 합니다.
Apache Tomcat은 HTTP 서버 및 Java Servlet 컨테이너입니다. Servlet, JSP(Java Server Pages), Java Expression Language, Java WebSocket 사양을 구현합니다.
Oracle WebLogic Server는 엔터프라이즈 애플리케이션을 개발, 배포, 실행하기 위한 확장 가능한 통합 플랫폼입니다. WebLogic Server는 강력하고 완성도가 높은 Java EE 및 Jakarta EE 구현을 제공합니다.
Red Hat JBoss Enterprise 애플리케이션 플랫폼은 온-프레미스 및 가상 구현이나 프라이빗, 퍼블릭 또는 하이브리드 클라우드에 대해 엔터프라이즈급 보안과 성능을 제공합니다.
WildFly는 JBoss EAP의 업스트림에 있는 오픈 소스입니다. 이 커뮤니티 기반 버전은 개발 및 테스트용으로 적합합니다.
IBM WebSphere 애플리케이션 서버(WAS)는 엔터프라이즈 애플리케이션에 뛰어난 유연성과 보안성을 제공하는 Java 서버 런타임 환경입니다. 이 서버는 높은 안정성에 초점을 맞춥니다. 마이크로 서비스와 표준 기반 프로그래밍 모델을 지원합니다. 사용자가 자신에 맞게 현대화하고, 워크로드 전반의 가시성을 높이며, 엔터프라이즈 애플리케이션을 분석하고, Kubernetes로 전환할 수 있습니다.
Open Liberty는 WAS의 커뮤니티 기반 오픈 소스 버전입니다.
Oracle GlassFish는 많은 Java EE 웹 표준의 참조 구현(Servlet 및 JSP 포함)입니다.
마이크로 서비스 기반 아키텍처의 기타 프레임워크
Netty는 NIO(비차단 I/O) 클라이언트/서버 프레임워크입니다. 프로토콜 서버 및 클라이언트 같은 네트워크 애플리케이션을 빠르고 쉽게 개발할 수 있게 합니다. TCP 및 UDP 소켓 서버 같은 네트워크 프로그래밍을 크게 단순화하고 간소화합니다. Netty는 유지 관리가 가능한 고성능 프로토콜 서버 및 클라이언트를 빠르게 개발할 수 있는 이벤트 기반의 비동기 네트워크 애플리케이션 프레임워크입니다.
Quarkus는 OpenJDK HotSpot 및 GraalVM에 맞춘 Kubernetes 네이티브 Java 스택입니다. Quarkus는 점점 더 탄력을 받고 있습니다. 그런데 이와 같은 성능 중심의 프레임워크가 많이 있습니다. Vert.x, Helidon, Payara Micro, KumuluzEE가 그 예입니다.
Micronaut는 쉽게 테스트할 수 있는 모듈식 마이크로 서비스와 서버리스 애플리케이션을 만드는 JVM 기반의 최신형 풀스택 프레임워크입니다. Micronaut에는 리플렉션을 사용하지 않는 종속성 주입 및 관점 중심의 프로그래밍 런타임 기능이 있습니다. 따라서 Micronaut 애플리케이션은 GraalVM에서 실행하기가 더 쉽습니다.