출처: Nocodefunctions Java를 사용하여 독립적인 웹 애플리케이션을 개발한 경험에 관한 기사를 알려드립니다.
프론트엔드를 위한 Java - 정말 가능할까요?
많은 사람들은 프론트엔드 개발에 Java를 사용하는 것이 불가능하다고 생각합니다. 결국 Java는 백엔드용으로 설계되었기 때문입니다. 예, 오래 전에는 Java 애플릿과 Java Webstart를 사용하여 브라우저에서 Java 애플리케이션을 실행할 수 있었습니다. 그러나 이것은 Flash 플러그인만큼이나 오래된 역사입니다. 그러나 애플릿이 없어도 Java를 프런트 엔드로 사용할 수 있는 방법이 있습니다. JSP(Java Server Pages)는 많은 학생들이 컴퓨터 과학 수업에서 공부한 것입니다. 그러나 JSP는 일부 Java 책에서 여전히 논의되고 있지만 이 기술은 2010년대부터 더 이상 사용되지 않습니다. 정말 또 다른 막다른 골목인가요? Java 개발자가 Google Web Toolkit(GWT, 이것도 아주 새로운 것은 아닙니다 )을 사용하거나 J2Cl (역시 Google에서 제공) 을 통해 코드를 JavaScript로 "트랜파일"(복잡한 방식으로 변환)할 수 있는 프레임워크도 있습니다. GWT와 J2Cl은 초보자에게 적합하지 않으며 대규모 프로젝트에 사용하기 위해 Google에서 개발한 기업용 도구라는 점을 기억하는 것이 중요합니다.프론트엔드를 위한 Java의 알려지지 않은 영웅: Jakarta Faces(JSF)
현재 "Jakarta Faces"로 알려진 JSF(Java Server Faces)는 적어도 2010년대 초반부터 존재해 왔습니다. 이 프레임워크를 사용하면 웹 애플리케이션을 빠르고 안전하며 안정적으로 쉽게 개발할 수 있기 때문에 거의 알려지지 않았고 거의 언급되지 않는다는 사실에 항상 놀랐습니다. JSF는 배우기 쉽고 Java 생태계를 최대한 활용합니다. 예를 들어 동적 콘텐츠가 포함된 웹페이지를 만드는 방법은 다음과 같습니다.- .xhtml 확장자를 사용하여 HTML 페이지를 만듭니다.
- <head> 및 <body> html 태그를 <h:head> 및 <h:body> 태그로 변경합니다.
- 이제 백엔드에서 일부 속성을 호출하여 동적 콘텐츠를 표시하려면 해시태그 뒤와 컨트롤 막대 사이에 이 코드를 배치하기만 하면 됩니다.
#{backendscript.myText}
JSF는 복잡합니까? 장점은 무엇입니까?
JSF는 전혀 복잡하지 않습니다. 게다가:- 이는 클래식 Java IDE(NetBeans, IntelliJ IDEA 및 Eclipse)와 잘 통합됩니다. 각 IDE는 다음을 제공합니다.
- Maven 구성을 위한 템플릿을 작성하는 템플릿 프로젝트입니다(그런데 매우 간단합니다).
- 디버깅 도구(적어도 NetBeans의 경우 핫 리로딩 포함)
- Java 생태계를 위한 강력한 자동 완성, 리팩터링, 탐색 및 오류 강조 도구입니다. IDE는 HTML 페이지에서 언급한 모든 클래스(예: 위에서 언급한 #{backendscript.myText} )에 대한 유용한 정보를 제공할 수 있습니다. HTML 페이지는 실제로 나머지 코드베이스와 통합됩니다!
- HTML 페이지의 복잡한 코드 변형을 매우 쉽게 처리합니다.
- 간단한 버튼 클릭으로 페이지의 일부를 새로 고쳐야 합니까? 버튼에 업데이트 속성을 추가한 다음 업데이트할 구성 요소의 ID를 추가하세요.
- 업데이트 및 동적 콘텐츠 관련: 저는 JSF의 단순성을 정말 좋아합니다. 프런트엔드가 백엔드를 업데이트하고, 자체적으로 업데이트하거나, 백엔드가 프런트엔드를 업데이트합니다. 이 모든 것은 웹 애플리케이션의 기본 요구 사항이며 여기에 있습니다.
- 사용자가 파일 유형 및 크기에 대한 조건이 포함된 파일 하나 또는 여러 개를 다운로드할 수 있도록 하려면 명확한 매개변수를 사용하여 코드에 한 줄만 추가하면 됩니다 .
- 여러 언어로 웹사이트를 만들어야 합니까? HTML에 <f:view> 태그를 추가 하고 백엔드에서 단 한 줄로 사용자의 언어를 가져옵니다 .
- HTML 태그, JS 및 CSS 스크립트를 추가하고 혼합할 수 있으며 모두 SEO에 최적화되어 있습니다.
Primefaces: 무료 JSF 구성요소 및 테마의 방대한 목록
JSF에는 HTML 페이지의 클래식 부분을 생성하는 즉시 사용 가능한 구성 요소의 긴 목록이 제공되므로 직접 수행할 필요가 없습니다. 예를 들어 <h:dataTable> 태그를 사용하면 처음부터 다시 만들 필요 없이 백엔드에서 로드된 특정 데이터를 표시하는 테이블을 만들 수 있습니다. 더 나은 옵션이 있습니다. Prime Tek은 Primefaces 라는 오픈 소스 구성 요소 세트를 개발했습니다 . 추가 기능이 함께 제공되며 여러 가지 장점이 있습니다. 예를 들어 <h:dataTable> 대신 Primefaces <p:dataTable> 태그를 사용하면 됩니다. 이렇게 하면 테이블에 열 스위치 , 동적 열 또는 편집 기능을 쉽게 추가할 수 있는 기본 데이터 테이블이 생성됩니다.그런데 자바는 느리고 무겁다?
1. 자바는 느린가요?
아니요. 재미있는 점은 React, Angular 및 Vue와 같은 JS 프레임워크는 모든 애플리케이션 로직을 사이트 방문자의 브라우저에 즉시 전송하기 때문에 Java의 JSF보다 더 빠르고 스마트하다는 약속을 가지고 만들어졌다는 것입니다. JSF는 다르게 작동합니다. 사용자가 페이지(예: https://nocodefunctions.com)를 호출하면 백엔드의 애플리케이션은 해당 페이지에 대한 HTML만 생성하여 다시 보냅니다. 이를 "서버 측 렌더링"(SSR)이라고 합니다. 실제로 단일 페이지 애플리케이션은 사용자가 전체 애플리케이션을 구성하는 자바스크립트 파일을 검색하고 로드하는 데 매우 오랜 시간이 필요할 수 있습니다. 이로 인해 사용자 경험이 저하되고(첫 번째 페이지가 로드될 때까지 기다려야 함) SEO 문제가 발생할 수 있습니다. 그 결과, 자바 스타일의 서버사이드 렌더링은 속도와 성능 면에서 클라이언트사이드 렌더링보다 우수하다는 평가를 받으며 다시 인기를 얻고 있다. 이러한 두 가지 서로 다른 논리를 처리하고 혼합하기 위해 클라이언트 측 렌더링에 익숙한 개발자가 필요한 새로운 SSR 프레임워크가 등장하고 있습니다.2. 자바는 어려운가요?
아니요. JSF 애플리케이션을 배포하는 데 필요한 것:- 응용 프로그램 자체. 간단한 JSF "hello world" 애플리케이션은 아마도 10KB 이하일 것입니다.
- 더 높은 품질의 구성 요소가 필요한 경우 Primefaces(위에서 설명)는 선택 사항입니다. 이는 추가 4.5MB 입니다 .
-
클라우드나 다른 곳에 서버가 있습니다. Nocodefunctions(https://test.nocodefunctions.com) 테스트 버전의 경우 Hetzner를 사용합니다. 여기서는 월 4.15유로에 2GB RAM이 있는 베어메탈 서버를 임대합니다. RAM을 더 적게 사용할 수도 있지만 내 애플리케이션은 일부 데이터 집약적인 서비스를 제공하므로 메모리에 적합해야 합니다. nocodefunctions의 실제(비테스트) 버전은 더 큰 서버(Hetzner도 포함)에서 실행되어 더 많은 사용자의 데이터 집약적인 작업을 병렬로 지원합니다(월 €50 미만).
-
자바가 설치되어 있어야 합니다. 이는 Mac, Win 또는 Linux용 200MB 미만의 단일 파일 다운로드이며, 상업적 용도라도 완전히 무료입니다.
-
이를 실행하려면 Java 웹 서버가 필요합니다. 그들 중 다수. 개인적으로 저는 무료이며 단일 77MB 파일 다운로드가 가능한 Payara Micro(Community Edition)를 사용합니다.
-
애플리케이션을 실행하세요.
GO TO FULL VERSION