UI 프레임 워크이고 일부 UI 구성 요소를 제공하는 JSF에 대해 읽었습니다. 그러나 jQueryUI, AngularJS, ExtJS 또는 일반 HTML, CSS 및 JavaScript에서 사용할 수있는 구성 요소의 수와 비교하면 얼마나 더 좋거나 다른가요?
누군가가 JSF를 배워야하는 이유는 무엇입니까?
UI 프레임 워크이고 일부 UI 구성 요소를 제공하는 JSF에 대해 읽었습니다. 그러나 jQueryUI, AngularJS, ExtJS 또는 일반 HTML, CSS 및 JavaScript에서 사용할 수있는 구성 요소의 수와 비교하면 얼마나 더 좋거나 다른가요?
누군가가 JSF를 배워야하는 이유는 무엇입니까?
답변:
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 , CSS3 및 jQuery 가 포함되어 있음을 알 수 있습니다 .
JSF는 자바 상점이 jQuery와 같은 것을 배우고 복잡한 JS를 빌드 할 필요없이 순수한 자바 스택에 집중할 수 있도록 만들어졌습니다. 시간이 돈이고 Java 개발에 이미 초점을 맞추고있는 곳이 많은 세상에서 스택의 언어 / 조각이 하나 줄어들 기 때문에 교육과 유지 관리가 더 빠르고 저렴 해집니다.
특히 프로젝트의 개발자 중 일부가 웹에 능숙하지 않은 경우 JavaScript가 대규모 팀에서 유지 관리의 악몽이되기 쉽다고 덧붙일 것입니다.
자바 스크립트와 jQuery와 같은 프레임 워크를 사용하면 완전한 유연성과 완전한 제어 권한을 갖게됩니다. ext 등을 사용하면 많은 제어권을 잃고 프레임 워크에 적응해야합니다. JSF를 사용하면 완전히 제어권을 잃고 프레임 워크에 완전히 적응해야합니다. 라이프 사이클 등에서 호출되고 마지막으로 서버에 대한 호출이 이루어질 수있는시기와 그렇지 않은 경우 제어 할 수 없습니다. '특별한'일을한다면 매우 어려운 위치에있는 것입니다. 그리고 JSF 세계에서는 제한된 문자 집합 (예 : 숫자 필드) 만 입력 할 수있는 다중 열 테이블 정렬 또는 필드와 같은 기본적인 것조차 '특별한'것으로 간주됩니다.
그러나 유연성이 높을수록 더 많은 오류나 잘못된 관행을 만들 수 있습니다. 높은 유연성은 고도로 지능적인 프로그래머에게만 작동하며 다른 사람들은 프로젝트를 관리 할 수없는 악몽으로 바꿉니다.
그러나 JSF와 제한된 유연성으로 인해 작업을 수행하는 올바른 방법은 항상 몇 가지 (또는 단 하나)뿐입니다. 당신은 매우 제한적이며 단축키를 만들 수 없으며 더 많은 XML을 작성해야합니다. 그러나 표준에 적응할 때 경험이 없거나 숙련되지 않은 프로그래머가 생성 할 코드를 더 잘 제어 할 수 있습니다. 결과적으로 대기업은 JSF가 '안전'하기 때문에 좋아합니다.
내가 GWT에서 JSF로 옮겼을 때, 나는 얼마나 많은 것들이 나에게 자연 스러웠는지, 매우 비정상적인 것으로 간주되었고 얼마나 단순한 것들이 달성하기 어려웠는지에 대해 충격을 받았다. 또한 GWT / jQuery 기반 앱에서 레이블을 생성하는 함수 하나를 변경하는 레이블 뒤에 ':'기호를 추가하는 것과 같이 아주 작은 변경을 수행하는 경우에도 현지화 된 속성을 사용하여 수십 개의 파일을 변경해야했지만 나만 빼고는 이상해 ...
JSF 사용의 이점은 xhtml + css + js 생성에만있는 것이 아닙니다. 때때로 JSF는 컴포넌트 기반 프레임 워크처럼 생성 할 수있는 마크 업에 제한을 부과합니다. 그러나 JSF는 그저 그런 것이 아니라 수명주기가 크게 도움이됩니다. 입력을 확인한 후 모델을 업데이트하고 노력없이 서버 측 Bean을 동기화 할 수 있습니다. "사용자가 여기에 무엇을 입력하든 숫자인지 확인하고, 그렇다면 객체 XX의 속성 YY에 저장"이라고 말하면 JSF가 모든 작업을 수행합니다.
그렇습니다. 여전히 JQuery, JS 등을 사용할 수 있습니다. 그러나 JSF는 서버 측 코드 작성과 관련하여 많은 이점을 제공하고 많은 보일러 플레이트에서 사용자를 저장합니다.
나는 jsf가 어떤 것을 추가한다는 것에 강력히 동의하지 않습니다. 오버 헤드 만 추가합니다. 서버에서 UI 작업을하는 것은 지금까지 들어 본 것 중 가장 우스꽝스러운 일입니다. 대규모 팀의 자바 스크립트는 훌륭하게 작동합니다.이를 재사용 코드라고합니다.
jquery를 일부 jsp 태그로 감싸기 만하면됩니다. 필요한 모든 작업이 완료되며 .jsf 및 richfaces의 .shackles 및 확장 성 문제를 견디지 마십시오.
대규모 웹 애플리케이션에 ExtJS 프레임 워크를 사용했기 때문에 사용이 얼마나 쉬운 지 알고 있습니다. ExtJS (Schena)는 MVC 아키텍처의 (Oracle 11g) 데이터베이스 상호 작용에 가장 적합합니다. 보기는 시각적 / 사용자 상호 작용을위한 것입니다. 컨트롤러는 PLSQL 패키지 (CRUD 용 API, SQL 선택 쿼리 등)에서 사용해야하는 '처리'및 트리거를 지정했습니다. 모델 및 상점 파일은 데이터 항목을 뷰어 / 입력에 '매핑'하는 데 사용되었습니다.
ExtJS는 데이터베이스 집약적이지 않은 웹 인터페이스에는 적합하지 않습니다. Angular JS가 더 적합 할 수 있습니다.