JavaRush /Blog Java /Random-PL /Przerwa kawowa #114. Domyślny konstruktor w Javie jest pr...

Przerwa kawowa #114. Domyślny konstruktor w Javie jest przykładem konstruktora klasy. Maven vs Gradle: jak wybrać odpowiednie narzędzie do kompilacji

Opublikowano w grupie Random-PL

Konstruktor domyślny w Javie – przykład konstruktora klasy

Źródło: FreeCodeCamp W tym artykule porozmawiamy o konstruktorach, o tym jak je tworzyć i jakie są domyślne konstruktory w Javie. Przerwa kawowa #114.  Domyślny konstruktor w Javie jest przykładem konstruktora klasy.  Maven kontra Gradle: jak wybrać odpowiednie narzędzie do kompilacji — 1

Co to jest konstruktor?

Jako termin programowania obiektowego opartego na klasach, konstruktor jest unikalną metodą używaną do inicjowania nowo utworzonego obiektu (klasy). Tworząc konstruktory, należy przestrzegać kilku zasad. Zasady te obejmują:
  • Nazwa konstruktora musi być zgodna z nazwą klasy.
  • Konstruktor nie może mieć typu zwracanego.
Zanim przejdziemy dalej, zobaczmy jak wygląda klasa w Javie:
public class Student {
  String firstName;
  String lastName;
  int age;
}
Powyższy kod przedstawia klasę Student z trzema atrybutami — imię , nazwisko i wiek . Zakładamy, że zajęcia powinny być wzorem do rejestracji studentów. Przypomnijmy, że te trzy atrybuty nie mają żadnych wartości, więc zawarte w nich informacje nie są zakodowane na stałe. Teraz użyjemy konstruktorów, aby utworzyć nową instancję naszego obiektu Studenta :
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
  }
}
Stworzyliśmy konstruktor, którego użyliśmy do inicjowania atrybutów zdefiniowanych w obiekcie Student . Powyższy kod jest przykładem konstruktora bezargumentowego . Spójrzmy teraz na inny rodzaj przykładu:
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);
  }

}
Teraz stworzyliśmy sparametryzowany konstruktor. Konstruktor sparametryzowany to konstruktor utworzony z argumentów/parametrów. Teraz zmieńmy to.
public Student(String firstName, String lastName, int age){

  }
Stworzyliśmy nowy konstruktor, który przyjmuje trzy argumenty – dwa ciągi znaków i liczbę całkowitą.
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
Następnie powiązaliśmy te argumenty z atrybutami, które zdefiniowaliśmy podczas tworzenia naszej klasy. Teraz zainicjalizowaliśmy obiekt Studenta za pomocą konstruktora.
public static void main(String args[]) {
    Student myStudent = new Student("Ihechikara", "Abba", 100);
    System.out.println(myStudent.age);
  }
Na koniec utworzyliśmy nową instancję obiektu Student i przekazaliśmy mu nasze argumenty. Udało nam się to zrobić, ponieważ zdefiniowaliśmy je już w konstruktorze. Stworzyłem jeden konstruktor z trzema argumentami, ale możesz także utworzyć osobne konstruktory do inicjowania każdego atrybutu. Teraz, gdy już wiesz, czym jest konstruktor w Javie i jak go używać, przyjrzyjmy się konstruktorom domyślnym.

Jaki jest domyślny konstruktor?

Konstruktorem domyślnym jest konstruktor wygenerowany przez kompilator, jeśli nie zdefiniujemy żadnych konstruktorów dla klasy. Oto przykład:
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
  }
}
Czy potrafisz znaleźć różnicę między tym a dwoma poprzednimi przykładami? Należy pamiętać, że przed utworzeniem nie zdefiniowaliśmy konstruktora myStudent w celu inicjowania atrybutów utworzonych w klasie. Nie spowoduje to błędu na naszej ścieżce. Dokładniej, kompilator utworzy pusty konstruktor, ale tego konstruktora nie zobaczysz nigdzie w kodzie - dzieje się to „pod maską”. Tak będzie wyglądał powyższy kod, gdy kompilator zacznie wykonywać swoją pracę:
public class Student {
  String firstName;
  String lastName;
  int age;


  /* пустой конструктор, созданный компилятором. Этот конструктор не будет отображаться в вашем kodе*/
  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
  }
}
Wiele osób myli konstruktor domyślny z konstruktorem bezargumentowym, ale w Javie to nie to samo. Żaden konstruktor utworzony przez programistę nie jest uważany za konstruktora domyślnego w Javie.

Wniosek

W tym artykule dowiedzieliśmy się, czym są konstruktory oraz jak możemy je tworzyć i wykorzystywać do inicjowania naszych obiektów. Mówiliśmy także o konstruktorach domyślnych i o tym, czym różnią się one od konstruktorów bezargumentowych. Miłego kodowania!

Maven vs Gradle: jak wybrać odpowiednie narzędzie do kompilacji

Źródło: Hackernoon Build Automatyzacja jest ważnym aspektem tworzenia oprogramowania. W tym artykule porównamy dwa najpopularniejsze narzędzia do tworzenia aplikacji Java: Maven i Gradle . Przerwa kawowa #114.  Domyślny konstruktor w Javie jest przykładem konstruktora klasy.  Maven vs Gradle: jak wybrać odpowiednie narzędzie do kompilacji - 2

Stwórz i Apache Ant

Wcześniej programiści używali narzędzia Make do tworzenia projektów w Javie, a proces budowania nie różnił się zbytnio od tworzenia aplikacji w jakimkolwiek innym języku. Ale w 2000 roku wypuszczono system kompilacji An t (Another Neat Tool). Ant, podobnie jak Make, używa stylu imperatywnego, a jego skrypty kompilacji mają składnię XML. Ant został zaprojektowany jako system automatyzacji kompilacji dla projektów Java. Dlatego programiści Java mogą łatwo rozszerzyć jego funkcjonalność.

Mavena

W 2004 roku pojawił się nowy system kompilacji Maven, który zmienił proces tworzenia aplikacji Java. Wcześniej programiści sami organizowali strukturę folderów do przechowywania kodu źródłowego, zasobów, katalogów ścieżek klas i katalogów wyjściowych. Z tego powodu skrypty kompilacji Anta dla dwóch różnych aplikacji mogą być bardzo różne: kompilacja, asemblacja, kopiowanie plików do katalogu wyjściowego itp. zostały napisane osobno. W Maven projekt Java ma zawsze przejrzystą strukturę. Na przykład źródła powinny znajdować się w src/main/Java, zasoby do testów powinny znajdować się w src/test/resources. Maven umożliwia utworzenie struktury plików typowego projektu za pomocą jednego polecenia. Maven wprowadza także koncepcję „cyklu życia kompilacji” z kolejnymi fazami: walidacja ➞ kompilacja ➞ test ➞ pakiet ➞ weryfikacja ➞ instalacja ➞ wdrożenie) Teraz, dzięki folderom o stałej strukturze i zestawowi obiektów docelowych, nie ma potrzeby pisania i utrzymuj duży skrypt kompilacji - stały się deklaratywne. Dla programistów wygodniej jest pracować nie tylko z własnym kodem, ale także z projektami stron trzecich, ponieważ jasne jest, jak działa kod źródłowy i jak go złożyć. W świecie Java jest sporo bibliotek, a duże aplikacje korzystają z ich setek. Jeśli korzystasz z Anta, pamiętaj, że niezbędne pliki jar będziesz musiał sam dodać do projektu. Musisz także zadbać o niezbędne zależności przechodnie. Maven zapewnia funkcjonalność menedżera zależności za pośrednictwem centralnego repozytorium Maven. Teraz, określając nową zależność w skrypcie kompilacji, Maven automatycznie znajdzie wymagany słoik odpowiedniej wersji i wszystkich jej zależności przechodnich, pobierze je i upewni się, że trafią do ścieżki klas projektu. Możesz także prowadzić własne prywatne repozytorium, w którym możesz przechowywać własne lub załatane biblioteki lub standardowe biblioteki utworzone ręcznie. Warto zaznaczyć, że Anta można używać w połączeniu z projektem Apache Ivy Project , co pozwala także na zarządzanie zależnościami i pracę z repozytoriami Mavena. Pomimo wszystkich zalet Mavena, jego deklaratywne podejście może w niektórych sytuacjach być wadą. Na przykład, gdy trzeba zmienić cykl życia kompilacji i dodać nowe cele do procesu kompilacji. Funkcjonalność Mavena można rozszerzyć za pomocą wtyczek. Istnieje wiele gotowych wtyczek Maven, które rozwiązują różne problemy, a wszystkie są również dostępne w Centralnym Repozytorium Maven. Ale jeśli z jakiegoś powodu musisz nieco zmienić standardowy cykl życia i nie ma odpowiedniej wtyczki, programista będzie musiał ją stworzyć samodzielnie.

Gradle

Pierwsza wersja systemu kompilacji Gradle została wydana w 2008 roku. 4 lata później wydano wersję 1.0. Celem projektu Gradle jest zachowanie wszystkich zalet Mavena, ale jednocześnie zwiększenie możliwości dostosowywania procesu kompilacji. Skrypty kompilacji Gradle są pisane w Groovy DSL. Gradle umożliwia pisanie deklaratywnych skryptów kompilacji i jest bardziej kompaktowy niż Maven, ponieważ XML jest dość obszerny. Możesz łatwo dodać niestandardową logikę do procesu kompilacji Gradle. Wszystko, co musisz zrobić, to napisać skrypt Groovy i nie musisz tworzyć wtyczek. Deweloper może łatwo debugować wykonanie skryptów kompilacji, ponieważ są to zwykłe pliki Groovy. Zatem Gradle łączy podejście deklaratywne i imperatywne. Gradle obsługuje także wtyczki, umożliwiając programistom zmianę ustawień. Jedną z istotnych zalet Gradle są kompilacje przyrostowe. Po ponownym uruchomieniu kompilacji Gradle sprawdza, czy pliki wejściowe obiektu docelowego uległy zmianie, a jeśli nie, wykonanie obiektu docelowego jest pomijane, ponieważ jego artefakty wyjściowe zostały już zbudowane. Daje to znaczny wzrost szybkości kompilacji w porównaniu do Mavena, szczególnie w dużych projektach wielomodułowych. Gradle może także uruchomić demona Gradle, proces działający w tle, który pozwala uniknąć marnowania zasobów i czasu inicjalizacji przy każdym uruchomieniu kompilacji. Gradle ma przydatną funkcję opakowania Gradle - możliwość generowania skryptów poleceń powłoki i systemu Windows, które automatycznie pobierają dystrybucję Gradle określonej wersji i wykorzystują ją do zbudowania projektu. Oznacza to, że aby zbudować projekt Gradle, nie musisz instalować Gradle osobno, wystarczy zainstalować Javę. Jeśli zajdzie taka potrzeba, możesz łatwo przełączyć swój projekt na inną wersję Gradle.

Wybór pomiędzy Mavenem i Gradle

Pomimo zalet Gradle, sporo projektów wykorzystuje system kompilacji Maven. Wybór zależy od rodzaju projektu i zespołu. Maven jest używany od 2004 roku, więc zna go coraz więcej programistów. Co więcej, Maven jest stabilny. Najnowsza wersja główna 3 została wydana w 2010 roku. Gradle zmienił się już znacząco kilka razy bez kompatybilności wstecznej, a programiści musieli przenieść swoje skrypty kompilacji do nowych wersji. Ponieważ nie każdy zna Groovy czy Kotlin, praca z Gradle wymaga dodatkowej wiedzy, podczas gdy Maven korzysta z przejrzystego XML-a. Nasuwa się pytanie: jeśli rozwój projektu rozpoczął się zanim Gradle stał się popularny, czy ma sens przenoszenie skryptów kompilacji do Gradle? Z jednej strony coraz więcej programistów wybiera Gradle. Na przykład Spring, Hibernate i LinkedIn używają Gradle. System kompilacji Androida to także Gradle i jest ogólnie popularny wśród twórców aplikacji na Androida. Z drugiej strony wszystkie dobrze znane IDE mają integrację z obydwoma systemami kompilacji i obsługują autouzupełnianie podczas edycji skryptów kompilacji. Podobnie jak Maven, Gradle posiada ogromną liczbę wtyczek, które pozwalają dodawać często używane funkcje do procesu tworzenia projektu.

Wniosek

Z zalet i wad każdego z opisanych powyżej systemów montażu można wyciągnąć następujący wniosek. Maven jest bardziej odpowiedni dla małych projektów, które nie wymagają dostosowywania procesu kompilacji i dla których czas budowy projektu nie jest tak krytyczny. Gradle jest bardziej odpowiedni do dużych projektów z dużą liczbą modułów, a także do aplikacji na Androida.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION