자카르타 서버 얼굴

Jakarta Server Faces
자카르타 얼굴들
원저자썬 마이크로시스템즈
개발자이클립스 파운데이션
안정적인 방출
4.0.0 / 2022년 5월 15일, 18개월(2022-05-15)[1]
저장소
작성자자바
유형웹 응용프로그램 프레임워크
웹사이트jakarta.ee/specifications/faces/ Edit this at Wikidata

JSF(Jakarta Faces, Jakarta Server Faces and Java Server Faces)는 웹 응용 프로그램을 위한 구성 요소 기반 사용자 인터페이스를 구축하기 위한 Java 사양입니다.[2] Java Platform, Enterprise Edition의 일부로 Java Community Process를 통해 표준으로 공식화되었습니다. 페이지 내 재사용 가능한 UI 구성요소를 사용하여 서버 기반 애플리케이션의 사용자 인터페이스(UI) 구축을 단순화한 MVC프레임워크입니다.[3]

JSF 2.x는 Facelet을 기본 템플릿 시스템으로 사용합니다. 소프트웨어 사용자는 XUL 또는 Java를 사용할 수도 있습니다.[4] JSF 1.x는 JSP(JavaServer Pages)를 기본 템플릿 시스템으로 사용합니다.

역사

2001년 자바 서버 페이스가 된 기술에 대한 원래 자바 사양 요청(JSR)은 이름을 가진 패키지를 개발할 것을 제안했습니다. javax.servlet.ui[5]

2001년 6월, 자바월드는 에이미 파울러 팀의 "JavaServer Faces API"(일명 문워크)를 "웹 기반 사용자 인터페이스를 만들기 위한 응용 프로그램 프레임워크"로 보고했습니다.[6]

최신 개발품

JSF 2.0의 공식 뷰 기술로 (Java Server Faces 전용으로 설계된) Faclet이 채택되었습니다. 이를 통해 JSP에 존재했던 라이프 사이클 충돌을 제거하여 Java 개발자가 해결해야 합니다.[7]

새로운 JSF 개발은 또한 다음과 같은 자바 주석에 대한 광범위한 접근성을 제공합니다. @ManagedBean, @ManagedProperty 그리고. @FacesComponent 필요성을 제거할 수 있는 faces-config.xml, 프레임워크 확장을 제외한 모든 경우. 내비게이션도 간소화되어 필요성이 없어집니다. faces-config.xml 내비게이션 케이스 페이지 전환은 원하는 보기 또는 Facelet의 이름을 전달하는 것만으로 호출할 수 있습니다.

부분 상태 저장 및 DOM(Document Object Model) 업데이트의 추가는 기본 제공되는 표준화된 AJAX 지원의 일부입니다.

최신 JSF 릴리스에는 이미지, CSS 및 자바스크립트와 같은 리소스를 처리할 수 있는 기능이 내장되어 있어 아티팩트를 구성 요소 라이브러리에 포함하거나 JAR 파일로 분리하거나 웹 응용 프로그램 내에서 일관된 위치에 쉽게 배치할 수 있습니다. 여기에는 리소스의 논리적 이름 지정 및 버전 지정이 포함됩니다.

또한 JSF 2.0은 이벤트, 별도 개발, 스테이징 및 프로덕션 모드에 대한 지원을 추가하는 등 다양한 변경 사항을 포함하고 있습니다. RAILS_ENV Ruby on Rails에서 표준 구성 요소 세트를 대폭 확장합니다.

업데이트이력

  • JSF 4.0 (2022-05-15) – 주요 기능: 일부 사용되지 않는 항목(기본 관리 원두, 기본 EL 참조)을 삭제했으며, 기본적으로 확장된 보기는 없다고 ClientWindowScope가 추가했습니다.
  • JSF 3.0.0 (2020-10-28) – Javax에서 자카르타로 패키지명 변경
  • JSF 2.3 (2019-09-10) – Jakarta EE용 Jakarta Server Pages API 첫 공개API도 동작도 변경되지 않았습니다.
  • JSF 2.3 (2017-03-28) – 주요 특징:[8] 검색식, 확장자 없는 URL, 수업 완료를 위한 빈 검증, WebSocket을 이용한 푸시 커뮤니케이션, CDI와의 통합 강화
  • JSF 2.2(2013-05-21) – 상태 비저장 보기, 페이지 흐름 및 휴대용 리소스 계약 작성 기능과 같은 새로운 개념을 도입했습니다.[9]
  • JSF 2.1 (2010-11-22) – JSF 2.0의 유지보수 릴리스 2. 매우 적은 수의 사양 변경만 가능합니다.[10][11]
  • JSF 2.0(2009-07-01) – 사용 편의성, 향상된 기능 및 성능을 위한 주요 릴리스. Java EE 6과 일치합니다.
  • JSF 1.2 (2006-05-11) – 코어 시스템 및 API의 많은 개선 사항. Java EE 5와 일치합니다. Java EE로의 초기 채택.
  • JSF 1.1 (2004-05-27) – 버그 수정 릴리스. 사양 변경이 없습니다.
  • JSF 1.0 (2004-03-11) – 초기 사양 공개.

작동 방식

구성 요소 기반 UI 디자인 모델을 기반으로 Java Server Faces는 뷰 템플릿 또는 Facellet 뷰라는 XML 파일을 사용합니다.FacesServlet 는 요청을 처리하고, 적절한 뷰 템플릿을 로드하고, 구성 요소 트리를 구축하고, 이벤트를 처리하고, 클라이언트에 대한 응답(일반적으로 HTML 언어)을 렌더링합니다. UI 구성 요소 및 기타 스코프 관심 개체의 상태는 stateSaving(참고: transient true)이라는 프로세스에서 각 요청이 끝날 때 저장되고 해당 뷰를 다음에 작성할 때 복원됩니다. 클라이언트 또는 서버 측에서 개체 및 상태를 저장할 수 있습니다.

JSF와 AJAX

모하라
기타이름JSFRI
원저자썬 마이크로시스템즈
개발자이클립스 파운데이션
최초출시2004년 3월 3일; 19년 전 (2004-03-03)
안정적인 방출
3.0.2 / 2021년 11월 29일, 23개월(2021-11-29)
저장소github.com/eclipse-ee4j/mojarra
작성자자바
플랫폼자카르타 EE
유형웹 프레임워크
면허증.EPL-2.0
웹사이트eclipse-ee4j.github.io/mojarra/

JSF는 종종 리치 인터넷 애플리케이션 개발 기법인 AJAX와 함께 사용됩니다. AJAX는 풍부한 사용자 인터페이스를 만드는 웹 개발 기술과 기술의 조합입니다. 모하라(JSF 참조 구현[12])와 아파치 마이페이스(Apache MyFaces)의 사용자 인터페이스 구성 요소는 원래 HTML 전용으로 개발되었으며, AJAX는 자바스크립트를 통해 추가되어야 했습니다. 그러나 이는 다음과 같이 변경되었습니다.

JSF는 여러 출력 형식을 지원하기 때문에 JSF로 만든 사용자 인터페이스를 개선하기 위해 AJAX 지원 구성 요소를 쉽게 추가할 수 있습니다. JSF 2.0 규격은 AJAX 요청 라이프사이클을 표준화하고 AJAX 이벤트에 간단한 개발 인터페이스를 제공함으로써 AJAX에 대한 내장 지원을 제공합니다. 이 규격을 사용하면 클라이언트에서 트리거된 이벤트가 유효성 검사, 변환 및 메서드 호출을 거친 후 XML DOM 업데이트를 통해 결과를 브라우저로 반환할 수 있습니다.

JSF 2는 브라우저에서 자바스크립트를 비활성화할 때 graceful degration을 지원합니다.

AJAX 지원 구성 요소 및 프레임워크

AJAX 기반의 JSF 프레임워크 또는 컴포넌트 라이브러리를 제공하는 회사 및 프로젝트는 다음과 같습니다.

  • Apache MyFaces – AJAX 구성 요소가 포함된 Apache Foundation JSF 구현
  • Backbase Enterprise AJAX JSF EditionAJAX 프레임워크
  • BootFaces 부트스트랩 기반 오픈 소스 JSF 프레임워크
  • IBM NotesXPages
  • ICEfaces – 오픈 소스, Java JSF 확장 프레임워크 및 풍부한 컴포넌트, JavaScript 없는 AJAX
  • JBoss RichFaces(AJAX4jsf에서 파생 및 대체) – 레이아웃, 파일 업로드, 양식, 입력 및 기타 많은 기능을 위한 AJAX 지원 JSF 구성 요소. 2016년 6월에 수명을 다했습니다.
  • OmniFaces – 오픈 소스 JSF 유틸리티 라이브러리
  • OpenFaces – JSF 구성 요소가 포함된 AJAX 프레임워크
  • 풍부한 클라이언트를 마주한 Oracle ADFOracle 애플리케이션 개발 프레임워크
  • PrimeFaces – JSF 구성 요소가 포함된 AJAX 프레임워크
  • Sun Java Blueprints AJAX 구성 요소
  • ZK – JSF 구성 요소가 포함된 AJAX 프레임워크

비평

ThinkWorks, 2014

ThoughWorks는 2014년 1월 Technology Radar 출판물에서 다음과 같이 밝혔습니다.[13]

JSF(JavaServer Faces)를 사용하는 팀에서 문제가 발생하는 경우가 계속 발생하고 있으며, 이 기술을 사용하지 않도록 권장합니다. 팀들이 JSF를 선택하는 것은 프로그래밍 모델이 자신에게 맞는지에 대한 실질적인 평가 없이 JEE 표준이기 때문인 것 같습니다. 우리는 JSF가 HTML, CSSHTTP를 추상화하려고 하기 때문에 결함이 있다고 생각합니다. 이것은 현대 웹 프레임워크가 하는 것과 정확히 반대입니다. JSF, ASP 같은.NET 웹폼은 상태 비저장 프로토콜 HTTP 위에 상태 유지 기능을 생성하려고 시도하며 결국 공유 서버 측 상태와 관련된 전체 호스트 문제를 야기합니다. 우리는 JSF 2.0의 개선을 알고 있지만, 그 모델은 근본적으로 고장 났다고 생각합니다. 팀은 간단한 프레임워크를 사용하고 HTTP, HTML 및 CSS를 포함한 웹 기술을 수용하고 이해할 것을 권장합니다.

반박

2014년 2월, Chsa ğatay Civici(PrimeFaces Lead)는 JSF는 더 이상 당신이 들은 것이 아닙니다라는 제목의 게시물에서 ThinkWorks의 비판에 응답했습니다. 치비치는 수년간 JSF의 향상은 현대 웹 개발을 포함하는 많은 기능을 제공하며 자바스크립트, HTML 및 CSS를 직접 작성할 수 있는 옵션을 제공한다고 주장합니다. 또한 치비치는 주에 대해서 다음과 같이 썼습니다.[14]

JSF는 본질적으로 상태가 양호한 프레임워크이며 주 정부는 웹 애플리케이션을 쉽게 개발할 수 있도록 합니다. JSF 2.0+에 도입된 향상된 상태 관리 기술(예: 상태 비저장 모드, 부분 상태 저장)을 통해 JSF도 확장할 수 있습니다.

DZone, 2014

2014년 11월 DZONE 웹사이트에 게재된 "JSF를 피해야 하는 이유"라는 제목의 기사에서 옌스 쇼더는 다음과 같이 썼습니다.[15]

JSF가 선호하는 프레젠테이션 기술인 Facelets는 좋은 오래된 JSP나 Thymeleaf와 같은 평범한 템플릿 기술처럼 첫 눈에 띕니다. 하지만 자세히 보면 공포가 확연해집니다. HTML을 구조화하는 동일한 장소에 UI의 어떤 부분을 작업에서 업데이트해야 하는지에 대한 논리도 배치합니다. 제 책에서 우려 분리 원칙에 대한 명백한 위반입니다. 서버 측 수명 주기를 변경하는 즉각적인 속성이 더 좋습니다! 그리고 이것이 충분하지 않으면 사용하는 태그에 따라 다른 방식으로 수행합니다. 이런 걸 만들어내면 안 돼요.

서버사이드, 2016

2016년 2월, 엔터프라이즈 자바 커뮤니티 웹사이트 TheServerSide는 JSF의 사용을 반대하는 기사를 발표했는데, JSF의 사용은 최종 제품의 품질을 손상시킬 수 있습니다. 이 기사는 다음과 같은 다섯 가지 이유로 상세히 설명했습니다.[16]

  1. 단순한 작업은 어려워집니다.
  2. JSF는 유연성이 부족합니다.
  3. 학습 곡선이 가파릅니다.
  4. 표준 Java 기술과의 호환성 및
  5. 원시 AJAX 지원.

참고문헌

  1. ^ "Jakarta Faces™". Retrieved 27 September 2022.
  2. ^ 자카르타 페이스 4.0
  3. ^ "JSF 2.0 Tutorial". mkyong. 2010-12-12. Retrieved 2017-04-28. JavaServer Faces (JSF) 2.0, is an MVC web framework which focus on simplifies building user interfaces (comes with 100+ ready UI tags) for Java web application and make reusable UI component easy to implement.
  4. ^ NoVDL: JSF 보기를 순수 자바로 작성
  5. ^ "JSR 127: JavaServer Faces". Java Community process. Oracle Corporation. 2014. Retrieved 2014-08-05. 2.6 Is there a proposed package name for the API Specification? (i.e., javapi.something, org.something, etc.) [:] javax.servlet.ui
  6. ^ Armstrong, Eric (June 6, 2001). "Java Web services: What's not to like?". JavaWorld. Retrieved 2020-07-27. The JavaServer Faces API (aka Moonwalk) promises to provide an elegant solution for implementing interactive functionality on incompatible browsers. […] Designed by a team led by Amy Fowler, Sun's AWT and Swing architect, the JavaServer Faces API will provide a collection of GUI tools that will run on common browsers using standard HTML.
  7. ^ Bergsten, Hans. "Improving JSF by dumping JSP". O'Reilly. Retrieved 18 August 2011.
  8. ^ Tijms, Arjan. "What's new in JSF 2.3?". Musings of a Java EE developer. Retrieved 2020-07-27.
  9. ^ JSF 2.2(JSR-344)Wayback Machine에서 Java 뉴스 Archive 2020-07-27을 통해 최종 기술 범위를 넓힙니다. Blog.oio.de . 2020-07-27에 검색되었습니다.
  10. ^ JSR 314 Java Server Faces 2.1 JSF 2.1 techs scouting in the java news. Blog.oio.de . 2020-07-27에 검색되었습니다.
  11. ^ Bosch, Andy (2010-11-29). "Was ist neu in JSF 2.1" (in German). it-republik.de. Retrieved 2013-02-19.
  12. ^ Lubke, Ryan (5 December 2007). "Project Mojarra - the JSF RI gets a code name". Ryan Lubke's Blog. Sun Microsystems. Oracle Corporation. Archived from the original on 2017-04-07.
  13. ^ "Technology Radar" (PDF). ThoughtWorks. January 2014. p. 12. Archived from the original (PDF) on 2016-04-07. Retrieved 2014-01-30.
  14. ^ "JSF is not what you've been told anymore". PrimeFaces. 2014-02-12. Retrieved 2020-11-24.
  15. ^ Jens Schauder (November 2014). "Why You Should Avoid JSF". DZone.
  16. ^ McKenzie, Cameron (February 16, 2016). "Five drawbacks to choosing JSF as your web application framework". TheServerSide. Retrieved December 22, 2020.

외부 링크