JavaRush /Java Blog /Random-KO /커피 브레이크 #157. 2022년 프런트엔드 웹 애플리케이션에 Java 사용

커피 브레이크 #157. 2022년 프런트엔드 웹 애플리케이션에 Java 사용

Random-KO 그룹에 게시되었습니다
출처: Nocodefunctions Java를 사용하여 독립적인 웹 애플리케이션을 개발한 경험에 관한 기사를 알려드립니다. 커피 브레이크 #157.  2022년에 프런트엔드 웹 애플리케이션에 Java 사용 - 1

프론트엔드를 위한 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}
그런 다음 백엔드에 Backendscript.java 파일을 만들고 String myText = "hi! Welcome to my page!" 라는 변수를 추가합니다. . 웹 페이지에 표시됩니다. JSF는 정말 매우 간단합니다. Stackoverflow에 대한 많은 질문 , 공식 문서 , 여러 책( 이 링크 , 저는 David Heffelfinger의 책 도 좋아합니다 ) 및 물론 Youtube 비디오 덕분 에 잘 문서화되어 있습니다 .

JSF는 복잡합니까? 장점은 무엇입니까?

JSF는 전혀 복잡하지 않습니다. 게다가:
  1. 이는 클래식 Java IDE(NetBeans, IntelliJ IDEA 및 Eclipse)와 잘 통합됩니다. 각 IDE는 다음을 제공합니다.
    • Maven 구성을 위한 템플릿을 작성하는 템플릿 프로젝트입니다(그런데 매우 간단합니다).
    • 디버깅 도구(적어도 NetBeans의 경우 핫 리로딩 포함)
    • Java 생태계를 위한 강력한 자동 완성, 리팩터링, 탐색 및 오류 강조 도구입니다. IDE는 HTML 페이지에서 언급한 모든 클래스(예: 위에서 언급한 #{backendscript.myText} )에 대한 유용한 정보를 제공할 수 있습니다. HTML 페이지는 실제로 나머지 코드베이스와 통합됩니다!
  2. HTML 페이지의 복잡한 코드 변형을 매우 쉽게 처리합니다.
    • 간단한 버튼 클릭으로 페이지의 일부를 새로 고쳐야 합니까? 버튼에 업데이트 속성을 추가한 다음 업데이트할 구성 요소의 ID를 추가하세요.
    • 업데이트 및 동적 콘텐츠 관련: 저는 JSF의 단순성을 정말 좋아합니다. 프런트엔드가 백엔드를 업데이트하고, 자체적으로 업데이트하거나, 백엔드가 프런트엔드를 업데이트합니다. 이 모든 것은 웹 애플리케이션의 기본 요구 사항이며 여기에 있습니다.
    • 사용자가 파일 유형 및 크기에 대한 조건이 포함된 파일 하나 또는 여러 개를 다운로드할 수 있도록 하려면 명확한 매개변수를 사용하여 코드에 한 줄만 추가하면 됩니다 .
    • 여러 언어로 웹사이트를 만들어야 합니까? HTML에 <f:view> 태그를 추가 하고 백엔드에서 단 한 줄로 사용자의 언어를 가져옵니다 .
  3. HTML 태그, JS 및 CSS 스크립트를 추가하고 혼합할 수 있으며 모두 SEO에 최적화되어 있습니다.
JSF에서 생성된 html을 완전히 제어할 수 있으며 언제든지 html 및 js 코드를 추가할 수 있습니다. 이를 통해 JSF에 대해 모르거나 관심이 없는 디자이너 및 프런트엔드 개발자와 더 쉽게 협업할 수 있습니다. CSS로 작업할 때 JSF를 사용하여 만든 HTML 페이지를 작업할 수 있는 디자이너의 도움을 받아 필요한 변경을 어려움 없이 수행했습니다. JSF는 브라우저에서 보고 읽을 수 있는 HTML 코드를 생성합니다. 이는 일반 개발 도구를 사용하여 디버깅하고 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 입니다 .
이제 서버에서 모두 실행해 보세요. 이렇게 하려면 다음이 필요합니다.
  1. 클라우드나 다른 곳에 서버가 있습니다. Nocodefunctions(https://test.nocodefunctions.com) 테스트 버전의 경우 Hetzner를 사용합니다. 여기서는 월 4.15유로에 2GB RAM이 있는 베어메탈 서버를 임대합니다. RAM을 더 적게 사용할 수도 있지만 내 애플리케이션은 일부 데이터 집약적인 서비스를 제공하므로 메모리에 적합해야 합니다. nocodefunctions의 실제(비테스트) 버전은 더 큰 서버(Hetzner도 포함)에서 실행되어 더 많은 사용자의 데이터 집약적인 작업을 병렬로 지원합니다(월 €50 미만).

  2. 자바가 설치되어 있어야 합니다. 이는 Mac, Win 또는 Linux용 200MB 미만의 단일 파일 다운로드이며, 상업적 용도라도 완전히 무료입니다.

  3. 이를 실행하려면 Java 웹 서버가 필요합니다. 그들 중 다수. 개인적으로 저는 무료이며 단일 77MB 파일 다운로드가 가능한 Payara Micro(Community Edition)를 사용합니다.

  4. 애플리케이션을 실행하세요.

결론: Java를 생각해 보세요!

일부 프로그래머들은 Python, Ruby, PHP, NodeJS + React...가 소규모 웹 애플리케이션을 시작할 때 유일한 선택이라고 생각하는 것 같습니다. 하지만 이제는 그들이 다음 프로젝트에서 Java + JSF도 고려하기를 바랍니다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION