jQuery 및 AngularJS와 같은 JavaScript 라이브러리로 UI를 구현할 수있는 경우 JSF의 필요성은 무엇입니까?


116

UI 프레임 워크이고 일부 UI 구성 요소를 제공하는 JSF에 대해 읽었습니다. 그러나 jQueryUI, AngularJS, ExtJS 또는 일반 HTML, CSS 및 JavaScript에서 사용할 수있는 구성 요소의 수와 비교하면 얼마나 더 좋거나 다른가요?

누군가가 JSF를 배워야하는 이유는 무엇입니까?


3
서버 생성 html의 장점 : 검색 엔진 검색 가능성, 권한에 따라보기 숨기기. 그렇지 않으면 순수한 ajax ui를 위해 포기했습니다.
Neil McGuigan

5
또한 AngularJS + RESTful 백엔드를 위해 JSF를 포기했습니다. (사과와 오렌지,하지만 Angular는 너무
멋져서

JSF는 Servlet API 위에 구축 된 컴포넌트 기반 MVC 프레임 워크이며 JSP 또는 Facelets와 같은 다른 Java 기반보기 기술에서 사용할 수있는 taglibs를 통해 컴포넌트를 제공합니다.
Divyesh Kanzariya

답변:


154

JSF에서 일반 JSP / Servlet / HTML / CSS / JS는 jQuery에서 일반 JS로 : 적은 코드로 더 많은 작업을 수행 할 수 있습니다. 취할 PrimeFaces을 (+ jQuery를 jQuery를 UI 기반) 예를 들어, 자신을 검색 쇼케이스는 전체 코드의 예를 표시. BootsFaces (jQuery + Bootstrap UI 기반)에는 전체 코드 예제가 포함 된 쇼케이스 도 있습니다 . 이러한 예제를 자세히 살펴보면 기본적으로 모델로 간단한 Javabean 클래스와보기로 XHTML 파일이 필요하다는 것을 알 수 있습니다.

JSF가 HTML / CSS / JS를 대체하는 것으로 간주해서는 안되며 서버 측 부분도 고려해야합니다 (특히 : JSP / Servlet). JSF는 HTTP 요청 매개 변수를 수집하고,이를 변환 / 검증하고, 모델 값을 업데이트하고, 비즈니스 작업을 수행하기위한 올바른 Java 메소드를 실행하고, HTML / CSS / JS 상용구 코드를 생성하는 모든 상용구의 필요성을 제거합니다. JSF를 사용하면 기본적으로 XHTML 페이지를 뷰 정의로, Javabean 클래스를 모델 정의로 사용하게됩니다. 이것은 개발 속도를 크게 향상시킵니다.

모든 구성 요소 기반 웹 MVC 프레임 워크와 마찬가지로 JSF에서는 렌더링 된 HTML / CSS / JS에 대해 덜 세밀한 제어를 할 수 있습니다. 서버 측에서 JSF보기 상태를 고려해야하므로 사용자 정의 JS 코드를 추가하는 것은 쉽지 않습니다. 예를 들어 JS 측에서 비활성화 된 버튼을 활성화하면 JSF 측에서 버튼이 활성화되지 않습니다. 엄청난 보안 이점). 그러나 그것이 주요한 눈에 띄는 경우에는 Spring MVC 와 같은 액션 기반 웹 MVC 프레임 워크를 찾으십시오 . HTML / CSS / JS 코드 (그리고 XSS, CSRF 및 DOM 조작 방지!)를 직접 작성해야한다는 점만 고려할 입니다. 또한 Facelets에서 JSP로 돌아 가면 고급 템플릿 기능도 놓칠 수 있습니다.

반면에 큰 JSP / Servlet / HTML / CSS / JS / jQuery 기반 웹 사이트가 있고 반복되는 JSP / Servlet / HTML / CSS / JS / jQuery 상용구 코드를 재사용 가능한 구성 요소로 리팩터링하려는 경우 해결책 중 하나는 JSF입니다. 사용자 정의 템플릿, 태그 파일 및 구성 요소가이를 지원할 수 있습니다. 그런 관점에서 JSF는 JSP / Servlet / HTML / CSS / JS / jQuery 위에 있습니다 (그리고 JSF에 들어가기 전에 이러한 기본 사항을 이해하는 것이 매우 중요한 이유이기도합니다).

실제 킥오프 JSF 기반 프로젝트는 Java EE Kickoff App에서 찾을 수 있습니다 . JSF 옆에 좋은 HTML5 , CSS3jQuery 가 포함되어 있음을 알 수 있습니다 .

또한보십시오:


15
적은 코드로 더 많은 일을 하시겠습니까? 하지만 더 많은 xml을 사용하면 ... 얼마나 절충안이 될까요 ... 또한 유연성을 제공합니다
Danubian Sailor

33
JSF 2.0+에서는 xml이 필요하지 않습니다.
Cagatay Civici

5
우리는 JSF 2.0 주석이
어휘 교환

1
많은 뷰가 서버에서 생성되기 때문에 JSF를 사용하면 비즈니스 / 컨트롤러 레이어와 뷰 사이에 명확한 설명이없는 것 같습니다. 나는 모든 것이 브라우저로 전송되기 전에 서버에서 컴파일된다는 것을 이해하지만 렌더링 논리 / 데이터를 보내는 것보다 뷰가 렌더링하는 데이터를 반환하는 Java 개체를 선호합니다.
Rick

1
JSF가 HTML에 대한 강력한 제어 기능을 갖춘 서버 측 작업이라는 데 동의합니다.
Plain_Dude_Sleeping_Alone jul.

28

JSF는 자바 상점이 jQuery와 같은 것을 배우고 복잡한 JS를 빌드 할 필요없이 순수한 자바 스택에 집중할 수 있도록 만들어졌습니다. 시간이 돈이고 Java 개발에 이미 초점을 맞추고있는 곳이 많은 세상에서 스택의 언어 / 조각이 하나 줄어들 기 때문에 교육과 유지 관리가 더 빠르고 저렴 해집니다.

특히 프로젝트의 개발자 중 일부가 웹에 능숙하지 않은 경우 JavaScript가 대규모 팀에서 유지 관리의 악몽이되기 쉽다고 덧붙일 것입니다.


그래서 JQuery JS 등에 익숙하다면 JSF에 집중할 필요가 없습니까?
sushil bharwani 2010

2
그것은 모두 해결하려는 문제와 해결하려는 팀에 따라 다릅니다.
Andrew White

1
나는 팀에 동의하지만 JSF가 해결할 수있는 다른 문제와 js jQuery 등이 해결할 수없는 것을 배우는 데 관심이 있습니다. JSF를 배우려는 동기를 쌓으려고합니다.
sushil bharwani 2010

1
없음, 동일한 문제를 해결 하는 다른 방법을 제공합니다 .
Andrew White

8
JQuery에 정말 익숙하더라도 JSF는 여전히 정말 유용합니다. 서버 측 코드를 클라이언트 측 표현에 쉽게 연결할 수있는 방법을 제공합니다. 일부 Facelet '복합 구성 요소'는 HTML 및 JS (JQuery 포함)에 대한 다소 얇은 래퍼입니다. 그들은 구축하기 쉽고 일반적으로 전체 클라이언트-서버 측 연결을 더 쉽게 만듭니다.
Arjan Tijms 2010

23

자바 스크립트와 jQuery와 같은 프레임 워크를 사용하면 완전한 유연성과 완전한 제어 권한을 갖게됩니다. ext 등을 사용하면 많은 제어권을 잃고 프레임 워크에 적응해야합니다. JSF를 사용하면 완전히 제어권을 잃고 프레임 워크에 완전히 적응해야합니다. 라이프 사이클 등에서 호출되고 마지막으로 서버에 대한 호출이 이루어질 수있는시기와 그렇지 않은 경우 제어 할 수 없습니다. '특별한'일을한다면 매우 어려운 위치에있는 것입니다. 그리고 JSF 세계에서는 제한된 문자 집합 (예 : 숫자 필드) 만 입력 할 수있는 다중 열 테이블 정렬 또는 필드와 같은 기본적인 것조차 '특별한'것으로 간주됩니다.

그러나 유연성이 높을수록 더 많은 오류나 잘못된 관행을 만들 수 있습니다. 높은 유연성은 고도로 지능적인 프로그래머에게만 작동하며 다른 사람들은 프로젝트를 관리 할 수없는 악몽으로 바꿉니다.

그러나 JSF와 제한된 유연성으로 인해 작업을 수행하는 올바른 방법은 항상 몇 가지 (또는 단 하나)뿐입니다. 당신은 매우 제한적이며 단축키를 만들 수 없으며 더 많은 XML을 작성해야합니다. 그러나 표준에 적응할 때 경험이 없거나 숙련되지 않은 프로그래머가 생성 할 코드를 더 잘 제어 할 수 있습니다. 결과적으로 대기업은 JSF가 '안전'하기 때문에 좋아합니다.

내가 GWT에서 JSF로 옮겼을 때, 나는 얼마나 많은 것들이 나에게 자연 스러웠는지, 매우 비정상적인 것으로 간주되었고 얼마나 단순한 것들이 달성하기 어려웠는지에 대해 충격을 받았다. 또한 GWT / jQuery 기반 앱에서 레이블을 생성하는 함수 하나를 변경하는 레이블 뒤에 ':'기호를 추가하는 것과 같이 아주 작은 변경을 수행하는 경우에도 현지화 된 속성을 사용하여 수십 개의 파일을 변경해야했지만 나만 빼고는 이상해 ...


7
PrimeFaces는 jQuery를 기반으로하므로 클라이언트 측에서 많은 유연성을 가질 수 있으며 PrimeFaces 구성 요소는 사용자 정의 할 수있는 이벤트 콜백으로 클라이언트 및 서버 측에 많은 후크를 제공합니다. 자바 스크립트 API는 사용자 정의 된 모양을 위해 CSS와 재정의 될 수 있습니다. : 레이블은보다 jQuery 친화적 인 문자를 위해 web.xml에서 전역 적으로 구성 할 수 있습니다.
Cagatay Civici

1
동의합니다. 일반적인 규칙은 프레임 워크를 사용하지 않는 경우 고급 자바 스크립트 프로그래밍이 필요하지 않으며 유지 관리가 어렵지만 훨씬 더 강력한 성능과 복잡성을 허용하는 반면 프레임 워크에 대한 의존은 빌드 및 유지 관리가 더 쉬우나 앱의 잠재적 인 용량을 제한합니다.
KTys 2014 년

10

JSF 사용의 이점은 xhtml + css + js 생성에만있는 것이 아닙니다. 때때로 JSF는 컴포넌트 기반 프레임 워크처럼 생성 할 수있는 마크 업에 제한을 부과합니다. 그러나 JSF는 그저 그런 것이 아니라 수명주기가 크게 도움이됩니다. 입력을 확인한 후 모델을 업데이트하고 노력없이 서버 측 Bean을 동기화 할 수 있습니다. "사용자가 여기에 무엇을 입력하든 숫자인지 확인하고, 그렇다면 객체 XX의 속성 YY에 저장"이라고 말하면 JSF가 모든 작업을 수행합니다.

그렇습니다. 여전히 JQuery, JS 등을 사용할 수 있습니다. 그러나 JSF는 서버 측 코드 작성과 관련하여 많은 이점을 제공하고 많은 보일러 플레이트에서 사용자를 저장합니다.


9

나는 jsf가 어떤 것을 추가한다는 것에 강력히 동의하지 않습니다. 오버 헤드 만 추가합니다. 서버에서 UI 작업을하는 것은 지금까지 들어 본 것 중 가장 우스꽝스러운 일입니다. 대규모 팀의 자바 스크립트는 훌륭하게 작동합니다.이를 재사용 코드라고합니다.

jquery를 일부 jsp 태그로 감싸기 만하면됩니다. 필요한 모든 작업이 완료되며 .jsf 및 richfaces의 .shackles 및 확장 성 문제를 견디지 ​​마십시오.


14
JSF는 양식 기반 애플리케이션에 맞춰져 있습니다. jQuery는 훌륭하지만 (PrimeFaces, RichFaces 및 IceFaces와 같은 많은 인기있는 JSF 구성 요소 라이브러리는 내부적으로 사용하기도합니다.) jQuery는 어떤 식 으로든 서버 측에서 양식 제출 처리를 단순화하지 않습니다. 일반 JSP / 서블릿을 사용하면 끔찍한 상용구 코드 만 생성됩니다. 다시 말하지만 JSF는 HTML / CSS / JS 일뿐만 아니라 JSP / Servlet이기도합니다.
BalusC 2012

2
일반적으로 JSF와 JSF 페이지의 라이프 사이클에 대해 자세히 읽으면 마음이 바뀔 수 있다고 생각합니다. 다시 말하지만, 그렇지 않을 수도 있습니다.
Ahmed Anwar

5

JSF, Spring MVC, Struts, Grails, JQuery 및 ExtJS와 함께 작업 한 결과 Grails + ExtJS가 강력한 조합 중 하나라고 생각합니다.

나는 언제든지 JSF보다 Grails를 선택할 것입니다. 클라이언트 측 프레임 워크 및 라이브러리로서 ExtJS의 완성도를 좋아하지만 JQuery보다 학습 곡선이 더 가파 릅니다.


3

다음은 jQuery와 JSF의 가장 큰 차이점입니다.

  • MVC 아키텍처 없음
  • 상태 제어 없음 (세션 또는 대화에 날짜 저장, 자동 정리 등)
  • (기본값) 유효성 검사 라이브러리 없음
  • 템플릿 라이브러리 없음
  • 고급 탐색 / 라우팅 없음
  • 고객 입장에서

jQuery는 풀 스택 웹 프레임 워크로 사용하기위한 것이 아닙니다. 낮은 수준의 JS 코드를 대체하기 위해 더 적은 코드 줄로 JS를 작성하는 것이 더 쉽고 강력 해졌습니다.

따라서 대부분 HTML 요소에 동작을 추가하는 데 사용해야합니다.


2

대규모 웹 애플리케이션에 ExtJS 프레임 워크를 사용했기 때문에 사용이 얼마나 쉬운 지 알고 있습니다. ExtJS (Schena)는 MVC 아키텍처의 (Oracle 11g) 데이터베이스 상호 작용에 가장 적합합니다. 보기는 시각적 / 사용자 상호 작용을위한 것입니다. 컨트롤러는 PLSQL 패키지 (CRUD 용 API, SQL 선택 쿼리 등)에서 사용해야하는 '처리'및 트리거를 지정했습니다. 모델 및 상점 파일은 데이터 항목을 뷰어 / 입력에 '매핑'하는 데 사용되었습니다.

ExtJS는 데이터베이스 집약적이지 않은 웹 인터페이스에는 적합하지 않습니다. Angular JS가 더 적합 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.