Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Visual Studio Code: impostare un progetto Java

È possibile configurare un intero progetto Java con Visual Studio Code ed avere tutte le caratteristiche che un normale IDE potrebbe offrirti. Sfasiamo il falso mito per cui è utile solo per il front-end
È possibile configurare un intero progetto Java con Visual Studio Code ed avere tutte le caratteristiche che un normale IDE potrebbe offrirti. Sfasiamo il falso mito per cui è utile solo per il front-end
Link copiato negli appunti

Java è ancora oggi uno dei linguaggi più utilizzati a livello di business.

È multipiattaforma, è ad alto livello, completo di framework e librerie che aiutano gli sviluppatori a non preoccuparsi dei dettagli e ha ancora oggi pieno supporto delle aziende più grandi (come Netflix, Red Hat, Apache etc..).

Ogni tanto sento questo falso mito per cui Visual Studio Code sarebbe adatto solo a programmare Front-end. Eh bene no: è possibile configurare un intero progetto Java ed avere tutte le caratteristiche che un normale IDE potrebbe offrirti. Ecco come.

Prerequisiti

Questo articolo tratterà di come creare, gestire ed avviare progetti e workspace Java con Visual Studio Code. È dunque un prerequisito fondamentale, che non sarà trattato, avere la JDK ed aver impostato correttamente le variabili d'ambiente relative a JAVA (PATH, JAVA_HOME, CLASSPATH). La versione di Java non è invece di alcun interesse, la guida è basata su versioni uguali e superiori a Java 8.

Aprire la cartella giusta

Ogni lungo viaggio inizia con il primo passo. È necessario quindi già identificare quale sia la cartella giusta da aprire.

Qual è la combinazione più corretta? Un workspace contenente più progetti oppure un'istanza di Visual Studio Code per ogni progetto?

Non esiste in realtà una giusta decisione in merito, il mio consiglio è quello di aprire un'istanza di Visual Studio Code per ogni progetto, a meno che più progetti non siano in forte correlazione tra di loro.

Come aprire una cartella

Come già spiegato in lezioni precedenti è possibile aprire una cartella dalla barra dei menù tramite "File → Open Folder".

Aprire una cartella da menubar

In alternativa, da terminale ci si può posizionare nella cartella del progetto con il comando cd e utilizzare il comando code .. O ancora specificare direttamente il percorso assoluto o relativo della cartella code percorso/cartella.

Visual Studio Code aprirà un'istanza separata dal terminale, è quindi possibile richiudere il terminale senza rischiare di chiudere anche l'editor.

Installare le estensioni più adatte

Normalmente Visual Studio Code, quando individua la struttura di un progetto Java già completo o se si apre un file con estensione .java, invia una notifica in basso a destra, chiedendo all'utente se è disposto ad installare le estensioni raccomandate:

Estensioni consigliate di Java

 

Ma se si sta creando un nuovo progetto non si hanno file con cui l'editor possa riconoscere le nostre intenzioni. Quindi ecco la lista di estensioni consigliate:

  • VisualStudioExptTeam.vscodeintellicode
  • vscjava.vscode-java-pack
  • vscjava.vscode-maven
  • vscjava.vscode-java-debug
  • vscjava.vscode-java-dependency
  • vscjava.vscode-java-test
  • redhat.java

Cercando "java" nella barra di ricerca delle estensioni dovrebbero pero comparire da subito tra i primi risultati:

Ricerca estensioni consigliate di Java

Creiamo un progetto Java

Per creare un progetto Java si apra la palette dei comandi (CTRL+Shift+P) e si scriva "Create Java Project". Va cliccata quindi la voce apposita:

Creare un progetto Java

Apparirà un altro pop-up che chiederà che tipo di progetto Java si vuole installare: progetto semplice (No Build Tool), Maven, Spring, Gradle etc...

Tipologia di progetto Java creato

Anche qui, non esiste una scelta corretta, è la necessità nonché il caso a farla da padrone. Si supponga comunque di voler creare un progetto semplice cliccando la prima voce.

Si aprirà il file manager di sistema dove indicare la posizione del progetto. Si scelga la cartella corrente e si dia un nome al progetto. Verrà quindi aperta una nuova istanza di Visual Studio Code nella cartella del nuovo progetto. Inoltre verrà creata la cartella src, un file App.java da cui iniziare, una cartella lib e una cartella .vscode al cui interno si può trovare un file di configurazione settings.json:

{
"java.project.sourcePaths": ["src"],
"java.project.outputPath": "bin",
"java.project.referencedLibraries": [
"lib/**/*.jar"
]
}

A quel punto potete anche chiudere una delle due istanze aperte. Supponiamo di tenere aperta quella che lancia Visual Studio Code a seguito della creazione.

Per attivare tutti gli strumenti delle estensioni, apriamo il file App.java. A questo punto, sul pannello in modalità "esplorazione file" dovrebbe aprirsi una tab chiamata "Java Projects".

Vista del pannello explorer di un progetto Java

Se non si vede la tab qualcosa è andato storto nel processo di configurazione ed è necessario riprovare.

Avviare una classe

Se il file App.java è ancora aperto, si può notare poco sopra il main le due scritte "Run" e "Debug". Cliccando una dei due si può procedere con l'avvio di una classe o il suo debug.

Avviare una classe Java

Si può anche notare come il file di configurazione abbia fatto si che il prodotto della fase di compilazione finisse nella cartella bin.

Generazione del file binario nella cartella bin

Per l'esattezza la riga del file che lo ha permesso è la seguente:

"java.project.outputPath": "bin",

È importante notare come sia l'avvio che il debug della classe non necessitano in alcun modo di configurazioni manuali del file launch.json, è tutto automatizzato.

Creare una nuova classe: metodo classico

A questo punto è possibile creare classi e package, il metodo più classico è sicuramente quello di creare a mano un file .java.

Per farlo bisogna posizionarsi sul pannello degli editor e cliccare sulla cartella src, quindi sull'icona per aggiungere un nuovo file.

Creazione manuale di una classe Java

Dopo aver inserito il nome con la giusta estensione, verranno automaticamente compilati i campi della classe, apparirà anche un menù a tendina che consentirà di scegliere tra le varie tipologie di classi Java (interfaccia, classe, enumerazione, etc...)

Template di generazione della nuova classe Java

Ovviamente per creare un nuovo package, ed una sua classe, bisogna creare prima la cartella e quindi il file al suo interno.

Creare una nuova classe: sezione "Java Projects"

Alternativamente è possibile interagire con sezione "Java Projects" ed aggiungere da li una nuova classe con un semplice click.

Nuova Classe da project explorer

Si aprirà un pop-up sulla parte superiore dello schermo dove si potrà inserire il nome della classe (attenzione, il nome della classe, non il nome del file, ovvero non bisogna scrivere l'estensione).

Scelta del nome per la nuova classe

Ora arriva la parte interessante: da qui infatti è possibile creare in un sol colpo cartelle e file. Basta usare la notazione dei package Java separando le cartelle con il carattere ".".

Creazione di una classe in un package

Attenzione però: dopo aver creato il primo package, il layout del pannello di esplorazione cambia. Per creare una nuova classe non ci sarà più la cartella src ma vedrete invece il nome del progetto.

Come cambia la vista dopo la creazione dei primi packages

Code generation

Una volta creato il file che rappresenta la classe vi è sicuramente la necessità di inserire altre istruzioni e metodi utili.

Alcuni di questi son coperti dalla code generation di Visual Studio Code, ovvero tramite poche azioni si possono generare interi blocchi di codice.

Generare il main

È possibile generare il metodo main scrivendo "main", nel corpo di una classe, seguito da CTRL+Spazio e quindi Invio (il suggerimento potrebbe apparire anche prima di premere CTRL+Spazio).

Generazione automatica del metodo main

Generare Getter e Setter

Nelle classi spesso vi son variabili d'istanza, di cui dover generare i metodi per prelevarne il valore (i così detti getter) ed i metodi per impostarne il valore (o meglio i setter).

Si può delegare il compito a Visual Studio Code posizionandosi nel corpo della classe (al di fuori di ogni altro metodo) e scrivendo "set" (per i setter) o "get" (per i getter) e selezionando dal menu a tendina il valore giusto.
Se il menu a tendina non dovesse comparire, si può utilizzare la shortctu CTRL+Spazio per forzarla.

auto generazione di un metodo set

È possibile continuare scrivendo il nome della variabile per avere una corrispondenza più precisa dell'autogenerazione.

generazione di un metodo get con ricerca precisa

L'unico problema rispetto questo genere di approccio, è che la procedura deve essere ripetuta per ogni variabile e per ognuno dei due metodi.

Metodi di Object

Similmente è possibile autogenerare i classici ereditati da Object, iniziando a scrivere il titolo ed aspettando che il pop-up riconosca il metodo. Si parla ad esempio di:

  • toString
  • equals
  • hashCode
  • clone
  • finalize

È possibile autogenerare anche il costruttore vuoto pubblico, scrivendo "ctor<" e selezionando la voce sul menu Generazione di un costruttore

Implementazioni e Override

Sempre con lo stesso meccanismo è possibile autogenerare facilmente override di metodi delle super classi oppure implementazioni obbligatorie di interfacce.

Ad esempio implementando Comparable, posizionandosi con il cursore su una zona vuota e premendo CTRL+Space è possibile autogenerare il compareTo

auto implementazione dei metodi di Comparable

Blocchi di codice e istruzioni

È possibile generare velocemente blocchi di codice o istruzioni come:

  • System.out.println digitando "sysout" e premendo Invio. Esistono varie versioni, come "syserr" per stampare sullo standard error o "soutm" e "systrace" per stampare il nome della classe e del metodo corrente.
  • try catch scrivendo "try_catch". Si può anche generare la variante con la resource, scrivendo "try_resource".
  • for sia nella variante con indice, scrivendo "fori", sia nella variante con l'iteratore automatico scrivendo "foreach". Viene selezionato come vettore/lista l'ultimo rilevato nel codice.
  • while e dowhile. Scrivendoli semplicemente e selezionando la voce apposita dal menu.
  • switch scrivendolo e selezionando la voce. Viene anche preselezionata col cursore la chiave di scelta dello switch.

Generazione di system out

Ovviamente esistono tantissime altri chiavi di auto generazione, non è possibile elencarle tutte, premendo CTRL+Space con il cursore testo posizionato su uno spazio vuoto se ne può consultare l'elenco.

Auto import

È ovviamente presente la funzione di import automatizzati. Già mentre si scrive del codice, se viene riconosciuta una classe basta cliccarla sul menu a tendina per importarla in automatico

pop-up che auto importa Color

Ma se si vuole eseguire quest'operazione a posteriori è comunque possibile utilizzare la shortcut apposita, con id editor.action.organizeImports:

  • su Windows e Linux Alt+Shift+O;
  • Su MacOS Shift+Option+O.

Se sono disponibili più scelte si attiverà inoltre un pop-up che permetterà di selezionare quello che si desidera.

Popup auto import

È comunque da notare che la funzionalità di auto import di Visual Studio Code non sempre riconosce correttamente le classi da importare.

Comment block e comment lines

Si può commentare un intero blocco di codice facilmente con CTRL+Shift+a o linea per linea con CTRL+Shift+7.

Esempio di commento in blocco

Code Generation con altre estensioni

Li dove non arrivano le estensioni consigliate da Visual Studio Code arrivano altre estensioni. In questa parte viene consigliata sohibe.java-generate-setters-getters.

Estensione per migliorare la Code generation

Tutte le funzionalità di questa estensione di ottengono aprendo la palette dei comandi, sempre con CTRL+Shift+P.

Generare getter e setter con un'estensione

È possibile con quest'estensione generare d'un colpo tutti i getter e setter delle variabili.

Aprendo la palette dei comandi, scrivendo "Generate Getters" e selezionando l'opzione "Generate Getters and Setters" vedrete tutti i getters ed i setters generati

Gneerazione getter e setter automatici

Generare toString con un'estensione

Similmente si possono generare tutti i metodi di Object con la stessa estensione, ma una menzione particolare la merita sicuramente il metodo toString, infatti il contenuto della stringa generata tiene conto di una struttura simile a quella di un JSON, con il carattere '=' per l'assegnazione e il carattere ',' per separare i campi

esempio di toString

Generare tutti i costruttori con un'estensione

È infine possibile generare tutti i tipi di costruttore con la medesima estensione, sia quello vuoto che quello con tutti i campi, finanche quelli con le notazioni di Lombok.

Generazione dei costruttori con estensione

Ti consigliamo anche