Java EE 개요

1. Java EE란?

  • Java Enterprise Edition
  • 기업용 분산 어플리케이션 개발 목적의 산업 표준 플렛폼.
  • Java SE의 확장.
  • Web Profile(JSP, Servlet등 웹 어플리케이션 서버에 관련된 사양)이 포함된다.

2. Java EE의 기술들(Technologies)

2.1 웹 어플리케이션 기술들

  • WebSocket 1.1
  • JSON Binding 1.0
  • JSON Processing 1.1
  • Java Servlet 4.0
  • JavaServer Faces(JSF) 2.3
  • Expression Language(EL) 3.0
  • JavaServer Pages(JSP) 2.3
  • Standard Tag Library for JavaServer Pages(JSTL) 1.2

2.2 엔터프라이즈 어플리케이션 기술들

  • Batch Applications for the Java Platform 1.0
  • Concurrency Utilities for Java EE 1.0
  • Contexts and Dependency Injection for Java 2.0
  • Dependency Injection for Java 1.0
  • Bean Validation 2.0
  • Enterprise JavaBeans 3.2
  • Interceptors 1.2
  • Java EE Connector Architecture 1.7
  • Java Persistence 2.2
  • Common Annotations for the Java Platform 1.3
  • Java Message Service API 2.0
  • Java Transaction API (JTA) 1.2
  • JavaMail 1.6

2.3 웹 서비스 기술들을

  • Java API for RESTful Web Services (JAX-RS) 2.1
  • Implementing Enterprise Web Services 1.3
  • Web Services Metadata for the Java Platform 2.1
  • Java API for XML-Based RPC (JAX-RPC) 1.1 (Optional)
  • Java API for XML Registries (JAXR) 1.0 (Optional)

2.4 관리 & 보안 기술들

  • Java EE Security API 1.0
  • Java Authentication Service Provider Interface for Containers 1.1
  • Java Authorization Contract for Containers 1.5
  • Java EE Application Deployment 1.2 (Optional)
  • J2EE Management 1.1
  • Debugging Support for Other Languages 1.0

2.5 Java EE와 연관된 Java SE 스펙들

  • Java Management Extensions (JMX) 2.0
  • SOAP with Attachments API for Java (SAAJ) Specification 1.3
  • Streaming API for XML (StAX) 1.0
  • Java API for XML Processing (JAXP) 1.6
  • Java Database Connectivity 4.0
  • Java Architecture for XML Binding (JAXB) 2.2
  • Java API for XML-Based Web Services (JAX-WS) 2.2
  • JavaBeans Activation Framework (JAF) 1.1

Java EE 개요

1. Java EE란? Java Enterprise Edition 기업용 분산 어플리케이션 개발 목적의 산업 표준 플렛폼. Java SE의 확장. Web Profile(JSP, Servlet등 웹 어플리케이션 서버에 관련된 사양)이 포함된다. 2. Java EE의 기술들(Technologies) 마지막 버전인 Java EE 8 의 기술목록, 오라클 공식 문서 참조 더 이상의 업데이트는 없다. 이유는 Jakarta EE포스트를 참조. 2.1 웹 어플리케이션 기술들 WebSocket 1.1 JSON Binding 1.0 JSON Processing 1.1 Java Servlet 4.0 JavaServer Faces(JSF) 2.3 Expression Language(EL) 3.0 JavaServer Pages(JSP) 2.3 Standard Tag Library for JavaServer Pages(JSTL) 1.2 2.2 엔터프라이즈 어플리케이션 기술들 Batch Applications for the Java Platform 1.0 Concurrency Utilities for Java EE 1.0 Contexts and Dependency Injection for Java 2.0 Dependency Injection for Java 1.0 Bean Validation 2.0 Enterprise JavaBeans 3.2 Interceptors 1.2 Java EE Connector Architecture 1.7 Java Persistence 2.2 Common Annotations for the Java Platform 1.3 Java Message Service API 2.0 Java Transaction API (JTA) 1.2 JavaMail 1.6 2.3 웹 서비스 기술들을 Java API for RESTful Web Services (JAX-RS) 2.1 Implementing Enterprise Web Services 1.3 Web Services Metadata for the Java Platform 2.1 Java API for XML-Based RPC (JAX-RPC) 1.1 (Optional) Java API for XML Registries (JAXR) 1.0 (Optional) 2.4 관리 & 보안 기술들 Java EE Security API 1.0 Java Authentication Service Provider Interface for Containers 1.1 Java Authorization Contract for Containers 1.5 Java EE Application Deployment 1.2 (Optional) J2EE Management 1.1 Debugging Support for Other Languages 1.0 2.5 Java EE와 연관된 Java SE 스펙들 Java Management Extensions (JMX) 2.0 SOAP with Attachments API for Java (SAAJ) Specification 1.3 Streaming API for XML (StAX) 1.0 Java API for XML Processing (JAXP) 1.6 Java Database Connectivity 4.0 Java Architecture for XML Binding (JAXB) 2.2 Java API for XML-Based Web Services (JAX-WS) 2.2 JavaBeans Activation Framework (JAF) 1.1

java

java ee

2022-10-04, 13:05

Jakarta EE 개요

1. Jakarta EE, Java EE의 새 이름 Jakarta EE는 Java EE가 이클립스 재단으로 이관되면서 붙여진 새 이름이다. Java EE로 불리기 이전에는 J2EE로 불리던 때도 있었다. 2. Jakarta EE의 이름 변천사. 1999년: 썬 마이크로시스템즈에서 J2EE명으로 발표. 2006년: Java EE 5부터 Java EE로 개칭. 2010년: 오라클의 썬 마이크로시스템즈 인수. 2013년: 오라클, 인수 후 첫 버전인 Java EE 7 발표. 2017년: 오라클, Java EE 8 발표 후 Java EE를 이클립스 재단에 이관. 이클립스 재단의 EE4J라는 프로젝트로 기존 Java EE 8의 기술들을 이식하고 오픈소스로 관리하기 시작. 2018년: 이클립스 재단, 설문을 통해 플렛폼의 새 이름과 기술명을 Jakarta로 결정. 2019년: 이클립스 재단, Java EE 8과 완벽 호환되는 Jakarta EE 8 발표. 2020년: 이클립스 재단, Jakarta EE 9 발표, API 네임스페이스를 javax.에서 jakarta.으로 변경. 3. 왜 이클립스 재단은 이름을 변경해야 했을까? 오라클은 Java EE를 이클립스 재단에 이관했지만 여전히 Java에 대한 상표권을 소유하고 있어 이클립스 재단측은 Java라는 이름을 가지고 새로운 기술을 발표할 수가없었다. 따라서, 투표를 통해 새 이름을 지정(2019), 새 플랫폼과 기술 이름을 Jakarta로 변경하기로 결정하고 새 기술이 등장하는 Jakarta EE 9부터는 javax. 네임스페이스를 비슷한 느낌의 jakarta. 로 변경할 수 밖에 없었다. 4. Jakarta EE만의 차별점. Jakarta EE는 Java EE의 오픈소스 버전. 이클립스 재단에 이관되면서 모든 Java 네임스페이스가 Jakarta로 변경 Java EE는 JCP(자바 커뮤니티 프로세스) 를 통해 기술 표준화를 수행한것에 반해 Jakarta EE는 JESP라는 보다 개방적이고 중립적인 정책을 따르게 되었다. Java EE 8과 완벽 호환되는 Jakarta 8은 오로지 기술 이름만 Jakarta로 바뀌거나 비슷한 이름으로 변경. Jakarta EE 9 버전부터는 API의 네임스페이스 마저 javax.에서 jakarta.로 변경, 새로운 기술 추가.

java

java ee

jakarta ee

2022-10-04, 18:12

EL 개요

1. EL이란? Expression Language은 JSF와 JSP에서 JavaBeans의 동적 콘텐츠에 접근할 수 있는 간결한 표현식이다. 1.1 EL의 특징 기본적으로 ${expr} 또는 #{expr} 구분자를 통해 나타낸다. JSP page의 Action Elements와 Template Data에서 사용. 표현식의 Deffered Evaluation(지연된 평가)와 Immediate Evaluation(즉시 평가) 기능을 제공. 표현식에서 JavaBeans의 데이터를 get하거나 set가능. 표현식에서 메소드를 호출가능. 1.2. EL의 역사 ECMAScript와 XPath의 영감을 받음. JSP 1.2의 JSTL 1.0 스펙의 일부로 JSTL 액션의 속성 값을 런타임에 입력하는 간결한 문법으로써 EL이 처음 등장. "JSTL 1.0의 EL은 오직 JSTL 액션에서만 사용 가능했다" The JSP Standard Tag Library (JSTL) version 1.0 (based on JSP 1.2) was therefore first to introduce an Expression Language (EL) to make it easy for page authors to access and manipulate application data without having to master the complexity associated with programming languages such as Java and JavaScript. JSP 2.0부터는 별도의 기술로 JSP 스펙에 포함 되었으며, JSP컨테이너 스스로가 EL표현식을 해석, JSTL 액션이외의 커스텀 액션, 템플릿 데이터에서도 사용 가능해짐. "JSP 2.0부터 기술 스펙에 등장한 EL은 JSP의 모든 부분에서 사용 가능하다" Given its success, the EL was subsequently moved into the JSP specification (JSP 2.0/JSTL 1.1), making it generally available within JSP pages (not just for attributes of JSTL tag libraries). 1.3. EL의 스펙 기술 스펙은 JSR-341에 기술. 마지막 버전은 EL 3.0, 이유는 Jakarta EE 참조. 2. EL표현식의 구분 EL 표현식은 Evaluation시점, 메소드 호출여부, 값 쓰기 가능여부에 따라 구분되어 진다. 2.1. Evaluation 시점에 따른 구분 Evaluation 시점에 따라 Immediate Evaluation(즉시 평가)와 Deferred Evaluation(지연된 평가)두가지를 가진다. 2.1.1. Immediate Evaluation 컴파일된 JSP 객체가 실행되는 런타임에 바로 Evaluation수행. ${표현식} 2.1.2. Deferred Evaluation 태그에 따라 정해진 시점에 Evaluation 수행. #{표현식} 2.2. 메소드 호출 여부에 따른 구분 EL에서의 표현식은 크게 메소드를 호출하는 Method Expression(메소드 표현식)과 그렇지 않은 Value Expressions(값 표현식)으로 나뉠 수 있다. 2.2.1. Value Expressions 값 표현식은 템플릿 데이터 및 Action Elements에서 사용가능. 데이터 쓰기 가능 여부에 따라 R-value 표현식과 L-value 표현식로 나뉜다. 2.2.2. Method Expression JSP에서 선언된 객체의 메소드 혹은 정적 메소드를 호출 가능 public class MyObject { public String getMessage(String message) { return "Hello "+message; } } ${obj.getMessage("world!") } 2.3. 쓰기가능 여부에 따른 구분 2.3.1. R-value Expressions 데이터 읽기만 가능. Immediate Evaluation 구문 ${} 에서 작성된 표현식은 모두 R-value 표현식이다. 3.1.2. L-value Expressions 데이터 읽고 쓰기 가능. L-value 표현식을 허용할 수 있는 태그 속성에서만 사용 가능.

java

java ee

el

2022-10-04, 14:27

JQuery 개요

1. JQuery란? JavaScript 라이브러리 $키워드를 통해 Dom 요소의 접근과 수정을 용이하게 한다. 이벤트 핸들링을 용이하게 한다. AJAX구현 API 제공, AJAX통신을 용이하게 한다. 2. Vanilla-JS VS JQuery 2.1. Dom요소의 접근 비교 #title요소에 대한 접근 Vanilla-JS document.getElementById("title"); JQuery $("#title"); 2.2. 이벤트 핸들링 비교 숨겨진 #message요소가 #button요소를 클릭했을때 보여지게 하기. Vanilla-JS var hiddenMsg = document.getElementById("message"); document.getElementById("button").onClick = function() { hiddenMsg.style.display='block'; }; JQuery var hiddenMsg = $( "#message" ); $( "#button" ).on( "click", function( event ) { hiddenMsg.show(); }); 2.3. AJAX 통신 비교 비동기로 에서 get 요청으로 텍스트를 받아와 #content요소에 넣기. Vanilla-JS var request = new XMLHttpRequest(); request.open("GET", "https://rkdgusrn1212.github.io/"); request.send(); request.onreadystatechange = function() { if ( request.readyState === 4 && request.status === 200 ) { document.getElementById("content").innerHTML = request.responseText; } }; JQuery $.ajax({ url: "https://rkdgusrn1212.github.io/", method: "GET", dataType: "text", success: function(data) { $("#content").html(data); } })

jquery

2022-10-03, 21:00

Jekyll 정적 사이트 생성기

Jekyll 이란? Jekyll (지킬)은 Ruby언어로 작성된 정적 사이트 생성기이다. Jekyll은 특히 Github의 정적 웹 호스팅 서비스인 Github Pages에서 유용한데, Github Pages에는 Jekyll이 내장되어 있어서, Jekyll을 활용하면 Github Pages에서의 사이트 구축과 포스팅이 훨신 빠르고 간편해진다. Jekyll의 특징 DB를 안쓴다. 따라서 댓글 기능이 없다. 또한 모든 페이지가 HTML파일로 서버에 존재한다. 프로젝트 폴더의 \posts_ 폴더에 각 게시글을 나타내는 Markdown 문서를 유지한다. 각 Markdown 문서는 빌드 후 웹 서버 루트 디렉토리인 \site_ 의 하위 경로에 페이지를 구성하는 모든 레이아웃 요소가 적용된 하나의 완성된 HTML 문서로 저장된다. Liquid문법을 통해 컨텐츠의 동적 로드를 구현 게시글에 미리 Markdown으로 작성할 수 없는 동적인 콘텐츠를 추가하려고 한다면 Markdown문서에 Liquid 템플릿 언어를 사용하여 서버 런타임에 동적인 콘텐츠를 로드하도록 할 수 있다. Liquid로 작성한 구문은 빌드 시 동적으로 HTML을 변경하는 스크립트를 생성한다. 테스트용 웹 서버 기능 제공. Jekyll serve \-\-host SERVERIP(default는 127.0.0.1) \-\-port SERVERPORT (default는 4000) 를 하면 프로젝트를 빌드하면 생성되는 \site\ 디렉토리를 루트 디렉토리로 하는 정적 웹 서버를 구동시킨다. 그러나 언제까지나 테스트용 서버라는 것을 명심해야 한다. 다른 ip에서 접근하기 위해선 serverip를 루프백이 아닌 외부에서 접근 가능한 ip로 설정해주고, 포트 방화벽을 해제 시켜줘야한다. Jekyll의 작동 원리 Jekyll 프로젝트를 생성한다. Jekyll은 Ruby Gem으로 Ruby 환경에서 설치가 가능하다. YAML으로 작성된 프로젝트 설정파일에서 사이트의 기본 메타 데이터와 레이아웃 같은 사이트 구성 정보들을 설정한다. 사이트에 올릴 게시글의 콘텐츠를 DB에서 로드하지 않고 각 게시글마다 하나의 Markdown파일로 작성해준다. 동적으로 로드할 콘텐츠가 있다면 Liquid 템플릿 문법을 Markdown과 함께 사용한다. 작성한 게시글 Markdown문서는 Jekyll 프로젝트 빌드를 통해 빌드 경로에 YAML 설정값과 작성한 게시글 Markdown들을 참고하여 HTML/CSS파일들을 생성하게 된다.

jekyll

2022-10-02, 14:44