JavaRush /Java Blog /Random-KO /커피 브레이크 #114. Java의 기본 생성자는 클래스 생성자의 예입니다. Maven과 Gradle:...

커피 브레이크 #114. Java의 기본 생성자는 클래스 생성자의 예입니다. Maven과 Gradle: 올바른 빌드 도구를 선택하는 방법

Random-KO 그룹에 게시되었습니다

Java의 기본 생성자 - 클래스 생성자의 예

출처: FreeCodeCamp 이 기사에서는 생성자, 생성 방법 및 Java의 기본 생성자가 무엇인지에 대해 설명합니다. 커피 브레이크 #114.  Java의 기본 생성자는 클래스 생성자의 예입니다.  Maven과 Gradle: 올바른 빌드 도구를 선택하는 방법 - 1

생성자란 무엇입니까?

클래스 기반 객체지향 프로그래밍 용어로, 생성자는 새로 생성된 객체(클래스)를 초기화하는 데 사용되는 고유한 메서드입니다. 생성자를 만들 때 따라야 할 몇 가지 규칙이 있습니다. 이러한 규칙에는 다음이 포함됩니다.
  • 생성자 이름은 클래스 이름과 일치해야 합니다.
  • 생성자에는 반환 유형이 없어야 합니다.
계속하기 전에 Java에서 클래스가 어떻게 보이는지 살펴보겠습니다.
public class Student {
  String firstName;
  String lastName;
  int age;
}
위의 코드는 firstName , lastNameage 의 세 가지 속성을 가진 Student 클래스를 보여줍니다 . 이 수업은 학생 등록의 모델이 되어야 한다고 가정하겠습니다. 이 세 가지 속성에는 값이 없으므로 해당 정보가 하드 코딩되지 않습니다. 이제 생성자를 사용하여 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){

  }
우리는 두 개의 문자열과 하나의 정수라는 세 개의 인수를 취하는 새로운 생성자를 만들었습니다.
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 개체 의 새 인스턴스를 만들고 여기에 인수를 전달했습니다. 생성자에서 이미 정의했기 때문에 이를 수행할 수 있었습니다. 세 개의 인수를 사용하여 하나의 생성자를 만들었지만 각 특성을 초기화하기 위해 별도의 생성자를 만들 수도 있습니다. 이제 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
  }
}
이 예제와 이전 두 예제의 차이점을 찾을 수 있나요? 생성 전에는 클래스에서 생성된 속성을 초기화하기 위해 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 개발에 가장 널리 사용되는 두 가지 빌드 도구인 MavenGradle을 비교해 보겠습니다 . 커피 브레이크 #114.  Java의 기본 생성자는 클래스 생성자의 예입니다.  Maven vs Gradle: 올바른 빌드 도구를 선택하는 방법 - 2

Make와 Apache Ant

이전에는 개발자들이 Make 도구를 사용하여 Java 프로젝트를 만들었고, 빌드 과정은 다른 언어로 애플리케이션을 만드는 것과 크게 다르지 않았습니다. 그러나 2000년에 Ant t(Another Neat Tool) 빌드 시스템이 출시되었습니다. Make와 마찬가지로 Ant는 명령형 스타일을 사용하며 빌드 스크립트에는 XML 구문이 있습니다. Ant는 Java 프로젝트를 위한 빌드 자동화 시스템으로 설계되었습니다. 따라서 Java 개발자는 쉽게 기능을 확장할 수 있습니다.

메이븐

2004년에는 새로운 Maven 빌드 시스템이 출시되어 Java 애플리케이션 빌드 프로세스를 변경했습니다. 이전에는 개발자가 직접 폴더 구조를 구성하여 소스 코드, 리소스, 클래스 경로 디렉터리 및 출력 디렉터리를 저장했습니다. 이로 인해 서로 다른 두 애플리케이션에 대한 Ant 빌드 스크립트는 매우 다를 수 있습니다. 즉, 컴파일, 어셈블리, 출력 디렉토리에 파일 복사 등이 별도로 작성되었습니다. Maven에서 Java 프로젝트는 항상 명확한 구조를 갖습니다. 예를 들어 소스는 src/main/java에 있어야 하고, 테스트용 리소스는 src/test/resources에 있어야 합니다. Maven을 사용하면 단일 명령으로 일반적인 프로젝트의 파일 구조를 만들 수 있습니다. Maven은 또한 순차적 단계로 "빌드 라이프사이클" 개념을 도입합니다: 검증 ➞ 컴파일 ➞ 테스트 ➞ 패키지 ➞ 확인 ➞ 설치 ➞ 배포) 이제 고정된 구조의 폴더와 대상 세트 덕분에 작성하고 작성할 필요가 없습니다. 대규모 빌드 스크립트를 유지 관리하세요. 선언적이 되었습니다. 소스 코드의 작동 방식과 이를 어셈블하는 방법이 명확하기 때문에 개발자가 자신의 코드뿐만 아니라 타사 프로젝트에서도 작업하는 것이 더욱 편리해졌습니다. Java 세계에는 꽤 많은 라이브러리가 있으며 대규모 애플리케이션에서는 수백 개의 라이브러리를 사용합니다. Ant를 사용하는 경우 필요한 jar 파일을 프로젝트에 직접 추가해야 한다는 점을 기억하세요. 또한 필요한 전이적 종속성을 처리해야 합니다. Maven은 Maven Central Repository를 통해 종속성 관리자 기능을 제공합니다. 이제 빌드 스크립트에 새 종속성을 지정할 때 Maven은 해당 버전의 필수 jar과 모든 전이적 종속성을 자동으로 찾아 다운로드하고 프로젝트의 클래스 경로에 있는지 확인합니다. 또한 자체 라이브러리나 패치된 라이브러리 또는 직접 만든 표준 라이브러리를 저장할 수 있는 자체 비공개 저장소를 유지 관리할 수도 있습니다. Ant는 Apache Ivy Project 와 함께 사용할 수 있으며 이를 통해 종속성을 관리하고 Maven 저장소와 작업할 수도 있습니다. Maven의 모든 장점에도 불구하고 Maven의 선언적 접근 방식은 일부 상황에서는 단점이 될 수 있습니다. 예를 들어 빌드 수명 주기를 변경하고 빌드 프로세스에 새로운 목표를 추가해야 하는 경우입니다. Maven 기능은 플러그인을 사용하여 확장할 수 있습니다. 다양한 문제를 해결하는 기성 Maven 플러그인이 많이 있으며, 모두 Maven 중앙 저장소에서도 사용할 수 있습니다. 그러나 어떤 이유로 표준 수명 주기를 약간 변경해야 하는데 적합한 플러그인이 없다면 개발자가 직접 만들어야 합니다.

그래들

Gradle 빌드 시스템의 첫 번째 릴리스는 2008년에 릴리스되었습니다. 4년 후 버전 1.0이 출시되었습니다. Gradle 프로젝트의 목표는 Maven의 모든 이점을 유지하는 동시에 빌드 프로세스를 사용자 정의하는 기능을 향상시키는 것입니다. Gradle 빌드 스크립트는 Groovy DSL로 작성되었습니다. Gradle을 사용하면 선언적 빌드 스크립트를 작성할 수 있으며 XML이 상당히 크기 때문에 Maven보다 더 컴팩트합니다. Gradle 빌드 프로세스에 사용자 정의 논리를 쉽게 추가할 수 있습니다. Groovy 스크립트를 작성하기만 하면 되며 플러그인을 개발할 필요가 없습니다. 개발자는 빌드 스크립트가 일반 Groovy 파일이기 때문에 실행을 쉽게 디버깅할 수 있습니다. 따라서 Gradle은 선언적 접근 방식과 명령적 접근 방식을 결합합니다. Gradle은 플러그인도 지원하므로 개발자가 설정을 변경할 수 있습니다. Gradle의 중요한 장점 중 하나는 증분 빌드입니다. 빌드가 다시 시작되면 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