JavaRush /Java Blog /Random-JA /コーヒーブレイク#114。Java のデフォルト コンストラクターは、クラス コンストラクターの一例です。Mave...

コーヒーブレイク#114。Java のデフォルト コンストラクターは、クラス コンストラクターの一例です。Maven と Gradle: 適切なビルド ツールを選択する方法

Random-JA グループに公開済み

Java のデフォルト コンストラクター - クラス コンストラクターの例

出典: FreeCodeCamp この記事では、コンストラクター、コンストラクターの作成方法、Java のデフォルトのコンストラクターについて説明します。 コーヒーブレイク#114。 Java のデフォルト コンストラクターは、クラス コンストラクターの一例です。 Maven と Gradle: 適切なビルド ツールを選択する方法 - 1

コンストラクターとは何ですか?

クラスベースのオブジェクト指向プログラミング用語であるコンストラクターは、新しく作成されたオブジェクト (クラス) を初期化するために使用される固有のメソッドです。コンストラクターを作成するときに従う必要があるルールがいくつかあります。これらのルールには次のものが含まれます。
  • コンストラクター名はクラス名と一致する必要があります。
  • コンストラクターには戻り値の型があってはなりません。
先に進む前に、Java でのクラスがどのようなものかを見てみましょう。
public class Student {
  String firstName;
  String lastName;
  int age;
}
上記のコードは、firstNamelastNameageという 3 つの属性を持つStudentクラスを示しています。このクラスが学生登録のモデルであると仮定します。これら 3 つの属性には値がないため、それらの情報はハードコーディングされていないことに注意してください。次に、コンストラクターを使用して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
  }
}
Studentオブジェクト で定義された属性を初期化するために使用するコンストラクターを作成しました。上記のコードは、引数のないコンストラクターの例です。次に、別の種類の例を見てみましょう。
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);
  }

}
これで、パラメーター化されたコンストラクターが作成されました。パラメーター化されたコンストラクターは、引数/パラメーターを使用して作成されたコンストラクターです。では、変更してみましょう。
public Student(String firstName, String lastName, int age){

  }
2 つの文字列と 1 つの整数という 3 つの引数を取る新しいコンストラクターを作成しました。
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
次に、これらの引数を、クラスの作成時に定義した属性に関連付けました。これで、コンストラクターを使用して Studentオブジェクトを初期化しました。
public static void main(String args[]) {
    Student myStudent = new Student("Ihechikara", "Abba", 100);
    System.out.println(myStudent.age);
  }
最後に、 Studentオブジェクト の新しいインスタンスを作成し、引数をそれに渡しました。コンストラクターですでに定義していたので、これを行うことができました。ここでは 3 つの引数を持つ 1 つのコンストラクターを作成しましたが、個別のコンストラクターを作成して各属性を初期化することもできます。Java のコンストラクターとその使用方法がわかったので、デフォルトのコンストラクターを見てみましょう。

デフォルトのコンストラクターとは何ですか?

デフォルトのコンストラクターは、クラスにコンストラクターを定義しない場合にコンパイラーによって生成されるコンストラクターです。以下に例を示します。
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
  }
}
これと前の 2 つの例の違いがわかりますか? 作成前に、クラスで作成された属性を初期化するためのmyStudentコンストラクターを定義していないことに注意してください。これにより、パスでエラーがスローされることはありません。より正確には、コンパイラーは空のコンストラクターを作成しますが、このコンストラクターはコードのどこにも表示されません。これは「内部で」行われます。コンパイラが仕事を開始すると、上記のコードは次のようになります。
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
  }
}
多くの人がデフォルトのコンストラクターと引数なしのコンストラクターを混同していますが、Java ではこれらは同じものではありません。プログラマーが作成したコンストラクターは、Java のデフォルト コンストラクターとはみなされません。

結論

この記事では、コンストラクターとは何か、またコンストラクターを作成してオブジェクトを初期化するために使用する方法について学びました。デフォルトのコンストラクターと、それらが引数なしのコンストラクターとどのように異なるかについても説明しました。コーディングを楽しんでください!

Maven と Gradle: 適切なビルド ツールを選択する方法

出典: Hackernoon ビルドの自動化はソフトウェア開発の重要な側面です。この記事では、Java 開発用の最も人気のある 2 つのビルド ツールであるMavenGradleを比較します。 コーヒーブレイク#114。 Java のデフォルト コンストラクターは、クラス コンストラクターの一例です。 Maven と Gradle: 適切なビルド ツールを選択する方法 - 2

Make と Apache Ant

以前は、開発者は Make ツールを使用して Java プロジェクトを作成していましたが、その構築プロセスは他の言語でアプリケーションを作成する場合とそれほど変わりませんでした。しかし 2000 年に、An t (Another Neat Tool) ビルド システムがリリースされました。Ant は Make と同様に命令型スタイルを使用し、ビルド スクリプトには XML 構文が使用されます。Ant は、Java プロジェクトのビルド自動化システムとして設計されています。したがって、Java 開発者はその機能を簡単に拡張できます。

メイビン

2004 年に、新しい Maven ビルド システムが登場し、Java アプリケーションの構築プロセスが変わりました。以前は、開発者自身がフォルダー構造を編成して、ソース コード、リソース、クラスパス ディレクトリ、および出力ディレクトリを保存していました。このため、2 つの異なるアプリケーションの Ant ビルド スクリプトは大きく異なる可能性があります。コンパイル、アセンブリ、出力ディレクトリへのファイルのコピーなどが別々に記述されていました。Maven では、Java プロジェクトは常に明確な構造を持っています。たとえば、ソースは src/main/java にあり、テスト用のリソースは src/test/resources にある必要があります。Maven を使用すると、単一のコマンドで一般的なプロジェクトのファイル構造を作成できます。Maven では、一連のフェーズ (検証 ➞ コンパイル ➞ テスト ➞ パッケージ ➞ 検証 ➞ インストール ➞ デプロイ)による「ビルド ライフサイクル」の概念も導入しています 。固定構造のフォルダーと一連のターゲットのおかげで、大規模なビルド スクリプトを維持する - 宣言的になっています。ソース コードがどのように機能し、どのようにアセンブルするかが明確になっているため、開発者にとっては自分のコードだけでなくサードパーティのプロジェクトでも作業することがより便利になりました。Java の世界にはかなりの数のライブラリがあり、大規模なアプリケーションでは何百ものライブラリが使用されます。Ant を使用する場合は、必要な jar ファイルを自分でプロジェクトに追加する必要があることに注意してください。必要な推移的な依存関係にも注意する必要があります。Maven は、Maven Central Repository を通じて依存関係マネージャー機能を提供します。ビルド スクリプトで新しい依存関係を指定すると、Maven は対応するバージョンの必要な jar とそのすべての推移的な依存関係を自動的に見つけてダウンロードし、それらがプロジェクトのクラスパスに存在することを確認します。また、独自のプライベート リポジトリを管理して、独自のライブラリ、パッチ適用されたライブラリ、または手動で作成した標準ライブラリを保存することもできます。Ant はApache Ivy プロジェクトと組み合わせて使用​​できることに注意してください。これにより、依存関係を管理したり、Maven リポジトリを操作したりすることもできます。Maven にはさまざまな利点がありますが、その宣言的アプローチは状況によっては欠点になる可能性があります。たとえば、ビルドのライフサイクルを変更し、ビルド プロセスに新しい目標を追加する必要がある場合です。Maven の機能はプラグインを使用して拡張できます。さまざまな問題を解決する既製の Maven プラグインが多数あり、それらはすべて Maven Central Repository から入手できます。しかし、何らかの理由で標準のライフサイクルを少し変更する必要があり、適切なプラグインがない場合は、開発者が自分でプラグインを作成する必要があります。

グラドル

Gradle ビルド システムの最初のリリースは 2008 年にリリースされました。4 年後、バージョン 1.0 がリリースされました。Gradle プロジェクトの目標は、Maven のすべての利点を維持しながら、同時にビルド プロセスをカスタマイズする機能を強化することです。Gradle ビルド スクリプトは Groovy DSL で記述されます。Gradle を使用すると、宣言的なビルド スクリプトを作成できます。XML は非常に大きいため、Maven よりもコンパクトです。カスタム ロジックを Gradle ビルド プロセスに簡単に追加できます。Groovy スクリプトを作成するだけでよく、プラグインを開発する必要はありません。ビルド スクリプトは通常の Groovy ファイルであるため、開発者はビルド スクリプトの実行を簡単にデバッグできます。したがって、Gradle は宣言的アプローチと命令的アプローチを組み合わせています。Gradle はプラグインもサポートしているため、開発者は設定を変更できます。Gradle の大きな利点の 1 つは、増分ビルドです。ビルドが再開されると、Gradle はターゲットの入力ファイルが変更されたかどうかを判断し、変更されていない場合は、出力アーティファクトがすでにビルドされているため、ターゲットの実行はスキップされます。これにより、特に大規模なマルチモジュール プロジェクトにおいて、Maven と比較してビルド速度が大幅に向上します。Gradle は、ビルドが実行されるたびにリソースと初期化時間の無駄を避けるバックグラウンド プロセスである Gradle デーモンを実行することもできます。Gradle には便利な Gradle ラッパー機能があります。これは、指定されたバージョンの Gradle ディストリビューションを自動的にダウンロードし、それを使用してプロジェクトを構築するシェルおよび Windows コマンド スクリプトを生成する機能です。つまり、Gradle プロジェクトをビルドするために Gradle を個別にインストールする必要はなく、Java をインストールするだけで済みます。必要に応じて、プロジェクトを別のバージョンの Gradle に簡単に切り替えることができます。

Maven と Gradle のどちらを選択するか

Gradle の利点にもかかわらず、かなりの数のプロジェクトが Maven ビルド システムを使用しています。どちらを選択するかは、プロジェクトとチームの種類によって異なります。Maven は 2004 年から使用されているため、より多くの開発者が Maven に精通しています。また、Maven は安定しています。最新のメジャー バージョン 3 は 2010 年にリリースされました。Gradle はすでに下位互換性なしで何度か大幅に変更されており、開発者はビルド スクリプトを新しいバージョンに移植する必要がありました。誰もが Groovy や Kotlin に精通しているわけではないため、Gradle を使用するには追加の知識が必要ですが、Maven は明確な XML を使用します。ここで疑問が生じます。Gradle が普及する前にプロジェクトが開発を開始した場合、ビルド スクリプトを Gradle に移行するのは意味があるのでしょうか? 一方で、Gradle を選択する開発者が増えています。たとえば、Spring、Hibernate、LinkedIn は Gradle を使用します。Android ビルド システムも Gradle であり、Android アプリケーション開発者の間で一般的に人気があります。一方、よく知られているすべての IDE は両方のビルド システムと統合されており、ビルド スクリプト編集時のオートコンプリートをサポートしています。Maven と同様、Gradle にはプロジェクトのビルド プロセスに頻繁に使用される関数を追加できる膨大な数のプラグインがあります。

結論

上で説明した各アセンブリ システムの長所と短所から、次の結論が得られます。Maven は、ビルド プロセスのカスタマイズを必要とせず、プロジェクトのビルド時間がそれほど重要ではない小規模なプロジェクトに適しています。Gradle は、Android アプリケーションだけでなく、多数のモジュールを含む大規模なプロジェクトに適しています。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION