Compilare un'app Web in IntelliJ IDEA

Se si preferisce usare IntelliJ IDEA per scrivere il codice, è possibile installare Azure Toolkit for IntelliJ per utilizzare le risorse di Azure.

Si supponga che il team di sviluppatori Java usi IntelliJ IDEA per creare app Web con il framework JSP (Java Server Pages). La società di produzione ha eseguito la migrazione ad Azure, ma si vuole eseguire la migrazione all'ambiente di sviluppo corrente con il minor numero possibile di interruzioni. È stato chiesto di valutare il modo più semplice per consentire agli sviluppatori di lavorare con Azure.

In questa unità verranno fornite informazioni su Azure Toolkit for IntelliJ e su come gli sviluppatori possono usarlo. Si esamineranno prima di tutto le tecnologie e i componenti usati per creare un tipico sito Web Java.

Applicazioni Web Java

Per creare applicazioni Web usando il linguaggio Java, sono disponibili diverse tecnologie, ad esempio:

  • Servlet Java

    Un servlet è un componente Java che estende le funzionalità di un server. Spesso i servlet estendono le funzionalità di un server Web implementando un contenitore per un'applicazione Web. Un servlet che implementa un'applicazione Web in genere ha il codice HTML incorporato nel codice Java.

  • JSP (Java Server Pages)

    JSP è una tecnologia standard in cui è possibile incorporare il codice Java in pagine HTML per creare contenuto dinamico. Le pagine JSP devono essere distribuite in un tipo specifico di servlet Java denominato contenitore Web e Apache Tomcat è uno dei contenitori Web comunemente usati.

    Per distribuire un'applicazione Web JSP usando IntelliJ IDEA, sarà necessario inserirla in un pacchetto con estensione WAR (Web Application Resource). Questo file è un formato standard di file di archivio che definisce il contenuto e la struttura dell'applicazione Web. Tomcat e altri contenitori Web possono usare questo file come origine di installazione per l'applicazione Web.

IntelliJ IDEA

IntelliJ IDEA è uno degli ambienti di sviluppo integrato più diffusi nella community Java ed è sviluppato da JetBrains. Viene eseguito in Windows, macOS e in qualsiasi versione a 64 bit di Linux che supporta Gnome o KDE.

Sono disponibili due edizioni di IntelliJ IDEA:

  • Community Edition

    Questa edizione gratuita è open source con una licenza Apache 2.

  • Ultimate Edition

    Questa edizione finale supporta molte funzionalità che non sono presenti nell'edizione Community, ad esempio: JavaScript, TypeScript e il sistema di controllo della versione Team Foundation Server.

Maven

Maven è uno degli strumenti più diffusi per la creazione e la gestione di progetti Java. Fornisce un processo di compilazione facile da usare e coerente per tutti i prodotti Java. Maven può anche fornire informazioni su un progetto quando viene compilato, ad esempio log delle modifiche, elenchi di dipendenze e risultati degli unit test. L'output di un processo di compilazione di Maven è denominato artefatto.

Un archetipo di Maven è un progetto separato, basato su Maven, che è possibile usare per creare o selezionare modelli di progetto. Un archetipo è un modello per un tipo specifico di progetto. Se ad esempio si vuole creare un'app Web JSP, è possibile usare l'archetipo maven-archetype-webapp disponibile nel repository org.apache.maven.archetypes. Il progetto includerà, ad esempio, una home page index.jsp di base per l'app Web e un file WAR per la distribuzione.

Un file importante in tutti gli archetipi di Maven è il file pom.xml, che archivia il modello a oggetti del progetto. Questo file contiene i dettagli della configurazione e i valori necessari a Maven per compilare un progetto. Ad esempio:

  • La directory di compilazione, in cui verranno inseriti gli artefatti.
  • La directory di origine, in cui si trova il codice sorgente.
  • La posizione delle directory e delle risorse di test.
  • Profili per la compilazione del test, della versione e di altre versioni del progetto.

IntelliJ IDEA.

Azure Toolkit for IntelliJ

Azure Toolkit for IntelliJ è un'estensione per IntelliJ IDEA che fornisce modelli e strumenti per gli sviluppatori che vogliono usare le risorse di Azure dall'ambiente di sviluppo integrato preferito. Quando si installa il toolkit, è possibile eseguire queste attività in IntelliJ IDEA senza usare altri strumenti o software:

  • Gestire le risorse di Azure, ad esempio:
    • Macchine virtuali, ovvero server virtualizzati che è possibile usare per eseguire il sistema operativo Windows o Linux e possono ospitare qualsiasi applicazione.
    • Account di archiviazione di Azure, che possono archiviare file, code di messaggi o tabelle di dati.
    • Cache Redis, uno dei più diffusi sistemi di memorizzazione nella cache per aumentare le prestazioni dei database.
  • Distribuire un'app Web in questi tipi di host:
    • Servizio app di Azure
    • Contenitori Docker
    • Macchine virtuali di Azure

Si può anche usare Azure Explorer con Azure Toolkit for IntelliJ, che fornisce una finestra aggiuntiva in IntelliJ IDEA in cui è possibile visualizzare e gestire le risorse esistenti nella sottoscrizione di Azure. Nella finestra Azure Explorer è possibile creare nuove app Web, account di archiviazione e altre risorse oppure configurare le risorse di Azure create.

Azure Explorer in IntelliJ IDEA

Esistono alternative ad Azure Toolkit for IntelliJ per distribuire l'app Web. È ad esempio possibile usare git per distribuire il codice e pubblicarlo in Azure. Azure Toolkit for IntelliJ consente tuttavia una forte integrazione in IntelliJ IDEA. Gli sviluppatori possono creare pacchetti e distribuire un'app, nonché creare e configurare risorse in Azure, senza uscire dall'ambiente di sviluppo integrato preferito.

Negli esercizi seguenti si userà Azure Toolkit for IntelliJ per distribuire un'app Web, basata su un archetipo di Maven, in Servizio app di Azure e per gestire tale app Web usando Azure Explorer da IntelliJ IDEA.

Uso dei contenitori con Azure

Questo modulo illustra l'uso del servizio app di Azure per ospitare un'app Web. Azure Toolkit for IntelliJ semplifica tuttavia l'uso dei contenitori, ovvero computer virtualizzati che condividono un sistema operativo e altre risorse con il computer host. Per eseguire un contenitore, è necessaria un'applicazione host, ad esempio Docker. Poiché i contenitori condividono le risorse con l'host, non è necessario che eseguano un sistema operativo completo. Questa condivisione li rende più semplici e veloci da avviare e arrestare. I contenitori sono diventati di recente uno dei mezzi più diffusi per ospitare le applicazioni, perché forniscono un ambiente controllato e isolato per l'applicazione ed è possibile rispondere alle nuove esigenze distribuendo rapidamente contenitori aggiuntivi. Per quanto riguarda le macchine virtuali, è possibile usare un'immagine per definire l'ambiente software per un contenitore. In Docker l'immagine viene configurata in un file di testo denominato Dockerfile. In questo file è possibile definire un'immagine padre, ad esempio una che include Linux e il server Apache e quindi aggiungere altri componenti, ad esempio la versione di produzione di compilazione dell'app Web Java.

Per eseguire i contenitori in Azure, sono disponibili diverse opzioni:

  • Eseguire Docker in una macchina virtuale: per configurare e gestire manualmente i computer host, è necessario crearli come macchine virtuali. È possibile scegliere un'immagine che includa Docker dalla libreria di immagini di Azure oppure è possibile installare Docker nelle macchine virtuali una volta che sono in esecuzione.

  • Servizio Azure Kubernetes: Kubernetes è uno dei più diffusi sistemi di orchestrazione dei contenitori che è possibile usare per distribuire e gestire un numero elevato di contenitori per creare un sistema con scalabilità orizzontale e resiliente. Kubernetes bilancia il carico tra i contenitori, riavvia i contenitori non riusciti e orchestra lo spazio di archiviazione condiviso. Con il servizio Azure Kubernetes è possibile distribuire un cluster Kubernetes nel cloud di Azure.

  • Istanze di Azure Container: per creare rapidamente uno o due contenitori senza usare macchine virtuali o cluster Kubernetes, è consigliabile usare il servizio Istanze di Azure Container. Questo servizio, ad esempio, consente di configurare facilmente un ambiente di test per eseguire alcuni unit test sul codice personalizzato.

Potrebbe anche essere necessario creare un registro di immagini in Azure. In Docker un registro è una posizione in cui vengono archiviate le immagini. L'applicazione Docker può scaricare immagini da questo registro e usarle per avviare nuovi contenitori. È possibile usare il servizio Registro Azure Container per creare registri privati nel cloud di Azure e popolarli con le immagini che includono l'applicazione. È possibile configurare il registro per eseguire la replica tra aree di Azure diverse e assicurarsi così che le immagini siano disponibili rapidamente nell'intera organizzazione. Dal registro di Azure è possibile distribuire i contenitori in macchine virtuali, in Kubernetes o in computer Docker locali.

Azure Toolkit for IntelliJ include diversi strumenti che è possibile usare per configurare i contenitori nella sottoscrizione di Azure:

  • Aggiungi supporto Docker: usare questa opzione per aggiungere un'immagine Dockerfile al progetto Java. Per impostazione predefinita, questa immagine è un elemento figlio di un'immagine Tomcat e include l'app Web come archivio WAR.

  • Docker Run: usare questo strumento per compilare un'immagine Docker e inviarla a un host Docker per l'esecuzione. Per impostazione predefinita, l'immagine viene eseguita nel computer locale, ma è possibile scegliere un host Docker in Azure, ad esempio una macchina virtuale o Istanze di Azure Container.

  • Push Image: usare questo strumento per compilare l'immagine Docker e quindi inviarla a un registro Docker. È possibile scegliere un'istanza di Registro Azure Container come destinazione per l'immagine. L'immagine può quindi essere usata nelle destinazioni di Azure, ad esempio le macchine virtuali o il servizio Azure Kubernetes.