{"id":289,"date":"2015-09-14T11:18:21","date_gmt":"2015-09-14T09:18:21","guid":{"rendered":"http:\/\/www.expertconfigurator.com\/wordpress\/?p=289"},"modified":"2022-05-08T11:31:54","modified_gmt":"2022-05-08T09:31:54","slug":"ventanni-dopo-java-perche","status":"publish","type":"post","link":"https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/","title":{"rendered":"Vent&#8217;anni dopo. Java perch\u00e9?"},"content":{"rendered":"<p style=\"text-align: justify;\"><a href=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j01_java.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j01_java-300x169.jpg\" alt=\"j01_java\" width=\"300\" height=\"169\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Questo sar\u00e0 un post un poco \u201cfuori linea\u201d rispetto a quelli che lo hanno preceduto caratterizzati da un taglio pi\u00f9 concettuale.<br \/>\nTuttavia se da un concept si vuol realizzare un prodotto finito&#8230; anche il mezzo conta.<\/p>\n<p style=\"text-align: justify;\">Cos\u00ec ho pensato fosse giusto inserire nel ragionamento complessivo un tema tecnico che cercher\u00f2 di trattare in maniera discorsiva: da dove vengono e dove potrebbero andare gli strumenti di lavoro necessari a chi si occupa di sviluppo software?<\/p>\n<p style=\"text-align: justify;\">\u00a0<a href=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j02_asinoburidano.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j02_asinoburidano-300x246.jpg\" alt=\"j02_asinoburidano\" width=\"300\" height=\"246\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Rispetto ai tempi passati oggi la vita di un programmatore \u00e8 molto pi\u00f9 complicata. I linguaggi di programmazione sono diventati molto pi\u00f9 numerosi e per ogni sviluppatore \u00e8<br \/>\ndrammaticamente cresciuto il rischio di fare la fine dell\u2019asino di Buridano. (e.g. per chi non conosce questa storiella: l\u2019asino di Buridano si dice mor\u00ec di fame pur avendo una balla di fieno a destra ed una a sinistra. Non sapendo decidere quale balla di fieno gli convenisse mangiar per prima il povero animale mor\u00ec di stenti, pur essendo circondato dall\u2019abbondanza)<\/p>\n<p style=\"text-align: justify;\">Inoltre, grazie allo sviluppo di internet, la platea dei possibili users di un software \u00e8 enormemente aumentata. Conseguenza di ci\u00f2: oggi pi\u00f9 di ieri per chi progetta software \u00e8 di capitale importanza conoscere bene verso quali targets di ruoli utente intende orientare il proprio lavoro.<\/p>\n<p style=\"text-align: justify;\">Non \u00e8 un caso se uno degli elementi chiave dell\u2019ingegneria del software \u00e8 lo studio dell\u2019interazione \u201c<a href=\"https:\/\/it.wikipedia.org\/wiki\/Interazione_uomo-computer\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #0000ff;\">uomo-computer<\/span><\/a>\u201d. Pi\u00f9 la \u201cmacchina computer\u201d si avvicina agli usi e costumi dell\u2019uomo (user) meglio \u00e8 per tutti.<\/p>\n<p style=\"text-align: justify;\">L&#8217;interfaccia grafica \u00e8 la prima cosa che un utente percepisce quando inizia ad interagire con un qualsiasi software.<\/p>\n<p style=\"text-align: justify;\">Nel \u201creal world\u201d solitamente si dice che l\u2019abito non fa il monaco.<\/p>\n<p style=\"text-align: justify;\">Nel settore dell\u2019ingegneria del software vale il contrario. Se si manda fuori bersaglio il disegno dell\u2019<a href=\"https:\/\/it.wikipedia.org\/wiki\/Interfaccia_utente\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #0000ff;\">interfaccia utente<\/span><\/a> sono dolori seri.<br \/>\nDisegnare interfacce utente ergonomiche \u00e8 un mestiere che richiama competenze e sensibilit\u00e0 specifiche che devono essere ben integrate nel processo di sviluppo ingegneristico di un&#8217;applicazione.<\/p>\n<p style=\"text-align: justify;\">La crescente necessit\u00e0 di migliorare l\u2019esperienza d\u2019uso degli utenti \u00e8 la principale ragione che spinge l&#8217;evoluzione dei linguaggi di <a href=\"https:\/\/it.wikipedia.org\/wiki\/Linguaggio_di_markup\" target=\"_blank\" rel=\"noopener\">\u201cmarkup\u201d<\/a>, grazie ai quali chi porta avanti il lavoro di design delle\u00a0 interfacce grafiche riesce a svolgere il proprio compito.<br \/>\nCome tutti sappiamo il sistema di markup pi\u00f9 diffuso \u00e8 <a href=\"https:\/\/it.wikipedia.org\/wiki\/HTML\"><span style=\"color: #0000ff;\">HTML<\/span><\/a>, lo standard de facto (come si diceva una volta). Interpretando gli script HTML l&#8217;applicazione di <span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/it.wikipedia.org\/wiki\/Rendering\" target=\"_blank\" rel=\"noopener\">rendering<\/a><\/span> (il browser) svolge il suo compito di &#8220;costruttore&#8221; del front-end utente.\u00a0 Si tratta di un sistema ben congegnato alla base del successo di internet e del <a href=\"https:\/\/it.wikipedia.org\/wiki\/World_Wide_Web\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #0000ff;\">WEB<\/span><\/a>.<\/p>\n<p style=\"text-align: justify;\">Tuttavia, secondo un aforisma tratto dal \u201creal world\u201d: <strong>la strada dell\u2019inferno \u00e8 pavimentata di buone intenzioni<\/strong>&#8230; ed a quanto sembra anche questa volta questo vecchio adagio \u00e8 stato rispettato.<br \/>\n<a href=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/J02a_plugin.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/J02a_plugin-300x208.jpg\" alt=\"J02a_plugin\" width=\"300\" height=\"208\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">E\u2019 accaduto che gli sviluppatori di interfacce grafiche nel migliorare l\u2019esperienza d\u2019uso degli utenti si sono resi conto che le possibilit\u00e0 messe a loro disposizione dal solo sistema di markup <strong>HTML -&gt; Browser<\/strong> non erano sufficienti.<\/p>\n<p style=\"text-align: justify;\">Per colmare questo gap sono nati numerosi software plugin in grado di potenziare le capacit\u00e0 di rendering grafico del browser.<\/p>\n<p style=\"text-align: justify;\">Se HTML \u00e8 uno standard de facto riconosciuto, i plugin che si \u201cinnestano\u201d dentro i vari browser non lo sono affatto.<br \/>\nSupportando pi\u00f9 o meno bene questo o quel plugin i browser oggi presenti sul mercato hanno fatto la loro parte per edificare la torre di babele dei plugin. Creando cos\u00ec non pochi problemi di compatibilit\u00e0 fra il comportamento di un browser rispetto ad un altro.<\/p>\n<p style=\"text-align: justify;\">Per provare a riportare \u201cordine nella galassia\u201d \u00e8 nata la nuova specifica di markup <a href=\"https:\/\/it.wikipedia.org\/wiki\/HTML5\" target=\"_blank\" rel=\"noopener\">HTML5<\/a> che offre un sensibile miglioramento delle funzionalit\u00e0 rivolte a chi cura il design delle interfacce&#8230; cos\u00ec che i designer non cadano pi\u00f9 nella tentazione di utilizzare questo o quel plugin per svolgere il proprio lavoro.<\/p>\n<p style=\"text-align: justify;\">Problema risolto quindi?<\/p>\n<p style=\"text-align: justify;\">Il problema \u00e8 che comunque un browser rimane un browser, ovvero un render nato per rappresentare informazioni testuali e semplici elementi grafici che poi si \u00e8 cos\u00ec \u201cinaspettatamente\u201d diffuso che ad un certo punto gli sviluppatori gli hanno detto; \u201c<em><strong><a href=\"https:\/\/it.wikipedia.org\/wiki\/Mos%C3%A8_%28Michelangelo%29\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #0000ff;\">perch\u00e9 non parli?<\/span><\/a><\/strong><\/em>\u201d e.g. la stessa cosa mi sembra accadde anche ad uno scultore.<\/p>\n<p style=\"text-align: justify;\">Per\u00f2, rispetto ad uno scultore, gli sviluppatori software dispongono di tools pi\u00f9 potenti. Cos\u00ec grazie ad alcuni <a href=\"https:\/\/it.wikipedia.org\/wiki\/AJAX\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #0000ff;\">linguaggi di script<\/span><\/a> \u00e8 stato abbastanza semplice mettere i browsers in condizione di &#8220;parlare&#8221;, ovvero di gestire l\u2019interazione con gli utenti.<\/p>\n<p style=\"text-align: justify;\">\u00a0 <a href=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j03_exploit.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j03_exploit-300x225.jpg\" alt=\"j03_exploit\" width=\"300\" height=\"225\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">In sostanza da un certo momento in avanti dentro la finestra del browser sono iniziati a comparire campi di input, pulsanti, etc, in grado di gestire eventi (e.g. capire quando i componenti di input, detti controlli, vengono \u201cclickati\u201d da un utente).\u00a0 Grazie a questa interazione uomo-macchina \u00e8 nato il WEB_2.0. Per\u00f2, ripeto, un browser rimane un browser e per farlo diventare pi\u00f9 funzionale agli scopi del WEB 2.0, ai programmatori non \u00e8 rimasta altra strada che continuare a sviluppare un numero indefinito di software plugin.<\/p>\n<p style=\"text-align: justify;\">Purtroppo molti plugin per svolgere il proprio compito accedono alle funzioni &#8220;core&#8221; del sistema operativo. Cos\u00ec, se inizialmente il browser era assolutamente innocuo per la sicurezza dei naviganti, con l\u2019arrivo dei plugin il browser \u00e8 diventato una specie di porta d&#8217;ingresso verso i &#8220;tunnel&#8221; che conducono al cuore del sistema. Una vera e propria manna dal cielo per chi si occupa del fiorente settore degli \u201c<span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/it.wikipedia.org\/wiki\/Exploit\" target=\"_blank\" rel=\"noopener\">exploit zero day<\/a><\/span>\u201d al fine di trasformare il nostro pacifico PC in uno &#8220;zombie&#8221; agguerrito membro di una <a href=\"https:\/\/it.wikipedia.org\/wiki\/Botnet\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #0000ff;\">botnet<\/span><\/a> (\u25e3_\u25e2)<\/p>\n<hr \/>\n<p style=\"text-align: justify;\">Questa la situazione. Non bellissima in verit\u00e0. Per\u00f2 si pu\u00f2 provare a ripartire mettendo in ordine le priorit\u00e0. Magari provando a fare un esercizio di classificazione. Come sono suddivisi gli utenti per i quali si sta progettando un software?<\/p>\n<p style=\"text-align: justify;\"><strong><a href=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j04a_consumer.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j04a_consumer-300x264.jpg\" alt=\"j04a_consumer\" width=\"300\" height=\"264\" \/><\/a><\/strong><\/p>\n<p style=\"text-align: justify;\">Ci sono gli<strong> utenti consumer.<\/strong> Per questa classe di utenti lo strumento di rendering di riferimento \u00e8 sicuramente il browser, il quale viene utilizzato per rappresentare contenuti grafici ispirati alla <strong>regola del dualismo \u201cfiore-ape\u201d.<\/strong> Pare che i fiori sono colorati per avere pi\u00f9 possibilit\u00e0 di attirare le api di cui hanno bisogno. Gli utenti consumer hanno bisogno di poter interagire con interfacce grafiche che ne stimolino la curiosit\u00e0 senza apparire complesse. Non ci sono grosse necessit\u00e0 di dover gestire input dati articolati e situazioni di analisi dati strutturate. Le funzionalit\u00e0 da mettere a disposizione di un utente di classe consumer devono essere soprattutto facili da usare<\/p>\n<hr \/>\n<p style=\"text-align: justify;\"><strong><a href=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j04_enterprise.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j04_enterprise-300x167.jpg\" alt=\"j04_enterprise\" width=\"300\" height=\"167\" \/><\/a><\/strong><\/p>\n<p style=\"text-align: justify;\"><strong>Utenti business<\/strong>, i fruitori delle applicazioni di tipo \u201centerprise\u201d. Per questa classe di utenti potrebbe non essere una buona scelta utilizzare per il rendering dell\u2019interfaccia grafica il browser. Le applicazioni enterprise, in funzione dei possibili ruoli utente, possono richiedere interazioni con i dati complesse ed articolate .<br \/>\nPer l\u2019architettura enterprise vale la regola che pi\u00f9 un utente sta in alto all\u2019interno della piramide gerarchica, minori sono i dati che questi dovr\u00e0 fornire come input, necessitando invece maggiormente di situazioni informative costruite secondo la logica sintesi-analisi.<br \/>\nPer realizzare interfacce utente ricche di contenuti grafici le principali applicazioni enterprise attualmente in circolazione implementano architetture software pi\u00f9 orientate al modello client-server che all&#8217; architettura \u201cbest practice\u201d <a href=\"https:\/\/it.wikipedia.org\/wiki\/Architettura_three-tier\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #0000ff;\">three tier<\/span><\/a>. e.g. sottolineo di aver detto <strong>attualmente<\/strong>.<\/p>\n<blockquote><p><strong>La portabilit\u00e0 delle interfacce utente di tipo GUI (<a href=\"https:\/\/it.wikipedia.org\/wiki\/Interfaccia_grafica\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #0000ff;\">Graphical User Interface<\/span><\/a>) verso sistemi operativi diversi \u00e8 uno dei fattori critici da valutare con attenzione quando si sviluppa software enterprise.<\/strong><\/p><\/blockquote>\n<p>Ad esempio, il linguaggio di programmazione C++ \u00e8 sicuramente un linguaggio ad &#8220;<a href=\"https:\/\/it.wikipedia.org\/wiki\/Portabilit%C3%A0\" target=\"_blank\" rel=\"noopener\">alta portabilit\u00e0<\/a>&#8221; verso diversi tipi di sistemi operativi. Tuttavia il diffusissimo C++ non dispone di un proprio package standard per lo sviluppo delle interfacce grafiche. Esistono degli ottimi package esterni utilizzabili per realizzare GUI in C++, come ad esempio le librerie <a href=\"http:\/\/qt-project.org\" target=\"_blank\" rel=\"noopener\">GUI QT<\/a>. Ma non vi \u00e8 alcuna garanzia che una libreria esterna disponibile oggi rimanga disponibile anche in futuro, magari fra 5-10-15-20 anni, il <a href=\"https:\/\/it.wikipedia.org\/wiki\/Ciclo_di_vita_del_software\" target=\"_blank\" rel=\"noopener\">ciclo di vita<\/a> di un software enterprise.<\/p>\n<p style=\"text-align: justify;\">Delineate le due principali classi di utenti, quali sono le piattaforme di deploy verso cui un progetto software si pu\u00f2 trovare ad essere indirizzato?<\/p>\n<p style=\"text-align: justify;\"><strong><a href=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/08\/comporre_b2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/08\/comporre_b2-300x230.jpg\" alt=\"comporre_b2\" width=\"300\" height=\"230\" \/><\/a><\/strong><\/p>\n<p>1) <strong>Applicazioni browser-based<\/strong> che non utilizzino alcun plugin. Ivi incluso nel conto anche il plugin Java senza il quale un applet non pu\u00f2 avviarsi all\u2019interno di un browser.<\/p>\n<p style=\"text-align: justify;\">2) <strong>Applicazioni enterprise<\/strong> con architettura three tier che per la rappresentazione dell\u2019 interfaccia GUI non utilizzino un \u201c<strong>client pesante<\/strong>\u201d. In pratica deve essere possibile realizzare un rendering di \u201ctipo browser\u201d senza dover utilizzare un browser. Cos\u00ec da costruire delle interfacce GUI pi\u00f9 ricche e pi\u00f9 efficienti rispetto a quelle realizzabili seguendo il modello browser-based.<\/p>\n<p style=\"text-align: justify;\">3) <strong>Applicazioni self-contained<\/strong>. Le apps per capirci in grado di girare su tablet e smartphone.<\/p>\n<hr \/>\n<h3><strong>Quindi&#8230; Java perch\u00e9?<\/strong><\/h3>\n<p>Per quanto riguarda le \u201cApplicazioni browser-based\u201d il supporto offerto da JavaEE (Enterprise Edition) \u00e8 stranoto e consolidato ed i \u201ctags\u201d da ricordare sono: <a href=\"https:\/\/it.wikipedia.org\/wiki\/Servlet\" target=\"_blank\" rel=\"noopener\">servlet<\/a>, <a href=\"https:\/\/it.wikipedia.org\/wiki\/JavaServer_Pages\" target=\"_blank\" rel=\"noopener\">java server pages<\/a>&#8230; <a href=\"https:\/\/it.wikipedia.org\/wiki\/Java_Server_Faces\" target=\"_blank\" rel=\"noopener\">java server faces<\/a>.<\/p>\n<p style=\"text-align: justify;\"><a id=\"javaFX1\"><\/a>Per quanto riguarda le \u201c<strong>Applicazioni Enterprise con architettura three tier<\/strong>\u201d adesso le <a href=\"http:\/\/docs.oracle.com\/javase\/8\/docs\/\" target=\"_blank\" rel=\"noopener\">API Java<\/a> presentano una novit\u00e0 che permette di realizzare un rendering grafico ricco, cos\u00ec da poter costruire interfacce utente capaci di offrire la miglior esperienza d\u2019uso possibile; <strong>senza dover necessariemente passare per processi di installazione di componenti client pesanti.<\/strong> (e.g. Come altrimenti risulterebbe necessario continuando ad utilizzare i componenti grafici Java pi\u00f9 diffusi, le classi Swing)<\/p>\n<p style=\"text-align: justify;\">La novit\u00e0 in questione si chiama <strong><a href=\"http:\/\/docs.oracle.com\/javase\/8\/javase-clienttechnologies.htm\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #0000ff;\">JavaFX<\/span><\/a><\/strong>. In effetti si tratta di una novit\u00e0 per modo di dire, nel senso che JavaFX \u00e8 un package Java con alle spalle gi\u00e0 una bella storia (e.g. trattasi del discendente del progetto F3 di <a href=\"https:\/\/it.wikipedia.org\/wiki\/Sun_Microsystems\" target=\"_blank\" rel=\"noopener\">Sun Microsystems<\/a>). Storia arrivata a compimento quando in Oracle hanno deciso due cose importanti:<br \/>\na) includere JavaFX nel rilascio della piattaforma Java standard edition 8.<br \/>\nb) concedere il codice sorgente delle classi JavaFX <a href=\"https:\/\/wiki.openjdk.java.net\/display\/OpenJFX\/Main\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #0000ff;\">al progetto OpenJDK<\/span><\/a><\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j05a_tier.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j05a_tier-300x204.jpg\" alt=\"j05a_tier\" width=\"300\" height=\"204\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Per scansare ogni equivoco che potrebbe sorgere leggendo la maggior parte del materiale su JavaFX che si trova in internet. <strong>JavaFX non \u00e8 il semplice aggiornamento delle vecchie librerie GUI Java note con il nome \u201c<a href=\"https:\/\/it.wikipedia.org\/wiki\/Swing_%28Java%29\" target=\"_blank\" rel=\"noopener\"><em><span style=\"color: #0000ff;\">Swing<\/span><\/em><\/a>\u201d<\/strong>.<\/p>\n<p style=\"text-align: justify;\">La \u201cvision\u201d ed il livello di astrazione che porta con se\u00a0 JavaFX non \u00e8 confrontabile con Java GUI\u00a0 \u201c<em>Swing<\/em>\u201d.<\/p>\n<p style=\"text-align: justify;\">Per la costruzione di un interfaccia grafica JavaFX segue il modello: <strong><em>script di markup -&gt; rendering.<\/em><\/strong><\/p>\n<p style=\"text-align: justify;\">In JavaFX lo script di markup si chiama FXML e la sua notazione \u00e8 ispirata al formalismo XML.<\/p>\n<p style=\"text-align: justify;\">Questa caratteristica permette a JavaFX di comunicare efficientemente con i componenti dell\u2019architettura Java Enterprise che prima si riteneva essere assolutamente alternativi alle classiche librerie GUI Swing.<\/p>\n<p style=\"text-align: justify;\">Ad esempio, lato Server \u00e8 possibile utilizzare <span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/it.wikipedia.org\/wiki\/Java_Server_Faces\" target=\"_blank\" rel=\"noopener\">Java Server Faces<\/a><\/span> per creare delle astrazioni come i \u201ccomposite components\u201d in grado di interagire con i controlli GUI di JavaFX.<\/p>\n<p style=\"text-align: justify;\">Ci\u00f2 rende possibile realizzare lato client un render JavaFX con il <a href=\"https:\/\/it.wikipedia.org\/wiki\/Model-View-Controller\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #0000ff;\">Model-View-Controller<\/span><\/a> implementato a livello del server normalmente utilizzato per le applicazioni internet Java (<a href=\"https:\/\/it.wikipedia.org\/wiki\/Apache_Tomcat\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #0000ff;\">Apache Tomcat<\/span><\/a>).<\/p>\n<p style=\"text-align: justify;\">Rispetto ad HTML5 le classi GUI JavaFX permettono di costruire interfacce con un grado di interattivit\u00e0 ed efficienza maggiore rispetto ad una normale applicazione browser-based. Ad esempio con un applicazione browser-based per aggiornare i dati di una form \u00e8 necessario ricaricare l&#8217;intera pagina del browser. Invece con JavaFX si riesce ad ottenere un rendering selettivo che permette di agire sui singoli componenti dell\u2019interfaccia grafica, a tutto vantaggio dell\u2019efficenza operativa.<\/p>\n<p style=\"text-align: justify;\">A riguardo, sarei incompleto nell\u2019esposizione se non citassi il progetto che ritengo sia stato il miglior precursore della vision JavaFX. Mi riferisco al <span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"http:\/\/www.captaincasa.com\" target=\"_blank\" rel=\"noopener\">progetto CaptainCasa<\/a><\/span> iniziato diversi anni fa, il quale in anticipo sui tempi ha prodotto un risultato paragonabile a quanto oggi si pu\u00f2 realizzare facendo cooperare, ad esempio, Java Server Faces con JavaFX.<\/p>\n<p style=\"text-align: justify;\">Consiglio di provare i vari demo disponibili nel sito della community <strong>CaptainCasa,<\/strong> analizzando anche gli esempi di codice, cos\u00ec da meglio comprendere le funzionalit\u00e0\/caratteristiche del rendering di GUI basato sul modello \u201c<strong>Enterprise Client<\/strong>\u201d.<\/p>\n<blockquote><p>e.g per il disegno delle GUI JavaFX il <a href=\"http:\/\/gluonhq.com\/open-source\/scene-builder\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #0000ff;\">tool di riferimento \u00e8 Scene Builder<\/span><\/a><\/p><\/blockquote>\n<p>In ultimo le interfacce utente create con JavaFX possono essere distribuite in modalit\u00e0 \u201c<strong>Self-Contained Applications<\/strong>\u201d. E\u2019 quindi possibile, sempre rimanendo nel \u201ccampo della piattaforma Java\u201d, creare un app in grado di girare su di un Ipad come su un device Android.<\/p>\n<blockquote><p>e.g. naturalmente il disegno di un interfaccia grafica per un app da installare su dei devices mobile segue dei canoni di usabilit\u00e0\/estetici diversi rispetto ad un interfaccia progettata per essere utilizzata con un monitor di tipo desktop.<\/p><\/blockquote>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j06_WORA.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j06_WORA-300x161.jpg\" alt=\"WORA\" width=\"300\" height=\"161\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">In sintesi; Java perch\u00e9? Perch\u00e9 a vent\u2019anni dalla sua nascita Java continua ad essere una piattaforma che rispetta il suo motto di fondazione; <em><strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Write_once,_run_anywhere\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #0000ff;\">WORA<\/span><\/a>! Write once, run anywhere,<\/strong><\/em> offrendo tutto ci\u00f2 che serve, per fare ci\u00f2 che occorre.<\/p>\n<p style=\"text-align: justify;\">Poi&#8230; Java traslitterato in italiano viene \u201c<strong><em>Gi\u00e0 va!<\/em><\/strong>\u201d. Una frase sicuramente di buon auspicio per chi sviluppa software e magari vuole salire su una Scala \ud83d\ude42<\/p>\n<hr \/>\n<p style=\"text-align: right;\">\n","protected":false},"excerpt":{"rendered":"<p>Questo sar\u00e0 un post un poco \u201cfuori linea\u201d rispetto a quelli che lo hanno preceduto caratterizzati da un taglio pi\u00f9 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-289","post","type-post","status-publish","format-standard","hentry","category-tech"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Vent&#039;anni dopo. Java perch\u00e9? - Expert Configurator<\/title>\n<meta name=\"description\" content=\"Java perch\u00e9? Per molte ragioni... e poi Java traslitterato in italiano viene \u201cGi\u00e0 va!\u201d. Una frase sicuramente di buon auspicio per chi sviluppa software\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Vent&#039;anni dopo. Java perch\u00e9? - Expert Configurator\" \/>\n<meta property=\"og:description\" content=\"Java perch\u00e9? Per molte ragioni... e poi Java traslitterato in italiano viene \u201cGi\u00e0 va!\u201d. Una frase sicuramente di buon auspicio per chi sviluppa software\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/\" \/>\n<meta property=\"og:site_name\" content=\"Expert Configurator\" \/>\n<meta property=\"article:published_time\" content=\"2015-09-14T09:18:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-05-08T09:31:54+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j01_java-300x169.jpg\" \/>\n<meta name=\"author\" content=\"Annibale Marchetti\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Annibale Marchetti\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/ventanni-dopo-java-perche\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/ventanni-dopo-java-perche\\\/\"},\"author\":{\"name\":\"Annibale Marchetti\",\"@id\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/14e924cc693c448805b7c37dff4d16a6\"},\"headline\":\"Vent&#8217;anni dopo. Java perch\u00e9?\",\"datePublished\":\"2015-09-14T09:18:21+00:00\",\"dateModified\":\"2022-05-08T09:31:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/ventanni-dopo-java-perche\\\/\"},\"wordCount\":2043,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/ventanni-dopo-java-perche\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2015\\\/09\\\/j01_java-300x169.jpg\",\"articleSection\":[\"Tech\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/ventanni-dopo-java-perche\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/ventanni-dopo-java-perche\\\/\",\"url\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/ventanni-dopo-java-perche\\\/\",\"name\":\"Vent'anni dopo. Java perch\u00e9? - Expert Configurator\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/ventanni-dopo-java-perche\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/ventanni-dopo-java-perche\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2015\\\/09\\\/j01_java-300x169.jpg\",\"datePublished\":\"2015-09-14T09:18:21+00:00\",\"dateModified\":\"2022-05-08T09:31:54+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/14e924cc693c448805b7c37dff4d16a6\"},\"description\":\"Java perch\u00e9? Per molte ragioni... e poi Java traslitterato in italiano viene \u201cGi\u00e0 va!\u201d. Una frase sicuramente di buon auspicio per chi sviluppa software\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/ventanni-dopo-java-perche\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/ventanni-dopo-java-perche\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/ventanni-dopo-java-perche\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2015\\\/09\\\/j01_java.jpg\",\"contentUrl\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2015\\\/09\\\/j01_java.jpg\",\"width\":800,\"height\":450},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/ventanni-dopo-java-perche\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Vent&#8217;anni dopo. Java perch\u00e9?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/\",\"name\":\"Expert Configurator\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/14e924cc693c448805b7c37dff4d16a6\",\"name\":\"Annibale Marchetti\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5fc59031e812afcb0f4cb6977b610b798de6698bb9db523581033c8b9455e56?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5fc59031e812afcb0f4cb6977b610b798de6698bb9db523581033c8b9455e56?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5fc59031e812afcb0f4cb6977b610b798de6698bb9db523581033c8b9455e56?s=96&d=mm&r=g\",\"caption\":\"Annibale Marchetti\"},\"description\":\"Mi chiamo Annibale Marchetti, da molti anni mi occupo dell\u2019evoluzione del dualismo \u201corganizzazione &amp; informatica\u201d, dove, \u00e8 sempre bene ricordarlo, il primo termine rappresenta il fine, mentre il secondo \u00e8 il mezzo. Sono un autodidatta-osservatore e questa qualifica mi aiuta a ricordare che lo studio, come l\u2019innovazione, \u00e8 una storia senza fine.\",\"sameAs\":[\"https:\\\/\\\/www.expertconfigurator.com\"],\"url\":\"https:\\\/\\\/www.expertconfigurator.com\\\/wordpress\\\/author\\\/xamwp01\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Vent'anni dopo. Java perch\u00e9? - Expert Configurator","description":"Java perch\u00e9? Per molte ragioni... e poi Java traslitterato in italiano viene \u201cGi\u00e0 va!\u201d. Una frase sicuramente di buon auspicio per chi sviluppa software","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/","og_locale":"it_IT","og_type":"article","og_title":"Vent'anni dopo. Java perch\u00e9? - Expert Configurator","og_description":"Java perch\u00e9? Per molte ragioni... e poi Java traslitterato in italiano viene \u201cGi\u00e0 va!\u201d. Una frase sicuramente di buon auspicio per chi sviluppa software","og_url":"https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/","og_site_name":"Expert Configurator","article_published_time":"2015-09-14T09:18:21+00:00","article_modified_time":"2022-05-08T09:31:54+00:00","og_image":[{"url":"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j01_java-300x169.jpg","type":"","width":"","height":""}],"author":"Annibale Marchetti","twitter_misc":{"Scritto da":"Annibale Marchetti","Tempo di lettura stimato":"13 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/#article","isPartOf":{"@id":"https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/"},"author":{"name":"Annibale Marchetti","@id":"https:\/\/www.expertconfigurator.com\/wordpress\/#\/schema\/person\/14e924cc693c448805b7c37dff4d16a6"},"headline":"Vent&#8217;anni dopo. Java perch\u00e9?","datePublished":"2015-09-14T09:18:21+00:00","dateModified":"2022-05-08T09:31:54+00:00","mainEntityOfPage":{"@id":"https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/"},"wordCount":2043,"commentCount":0,"image":{"@id":"https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/#primaryimage"},"thumbnailUrl":"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j01_java-300x169.jpg","articleSection":["Tech"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/","url":"https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/","name":"Vent'anni dopo. Java perch\u00e9? - Expert Configurator","isPartOf":{"@id":"https:\/\/www.expertconfigurator.com\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/#primaryimage"},"image":{"@id":"https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/#primaryimage"},"thumbnailUrl":"http:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j01_java-300x169.jpg","datePublished":"2015-09-14T09:18:21+00:00","dateModified":"2022-05-08T09:31:54+00:00","author":{"@id":"https:\/\/www.expertconfigurator.com\/wordpress\/#\/schema\/person\/14e924cc693c448805b7c37dff4d16a6"},"description":"Java perch\u00e9? Per molte ragioni... e poi Java traslitterato in italiano viene \u201cGi\u00e0 va!\u201d. Una frase sicuramente di buon auspicio per chi sviluppa software","breadcrumb":{"@id":"https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/#primaryimage","url":"https:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j01_java.jpg","contentUrl":"https:\/\/www.expertconfigurator.com\/wordpress\/wp-content\/uploads\/2015\/09\/j01_java.jpg","width":800,"height":450},{"@type":"BreadcrumbList","@id":"https:\/\/www.expertconfigurator.com\/wordpress\/ventanni-dopo-java-perche\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.expertconfigurator.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Vent&#8217;anni dopo. Java perch\u00e9?"}]},{"@type":"WebSite","@id":"https:\/\/www.expertconfigurator.com\/wordpress\/#website","url":"https:\/\/www.expertconfigurator.com\/wordpress\/","name":"Expert Configurator","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.expertconfigurator.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/www.expertconfigurator.com\/wordpress\/#\/schema\/person\/14e924cc693c448805b7c37dff4d16a6","name":"Annibale Marchetti","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/c5fc59031e812afcb0f4cb6977b610b798de6698bb9db523581033c8b9455e56?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c5fc59031e812afcb0f4cb6977b610b798de6698bb9db523581033c8b9455e56?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c5fc59031e812afcb0f4cb6977b610b798de6698bb9db523581033c8b9455e56?s=96&d=mm&r=g","caption":"Annibale Marchetti"},"description":"Mi chiamo Annibale Marchetti, da molti anni mi occupo dell\u2019evoluzione del dualismo \u201corganizzazione &amp; informatica\u201d, dove, \u00e8 sempre bene ricordarlo, il primo termine rappresenta il fine, mentre il secondo \u00e8 il mezzo. Sono un autodidatta-osservatore e questa qualifica mi aiuta a ricordare che lo studio, come l\u2019innovazione, \u00e8 una storia senza fine.","sameAs":["https:\/\/www.expertconfigurator.com"],"url":"https:\/\/www.expertconfigurator.com\/wordpress\/author\/xamwp01\/"}]}},"_links":{"self":[{"href":"https:\/\/www.expertconfigurator.com\/wordpress\/wp-json\/wp\/v2\/posts\/289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.expertconfigurator.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.expertconfigurator.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.expertconfigurator.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.expertconfigurator.com\/wordpress\/wp-json\/wp\/v2\/comments?post=289"}],"version-history":[{"count":0,"href":"https:\/\/www.expertconfigurator.com\/wordpress\/wp-json\/wp\/v2\/posts\/289\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.expertconfigurator.com\/wordpress\/wp-json\/wp\/v2\/media?parent=289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.expertconfigurator.com\/wordpress\/wp-json\/wp\/v2\/categories?post=289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.expertconfigurator.com\/wordpress\/wp-json\/wp\/v2\/tags?post=289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}