Java Flashcards
Maven - Build Profiles:
Un profilo di compilazione è un insieme di valori di configurazione, che può essere utilizzato per impostare o sovrascrivere i valori predefiniti della build Maven. Utilizzando un profilo di compilazione, è possibile personalizzare la compilazione per ambienti diversi, ad esempio ambienti di sviluppo e produzione.
Cos’è un repository Maven?
Nella terminologia di Maven, un repository è una directory in cui sono memorizzati tutti i jar del progetto, i jar della libreria, i plugin o qualsiasi altro artefatto specifico del progetto e può essere utilizzato facilmente da Maven.
I repository Maven sono di tre tipi:
*Locale
*Centrale
*Remoto
Repository maven Locale:
l repository locale Maven è una posizione di cartella sul computer. Viene creato quando si esegue qualsiasi comando maven per la prima volta.
Il repository locale di Maven mantiene tutte le dipendenze del progetto (jar di librerie, jar di plug-in, ecc.). Quando si esegue una build Maven, Maven scarica automaticamente tutti i jar di dipendenza nel repository locale.
Il repository locale di Maven per impostazione predefinita viene creato da Maven nella directory %USER_HOME%.
Repository centrale:
Il repository centrale di Maven è un repository fornito dalla comunità Maven. Contiene un gran numero di librerie di uso comune.
Quando Maven non trova alcuna dipendenza nel repository locale, inizia la ricerca nel repository centrale utilizzando il seguente URL − https://repo1.maven.org/maven2/
I concetti chiave del repository centrale sono i seguenti:
- Questo repository è gestito dalla comunità Maven.
- Non è necessario configurarlo.
- Richiede l’accesso a Internet per essere cercato.
Repository remoto:
A volte, Maven non trova una dipendenza menzionata anche nel repository centrale. Quindi interrompe il processo di compilazione e restituisce il messaggio di errore alla console. Per evitare tale situazione, Maven fornisce il concetto di Remote Repository, che è il repository personalizzato dello sviluppatore contenente le librerie richieste o altri jar di progetto.
L’operatore ternario
è un operatore condizionale che permette di assegnare un valore a una variabile basato su una condizione. Si chiama “ternario” perché coinvolge tre parti: la condizione, il valore se la condizione è vera e il valore se la condizione è falsa.
La sintassi generale dell’operatore ternario è la seguente:
*variabile = (condizione) ? valore_se_vera : valore_se_falsa;
Special Comment
Esistono tre tipi di commenti speciali:
- XXX: per definire qualcosa di sbagliato ma che funziona
- FIXME: per definire qualcosa di sbagliato e che non funziona
- TODO: per definire qualcosa ancora da fare
Loose coupling
significa che le classi o componenti del tuo programma dipendono il meno possibile l’una dall’altra. Ciò rende il codice più flessibile e facile da modificare, poiché le componenti possono essere cambiate senza influire sulle altre
POJOs “Plain Old Java Object”
è una semplice classe Java con campi e metodi di accesso (getter e setter) utilizzata per rappresentare dati in modo indipendente da librerie o framework specifici.
AOP “Aspect-Oriented Programming”
in Java, è un paradigma di programmazione che permette di separare le preoccupazioni trasversali, come il logging, la sicurezza o la gestione delle transazioni, dal codice di business principale.
AOP consente di definirle separatamente in “aspetti” o “advice”, che possono poi essere applicati in modo trasparente al codice principale.
Comandi per eseguire una aplicazione java
Ci sono due opzioni:
1.mvn exec:java
2.java -jar target/TestApiTraduttore-1.0-SNAPSHOT.jar
Eseguire questo comando per generare le dipendence e il jar a deployare
mvn clean dependency:copy-dependencies package
Inversion of control ?
L’inversione di controllo (Inversion of Control o IoC) è un principio di progettazione software che ribalta il controllo dell’esecuzione del programma. Invece di avere il controllo centralizzato all’interno di un componente o di una classe principale, l’IoC sposta il controllo dell’esecuzione a un framework o a un contenitore.
Ci sono principalmente due tipi di inversione di controllo:
- Iniezione di Dipendenza (Dependency Injection - DI): La DI è un tipo comune di IoC in cui un componente o una classe riceve le sue dipendenze da un’esterna, invece di crearle internamente. Questo può essere fatto tramite il passaggio dei parametri nel costruttore, tramite setter o anche tramite annotazioni, a seconda del linguaggio di programmazione e del framework utilizzati.
2.Gestione degli Eventi: Un altro tipo di IoC è la gestione degli eventi, in cui il controllo viene gestito da eventi o messaggi generati da oggetti o componenti all’interno del sistema. Un componente può registrarsi per ascoltare determinati eventi e reagire quando quegli eventi si verificano. Questo è spesso utilizzato in framework basati su eventi come JavaBeans o nella programmazione basata su messaggi.
Dependency Injection (DI)
Nel contesto della Dependency Injection (DI) in Java, ci sono due forme fondamentali per implementarla:
- Questa è la forma più comune di Dependency Injection ed è basata sulla passaggio delle dipendenze attraverso il costruttore di una classe. Qui, le dipendenze sono fornite come argomenti al costruttore della classe.
esempio: - Iniezione di Dipendenza tramite Setter (Setter Injection):
In questa le dipendenze sono impostate utilizzando i metodi setter di una classe. Invece di passare le dipendenze attraverso il costruttore, le classi forniscono metodi setter che consentono di impostare le dipendenze.
esempio:
Singleton
è uno dei pattern di progettazione più comuni utilizzati in Java. Questo pattern ha lo scopo di garantire che una classe abbia una sola istanza e fornisce un punto di accesso globale a tale istanza.
Prototype
il pattern Prototype consente di duplicare oggetti senza doverne definire ogni dettaglio di nuovo. Puoi pensare a un “prototipo” come un modello da cui creare altre copie, o clone, con la stessa struttura e stato iniziale. Questo è utile quando desideri avere diverse copie di un oggetto, ma non vuoi passare attraverso il processo di inizializzazione complessa ogni volta che ne hai bisogno.