JavaRush /Java Blog /Random-IT /Pausa caffè #114. Il costruttore predefinito in Java è un...

Pausa caffè #114. Il costruttore predefinito in Java è un esempio di costruttore di classi. Maven vs Gradle: come scegliere lo strumento di creazione giusto

Pubblicato nel gruppo Random-IT

Costruttore predefinito in Java - Esempio di costruttore di classi

Fonte: FreeCodeCamp In questo articolo parleremo dei costruttori, di come crearli e quali sono i costruttori predefiniti in Java. Pausa caffè #114.  Il costruttore predefinito in Java è un esempio di costruttore di classi.  Maven vs Gradle: come scegliere lo strumento di creazione giusto - 1

Cos'è un costruttore?

Come termine di programmazione orientata agli oggetti basato su classi, un costruttore è un metodo univoco utilizzato per inizializzare un oggetto (classe) appena creato. Esistono diverse regole da seguire durante la creazione dei costruttori. Queste regole includono:
  • Il nome del costruttore deve corrispondere al nome della classe.
  • Un costruttore non deve avere un tipo restituito.
Prima di continuare, vediamo come appare una classe in Java:
public class Student {
  String firstName;
  String lastName;
  int age;
}
Il codice sopra mostra una classe Student con tre attributi: firstName , lastName ed age . Assumeremo che la classe debba essere un modello per la registrazione degli studenti. Ricordiamo che questi tre attributi non hanno alcun valore, quindi le informazioni in essi contenute non sono codificate. Ora utilizzeremo i costruttori per creare una nuova istanza del nostro oggetto Student :
public class Student {
  String firstName;
  String lastName;
  int age;

  //конструктор Student
  public Student(){
      firstName = "Ihechikara";
      lastName = "Abba";
      age = 100;
  }

  public static void main(String args[]) {
      Student myStudent = new Student();
      System.out.println(myStudent.age);
      // 100
  }
}
Abbiamo creato un costruttore che abbiamo utilizzato per inizializzare gli attributi definiti nell'oggetto Student . Il codice precedente è un esempio di costruttore senza argomenti . Consideriamo ora un diverso tipo di esempio:
public class Student {
  String firstName;
  String lastName;
  int age;

  //конструктор
  public Student(String firstName, String lastName, int age){
      this.firstName = firstName;
      this.lastName = lastName;
      this.age = age;
  }

  public static void main(String args[]) {
    Student myStudent = new Student("Ihechikara", "Abba", 100);
    System.out.println(myStudent.age);
  }

}
Ora abbiamo creato un costruttore parametrizzato. Un costruttore con parametri è un costruttore creato con argomenti/parametri. Adesso cambiamolo.
public Student(String firstName, String lastName, int age){

  }
Abbiamo creato un nuovo costruttore che accetta tre argomenti: due stringhe e un numero intero.
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
Abbiamo quindi associato questi argomenti agli attributi che abbiamo definito durante la creazione della nostra classe. Ora abbiamo inizializzato l' oggetto Student utilizzando il costruttore.
public static void main(String args[]) {
    Student myStudent = new Student("Ihechikara", "Abba", 100);
    System.out.println(myStudent.age);
  }
Infine, abbiamo creato una nuova istanza dell'oggetto Student e le abbiamo passato i nostri argomenti. Siamo stati in grado di farlo perché li avevamo già definiti nel costruttore. Ho creato un costruttore con tre argomenti, ma puoi anche creare costruttori separati per inizializzare ciascun attributo. Ora che sai cos'è un costruttore in Java e come usarlo, diamo un'occhiata ai costruttori predefiniti.

Qual è il costruttore predefinito?

Il costruttore predefinito è il costruttore generato dal compilatore se non definiamo alcun costruttore per la classe. Ecco un esempio:
public class Student {
  String firstName;
  String lastName;
  int age;

  public static void main(String args[]) {
      Student myStudent = new Student();

      myStudent.firstName = "Ihechikara";
      myStudent.lastName = "Abba";
      myStudent.age = 100;

      System.out.println(myStudent.age);
      //100

      System.out.println(myStudent.firstName);
      //Ihechikara
  }
}
Riesci a trovare la differenza tra questo e i due esempi precedenti? Si noti che prima della creazione non abbiamo definito un costruttore myStudent per inizializzare gli attributi creati nella classe. Questo non genererà un errore nel nostro percorso. Più precisamente, il compilatore creerà un costruttore vuoto, ma non vedrai questo costruttore da nessuna parte nel codice: succede "sotto il cofano". Ecco come apparirà il codice sopra quando il compilatore inizierà a fare il suo lavoro:
public class Student {
  String firstName;
  String lastName;
  int age;


  /* пустой конструктор, созданный компилятором. Этот конструктор не будет отображаться в вашем codeе*/
  Student() {

  }

  public static void main(String args[]) {
      Student myStudent = new Student();

      myStudent.firstName = "Ihechikara";
      myStudent.lastName = "Abba";
      myStudent.age = 100;

      System.out.println(myStudent.age);
      //100

      System.out.println(myStudent.firstName);
      //Ihechikara
  }
}
Molte persone confondono il costruttore predefinito con il costruttore senza argomenti, ma in Java non sono la stessa cosa. Qualsiasi costruttore creato dal programmatore non è considerato un costruttore predefinito in Java.

Conclusione

In questo articolo abbiamo imparato cosa sono i costruttori e come possiamo crearli e usarli per inizializzare i nostri oggetti. Abbiamo anche parlato dei costruttori predefiniti e di come differiscono dai costruttori senza argomenti. Buona programmazione!

Maven vs Gradle: come scegliere lo strumento di creazione giusto

Fonte: Hackernoon L'automazione della build è un aspetto importante dello sviluppo del software. In questo articolo confronteremo due degli strumenti di compilazione più popolari per lo sviluppo Java: Maven e Gradle . Pausa caffè #114.  Il costruttore predefinito in Java è un esempio di costruttore di classi.  Maven vs Gradle: come scegliere lo strumento di creazione giusto - 2

Crea e Apache Ant

In precedenza, gli sviluppatori utilizzavano lo strumento Make per creare progetti Java e il processo di creazione non era molto diverso dalla creazione di applicazioni in qualsiasi altro linguaggio. Ma nel 2000 è stato rilasciato il sistema di compilazione Ant (Another Neat Tool). Ant, come Make, utilizza uno stile imperativo e i suoi script di compilazione hanno la sintassi XML. Ant è progettato come un sistema di automazione della build per progetti Java. Pertanto, gli sviluppatori Java possono facilmente estenderne le funzionalità.

Esperto di

Nel 2004 è uscito il nuovo sistema di build Maven che ha cambiato il processo di creazione di applicazioni Java. In precedenza, gli sviluppatori stessi organizzavano una struttura di cartelle per archiviare il codice sorgente, le risorse, le directory dei percorsi di classe e le directory di output. Per questo motivo, gli script di compilazione di Ant per due diverse applicazioni potrebbero essere molto diversi: compilazione, assemblaggio, copia dei file nella directory di output, ecc. sono stati scritti separatamente. In Maven, un progetto Java ha sempre una struttura chiara. Ad esempio, i sorgenti dovrebbero essere in src/main/java, le risorse per i test dovrebbero essere in src/test/resources. Maven ti consente di creare la struttura dei file di un tipico progetto con un solo comando. Maven introduce anche il concetto di "ciclo di vita della compilazione" con fasi sequenziali: convalida ➞ compilazione ➞ test ➞ pacchetto ➞ verifica ➞ installazione ➞ distribuzione) Ora, grazie alle cartelle a struttura fissa e a una serie di target, non è necessario scrivere e mantenere uno script di build di grandi dimensioni: sono diventati dichiarativi. È diventato più conveniente per gli sviluppatori lavorare non solo con il proprio codice, ma anche con progetti di terze parti, perché è chiaro come funziona il codice sorgente e come assemblarlo. Esistono numerose librerie nel mondo Java e le grandi applicazioni ne utilizzano centinaia. Se usi Ant, ricorda che dovrai aggiungere tu stesso i file jar necessari al progetto. È inoltre necessario occuparsi delle necessarie dipendenze transitive. Maven fornisce la funzionalità di gestione delle dipendenze tramite il repository centrale Maven. Ora, quando si specifica una nuova dipendenza nello script di build, Maven troverà automaticamente il jar richiesto della versione corrispondente e tutte le sue dipendenze transitive, le scaricherà e si assicurerà che finiscano nel classpath del progetto. Puoi anche mantenere il tuo repository privato, dove puoi archiviare le tue librerie o quelle con patch, oppure le librerie standard create a mano. Va notato che Ant può essere utilizzato insieme ad Apache Ivy Project , che consente anche di gestire le dipendenze e lavorare con i repository Maven. Nonostante tutti i vantaggi di Maven, il suo approccio dichiarativo può rappresentare uno svantaggio in alcune situazioni. Ad esempio, quando è necessario modificare il ciclo di vita della build e aggiungere nuovi obiettivi al processo di creazione. La funzionalità Maven può essere estesa utilizzando i plugin. Esistono molti plugin Maven già pronti che risolvono diversi problemi, tutti disponibili anche nel Maven Central Repository. Ma se per qualche motivo è necessario modificare leggermente il ciclo di vita standard e non esiste un plug-in adatto, lo sviluppatore dovrà crearlo da solo.

Gradle

La prima versione del sistema di compilazione Gradle è stata rilasciata nel 2008. 4 anni dopo è stata rilasciata la versione 1.0. L'obiettivo del progetto Gradle è mantenere tutti i vantaggi di Maven, ma allo stesso tempo aumentare la capacità di personalizzare il processo di compilazione. Gli script di build Gradle sono scritti in Groovy DSL. Gradle ti consente di scrivere script di build dichiarativi ed è più compatto di Maven perché XML è piuttosto ingombrante. Puoi facilmente aggiungere logica personalizzata al processo di creazione di Gradle. Tutto quello che devi fare è scrivere uno script Groovy e non è necessario sviluppare plugin. Lo sviluppatore può facilmente eseguire il debug dell'esecuzione degli script di build poiché sono normali file Groovy. Pertanto, Gradle combina approcci dichiarativi e imperativi. Gradle supporta anche i plugin, consentendo agli sviluppatori di modificare le impostazioni. Uno dei vantaggi significativi di Gradle sono le build incrementali. Quando la compilazione viene riavviata, Gradle determina se i file di input della destinazione sono cambiati e, in caso contrario, l'esecuzione della destinazione viene saltata perché i suoi artefatti di output sono già stati creati. Ciò offre un aumento significativo della velocità di costruzione rispetto a Maven, soprattutto nei grandi progetti multi-modulo. Gradle può anche eseguire il demone Gradle, un processo in background che evita lo spreco di risorse e tempo di inizializzazione ogni volta che viene eseguita la build. Gradle ha una pratica funzionalità wrapper Gradle: la possibilità di generare script di comandi shell e Windows che scaricano automaticamente la distribuzione Gradle della versione specificata e la utilizzano per creare il progetto. Ciò significa che per creare un progetto Gradle non è necessario installare Gradle separatamente, basta installare Java. Se necessario, puoi facilmente passare il tuo progetto a una versione diversa di Gradle.

Scegliere tra Maven e Gradle

Nonostante i vantaggi di Gradle, numerosi progetti utilizzano il sistema di compilazione Maven. La scelta dipende dal tipo di progetto e di team. Maven è in uso dal 2004, quindi più sviluppatori lo conoscono. Inoltre, Maven è stabile. L'ultima versione principale 3 è stata rilasciata nel 2010. Gradle è già cambiato in modo significativo diverse volte senza compatibilità con le versioni precedenti e gli sviluppatori hanno dovuto trasferire i loro script di build su nuove versioni. Poiché non tutti hanno familiarità con Groovy o Kotlin, lavorare con Gradle richiede conoscenze aggiuntive, mentre Maven utilizza XML trasparente. Ciò solleva la domanda: se il progetto ha iniziato lo sviluppo prima che Gradle diventasse popolare, ha senso spostare gli script di build su Gradle? Da un lato, sempre più sviluppatori scelgono Gradle. Ad esempio, Spring, Hibernate e LinkedIn utilizzano Gradle. Anche il sistema di build Android è Gradle ed è generalmente popolare tra gli sviluppatori di applicazioni Android. D'altra parte, tutti gli IDE più noti hanno l'integrazione con entrambi i sistemi di build e supportano il completamento automatico durante la modifica degli script di build. Come Maven, Gradle ha un numero enorme di plugin che ti consentono di aggiungere funzioni utilizzate di frequente al processo di creazione del progetto.

Conclusione

Dai pro e contro di ciascuno dei sistemi di assemblaggio sopra descritti si può trarre la seguente conclusione. Maven è più adatto a piccoli progetti che non richiedono la personalizzazione del processo di creazione e per i quali il tempo di creazione del progetto non è così critico. Gradle è più adatto per progetti su larga scala con un gran numero di moduli, nonché per applicazioni Android.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION