본문 바로가기

전체 글35

Jakarta Servlet을 알아보자 다음 내용은 Jakarta EE에서 제공하는 공식 튜토리얼 문서, 그리고 Jakarta Servlet 6.1 문서를 바탕으로 작성되었음을 알립니다. 서블릿은 HTTP 응답을 자바 객체로 받고 반환하는 프레임워크이다. 서블릿은 `jakarta.servlet`에 있는 `Servlet` 인터페이스를 반드시 상속하여야 한다. `GenericServlet`은 `Servlet`의 기본 구현체이며, `HttpServlet`이 이를 상속하고 있다. 서블릿 컨테이너는 웹 서버 또는 웹 앱 서버의 일부로, 서블릿을 관리하고, 요청과 응답을 가공하여 서블릿으로 넘겨주고 받는 역할을 한다. Jakarta Servlet에는 Filter가 존재하며, ServletRequest 등이 서블릿을 향하기 전 Filter를 먼저 거치게 .. 2025. 5. 12.
Jakarta EE를 알아보자 Jakarta EE는 자바 엔터프라이즈 에디션으로, 서버 개발 플랫폼이다. 2017년 자바 8 발표 이후 오라클 사에서 Java EE 개발을 이클립스 재단으로 이관했으며, 이클립스 사에서 Java EE를 Jakarta EE로 개명하고 이어서 명세를 개발하고 있다. Jakarta EE는 다양한 명세를 가지고 있다. Servlet, JSP, JPA 외 기타 등등 기능 각각의 명세가 존재하며, 이 기능들을 모아 플랫폼, 그리고 프로파일이라는 이름의 명세 모음을 제시하고 있다. 기능 명세 대부분을 모은 것을 Platform이라고 부르며, 웹의 주요 기능을 모은 것을 Web Profile, 핵심적인 웹 기능만을 모아둔 것을 Core Profile이라고 부른다. Jakarta EE는 단순히 명세이며, 이를 구현한 .. 2025. 5. 10.
JDK를 공부하는 법을 알아보자 openjdk.org의 JDK 문서 또는 oracle의 JDK 문서에서 각 버전 별 신규 기능이 무엇이 있는지 확인할 수 있다. JEP에 포함되지 않은 추가 기능들은 오라클 측의 문서에서 확인할 수 있다. 신규 기능은 JEP를 통해 확인할 수 있으며, Preview가 붙은 JEP는 아직 성숙하지 않은 기능들을 의미한다. 이 프리뷰 기능들을 통해 앞으로 JDK에 어떤 새로운 기능들이 추가될 것인지 확인할 수 있다. JEP는 Java Enhancement Proposal, 즉 자바 개선 제안으로, 앞으로 추가됐으면 하는 기능들을 제시하는 곳이다. 그 외 기타 확인하기 좋은 사이트들을 하단 링크에 추가해뒀다. 참고자바 뉴스레터 - https://inside.java자바 유튜브 - https://www.yout.. 2025. 5. 9.
Jakarta Persistence를 알아보자 Jakarta Persistence는 Jakarta EE에서 내는 공식 자바 EE 명세서 중 하나다. 그 중 ORM과 관련한 명세를 가리킨다. 명세에 대한 내용은 다음 문서에서 확인할 수 있다. 스프링을 사용하고 있다면 한 번쯤은 접해봤을 Spring Data JPA에서 사용하는 `@Entity`, `@Id` 따위가 해당 명세서를 기반으로 구현된 내용이다. 구현체는 Hibernate 사에서 구현했으며, 스프링 생태계에서 해당 구현체를 활용하여 내부를 구성하고 있다. 본디 Jakarta Persistence에서 엔티티를 관리하기 위해선 `EntityManager`라는 인터페이스를 통해 엔티티를 관리하나, Spring Data 측에서는 `CrudRepository` 등의 인터페이스로 리포지토리를 추상화해두고.. 2025. 5. 9.
스프링 프레임워크 `@Async`를 알아보자 @Async를 사용하면 해당 메소드는 비동기로 실행이 된다. 반환값이 void거나, Future인 경우에만 비동기가 적용되며, 그 외의 경우에는 비동기로 실행되지 않고 무시된다. 스프링 프레임워크에서 제공하는 ListenableFuture와 Java 8 이후에서 제공하는 CompletableFuture도 비동기를 제공한다. 아래는 예시 코드이다.@Servicepublic class VirtualService { private final Logger logger = LoggerFactory.getLogger(VirtualService.class); @Async public CompletableFuture DoSomething(int n) throws InterruptedException {.. 2025. 5. 6.