JavaRush /Java Blog /Random-IT /Pausa caffè #157. Utilizzo di Java per applicazioni web f...

Pausa caffè #157. Utilizzo di Java per applicazioni web front-end nel 2022

Pubblicato nel gruppo Random-IT
Fonte: Nocodefunctions Portiamo alla vostra attenzione un articolo sull'esperienza di sviluppo di un'applicazione web indipendente utilizzando Java. Pausa caffè #157.  Utilizzo di Java per applicazioni web front-end nel 2022 - 1

Java per il frontend: è davvero possibile?

Molte persone credono che utilizzare Java per lo sviluppo front-end sia semplicemente impossibile: dopo tutto, Java è progettato per il back-end. Sì, molto tempo fa, le applet Java e Java Webstart consentivano di eseguire applicazioni Java dal browser. Ma questa è storia antica, vecchia quanto i plugin Flash. Ma anche senza applet, esiste un modo per utilizzare Java per il front-end: si tratta di JSP (Java Server Pages), che molti scolari hanno studiato durante le lezioni di informatica. Tuttavia, sebbene JSP sia ancora discusso in alcuni libri su Java, la tecnologia è stata deprecata a partire dagli anni 2010. È davvero un altro vicolo cieco? Esistono anche framework che consentono agli sviluppatori Java di “transpile” (trasformare in modi complessi) il loro codice in JavaScript utilizzando Google Web Toolkit (GWT, non è neanche una novità ) o tramite J2Cl (sempre di Google). È importante notare che GWT e J2Cl non sono adatti ai principianti, sono più strumenti aziendali sviluppati da Google per l'utilizzo in progetti di grandi dimensioni.

L'eroe non celebrato di Java per il frontend: Jakarta Faces (JSF)

Java Server Faces (JSF), ora noto come "Jakarta Faces", è in circolazione almeno dall'inizio degli anni 2010. Sono sempre sorpreso che sia poco conosciuto e raramente menzionato perché questo framework semplifica lo sviluppo di applicazioni web in modo rapido, sicuro e affidabile. JSF è facile da imparare e sfrutta appieno l'ecosistema Java. Ecco come, ad esempio, crei una pagina web con contenuto dinamico:
  • Crea una pagina html (con l'estensione .xhtml).
  • Cambia i tag html <head> e <body> nei tag <h:head> e <h:body>.
  • Ora, per visualizzare contenuti dinamici chiamando alcune proprietà nel backend, inserisci semplicemente questo codice dopo l'hashtag e tra le barre di controllo:

    #{backendscript.myText}
Quindi crea un file Backendscript.java nel tuo backend, aggiungi una variabile chiamata String myText = "ciao! benvenuto nella mia pagina!" . Verrà visualizzato nella pagina web. JSF è davvero molto semplice. È ben documentato grazie a molte domande su Stackoverflow , documentazione ufficiale , diversi libri ( questo link e mi piacciono anche i libri di David Heffelfinger ) e ovviamente video di Youtube .

JSF è complicato? Quali sono i suoi vantaggi?

JSF non è affatto complicato. Inoltre:
  1. È ben integrato con i classici IDE Java (NetBeans, IntelliJ IDEA ed Eclipse). Ogni IDE fornisce:
    • Progetti modello che compilano il modello per la configurazione di Maven (che, tra l'altro, è molto semplice).
    • Strumenti di debug (con ricaricamento a caldo, almeno per NetBeans).
    • Potenti strumenti di completamento automatico, refactoring, navigazione ed evidenziazione degli errori per l'ecosistema Java. L'IDE può fornire informazioni utili su qualsiasi classe menzionata nella pagina html (come #{backendscript.myText} menzionata sopra). Le pagine HTML si integreranno effettivamente con il resto della tua base di codice!
  2. Gestisce molto facilmente variazioni di codice complesse sulle pagine HTML.
    • Hai bisogno di aggiornare parte di una pagina con un semplice clic di un pulsante? Aggiungi una proprietà di aggiornamento al tuo pulsante, seguita dall'ID del componente che desideri aggiornare.
    • Per quanto riguarda l'aggiornamento e il contenuto dinamico: mi piace molto la semplicità di JSF: il frontend aggiorna il backend, si aggiorna da solo, oppure il backend aggiorna il frontend. Tutti questi sono i requisiti di base di un'applicazione web e sono presenti qui.
    • Se vuoi che l'utente possa scaricare uno o più file con condizioni relative al tipo e alle dimensioni dei file, aggiungi semplicemente una riga al codice con parametri chiari .
    • Hai bisogno di realizzare un sito web in più lingue? Aggiungi il tag <f:view> al tuo html e ottieni la lingua dell'utente con una sola riga nel backend.
  3. Puoi aggiungere e combinare tag HTML, script JS e CSS ed è tutto ottimizzato per il SEO.
Hai il pieno controllo sull'HTML generato da JSF e puoi sempre aggiungere codice html e js. Ciò semplifica la collaborazione con designer e sviluppatori front-end che non conoscono o non si preoccupano di JSF. Quando lavoravo con i CSS, avevo l'aiuto di un designer che poteva lavorare con le pagine HTML che avevo creato utilizzando JSF, apportando le modifiche necessarie senza alcuna difficoltà. JSF genera codice HTML che puoi visualizzare e leggere nel tuo browser. Ciò è molto utile per eseguire il debug con strumenti di sviluppo regolari e verificare che le azioni SEO siano implementate correttamente.

Primefaces: vasto elenco di componenti e temi JSF gratuiti

JSF viene fornito con un lungo elenco di componenti pronti all'uso che creano le parti classiche di una pagina html, quindi non devi farlo da solo. Ad esempio, utilizza il tag <h:dataTable> per creare una tabella che mostri dati specifici caricati dal tuo backend, senza doverli ricreare da zero. E c'è un'opzione migliore: Prime Tek ha sviluppato un set di componenti open source chiamato Primefaces . Sono dotati di funzionalità aggiuntive e presentano numerosi vantaggi. Ad esempio, invece di <h:dataTable>, utilizza semplicemente il tag <p:dataTable> di Primefaces. In questo modo viene creata una tabella di dati di base alla quale è possibile aggiungere facilmente cambi di colonna , colonne dinamiche o modificare funzioni nella tabella.

Ma Java è lento e pesante?

1. Java è lento?

NO. La cosa divertente è che i framework JS come React, Angular e Vue sono stati creati con la promessa di essere più veloci e intelligenti di JSF in Java, perché inviavano immediatamente tutta la logica dell'applicazione al browser del visitatore del sito. JSF funziona diversamente: quando un utente richiama una pagina (ad esempio https://nocodefunctions.com), l'applicazione nel backend genera l'HTML solo per quella pagina e lo rimanda indietro. Questo si chiama “rendering lato server” (SSR). In pratica, le applicazioni a pagina singola possono richiedere molto tempo all'utente per recuperare e caricare i file javascript che compongono l'intera applicazione. Ciò può portare a un'esperienza utente scadente (dovere attendere il caricamento della prima pagina) e problemi SEO. Di conseguenza, il rendering lato server in stile Java ha riacquistato popolarità poiché è considerato superiore al rendering lato client in termini di velocità e prestazioni. Stanno emergendo nuovi framework SSR che richiedono agli sviluppatori abituati al rendering lato client di gestire e mescolare queste due diverse logiche.

2. Java è difficile?

NO. Cosa ti serve per distribuire un'applicazione JSF:
  • L'applicazione stessa. Una semplice applicazione "ciao mondo" JSF è probabilmente di 10 KB o meno.
  • Opzionali sono i Primeface (discussi sopra) se sono necessari componenti di qualità superiore. Si tratta di 4,5 MB aggiuntivi .
Ora esegui tutto sul server. Per fare questo è necessario:
  1. Avere un server nel cloud o da qualche altra parte. Per la versione di prova di Nocodefunctions (https://test.nocodefunctions.com) utilizzo Hetzner, dove noleggio un server bare metal con 2 GB di RAM per 4,15 euro al mese. Potrei utilizzare meno RAM, ma la mia applicazione fornisce alcuni servizi ad alta intensità di dati e deve essere occupata in memoria. La versione reale (non di prova) di nocodefunctions viene eseguita su un server più grande (sempre con Hetzner) per supportare in parallelo le attività ad alta intensità di dati di un maggior numero di utenti - per meno di 50 € al mese.

  2. È necessario che Java sia installato. Si tratta di un download di un singolo file inferiore a 200 MB per Mac, Win o Linux, completamente gratuito anche per uso commerciale.

  3. È necessario disporre di un server Web Java per eseguirlo. Molti di loro. Personalmente utilizzo Payara Micro (Community Edition), che è gratuito e consente il download di un singolo file da 77 MB.

  4. Avvia la tua applicazione.

Conclusione: pensa a Java!

Ho la sensazione che alcuni programmatori pensino che Python, Ruby, PHP, NodeJS + React... siano l'unica scelta quando si avvia una piccola applicazione web. Ma ora spero che prendano in considerazione anche Java + JSF per il loro prossimo progetto.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION