Lesson: The "Hello World!" Application

2024. 6. 23. 18:25High Level Programming Language/Getting Started

아래 나열된 섹션들은 간단한 "Hello World!" 애플리케이션을 컴파일하고 실행하는 방법에 대한 자세한 지침을 제공합니다. 통합 개발 환경 없이 시작하는 플랫폼별 지침을 제공합니다. 문제가 발생하면 공통 문제 섹션을 참조하십시오. 이 섹션은 신규 사용자들이 겪는 많은 문제에 대한 해결책을 제공합니다.

 

"Hello World!" for Microsoft Windows

이제 첫 애플리케이션을 작성할 시간입니다! 다음 지침은 Windows Vista, Windows 7, 및 Windows 8 사용자들을 위한 것입니다. 

이 페이지의 지침에서 문제가 발생하면 Common Problems (and Their Solutions)를 참조하십시오.

  • A Checklist
  • Creating Your First Applicaiton

          ◌ Create a Source file

          ◌ Compile the Source file into a .class file

          ◌ Run the Program


A Checklist

첫 번째 프로그램을 작성하려면 다음이 필요합니다:
1. Java SE Development Kit 8 이상 (JDK 8 이상)
※ 우리는 JDK 17 버전을 사용합니다
Windows 버전을 지금 다운로드할 수 있습니다. (JRE가 아닌 JDK를 다운로드해야 합니다.) 설치 지침을 참조하십시오.
2. 텍스트 편집기
이 예제에서는 Windows 플랫폼에 포함된 간단한 편집기인 Notepad를 사용합니다. 다른 텍스트 편집기를 사용하는 경우에도 이 지침을 쉽게 적용할 수 있습니다.

이 두 가지 항목만 있으면 첫 번째 애플리케이션을 작성할 수 있습니다.


Creating Your First Application

첫 번째 애플리케이션인 HelloWorldApp은 간단히 "Hello world!"라는 인사말을 표시할 것입니다. 이 프로그램을 만들기 위해 다음을 수행합니다:

  • Creatiing a source file: 소스 파일은 Java 프로그래밍 언어로 작성된 코드로, 여러분과 다른 프로그래머들이 이해할 수 있습니다. 소스 파일을 작성하고 편집하는 데는 어떤 텍스트 편집기라도 사용할 수 있습니다.
  • Compile the source file into a .class file: Java 프로그래밍 언어 컴파일러(javac)는 소스 파일을 가져와 그 텍스트를 Java 가상 머신이 이해할 수 있는 명령어로 번역합니다. 이 파일에 포함된 명령어를 바이트코드라고 합니다.
  • Run the program: Java 애플리케이션 실행 도구(java)는 Java 가상 머신을 사용하여 애플리케이션을 실행합니다.

 Create a Source File

소스 파일을 생성하려면 두 가지 옵션이 있습니다:

  • 파일 HelloWorldApp.java를 컴퓨터에 저장하여 많은 타이핑을 피할 수 있습니다. 그런 다음, 소스 파일을 .class 파일로 컴파일하는 단계로 바로 이동할 수 있습니다.
  • 또는, 다음 (더 긴) 지침을 사용할 수 있습니다.

먼저, 편집기를 시작하십시오. 메모장 편집기를 사용합니다. 새 문서에 다음 코드를 입력하십시오:

/**
 * The HelloWorldApp class implements an application that
 * simply prints "Hello World!" to standard output.
 */
class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}

 

Be Careful When You Type

참고: 모든 코드, 커맨드 및 파일 이름을 정확히 입력하십시오. 컴파일러(javac)와 실행기(java)는 대소문자를 구분하므로 일관되게 대문자와 소문자를 사용해야 합니다. HelloWorldApp은 helloworldapp과 동일하지 않습니다.

 

코드를 HelloWorldApp.java라는 이름의 파일로 저장하십시오. 메모장에서 이를 수행하려면 먼저 파일 > 다른 이름으로 저장... 메뉴 항목을 선택하십시오. 그런 다음, 다른 이름으로 저장 대화 상자에서:

  1. "저장 위치" 콤보 상자를 사용하여 파일을 저장할 폴더(디렉토리)를 지정하십시오. 이 예제에서는 C 드라이브의 myapplication 디렉토리입니다.
  2. 파일 이름 텍스트 필드에 따옴표 없이 "HelloWorldApp.java"를 입력하십시오.
  3. "파일 형식" 콤보 상자에서 "텍스트 문서(*.txt)"를 선택하십시오.
  4. "인코딩" 콤보 상자에서 인코딩을 ANSI로 그대로 두십시오.

Compile the Source File into a .class File

PowerShell 또는 "명령 프롬프트" 창을 엽니다. 시작 메뉴에서 실행...을 선택한 다음 cmd를 입력하여 이 작업을 수행할 수 있습니다. 셸 창은 다음 그림과 유사하게 나타납니다.

 

프롬프트는 현재 디렉토리를 표시합니다. 프롬프트를 열면 현재 디렉토리는 보통 홈 디렉토리입니다(앞서 설명한 그림과 같이).

소스 파일을 컴파일하려면 현재 디렉토리를 파일이 위치한 디렉토리로 변경해야 합니다. 예를 들어, 소스 디렉토리가 C 드라이브의 myapplication인 경우, 프롬프트에서 다음 명령을 입력하고 Enter 키를 누릅니다:

cd C:\myapplication

이제 프롬프트가 C:\myapplication>로 변경되어야 합니다.

참고: 다른 드라이브의 디렉터리로 변경하려면 드라이브 이름이라는 추가 커맨드 입력해야 합니다. 예를 들어, D 드라이브의 myapplication 디렉토리로 변경하려면 다음과 같이 D:를 입력해야 합니다.
C:\>D:
D:\>cd myapplication
D:\myapplication>

 

프롬프트에서 dir을 입력하면 다음과 같이 소스 파일을 볼 수 있습니다:

C:\>cd myapplication

C:\myapplication>dir
 Volume in drive C is System
 Volume Serial Number is F2E8-C8CC

 Directory of C:\myapplication

2014-04-24  01:34 PM    <DIR>          .
2014-04-24  01:34 PM    <DIR>          ..
2014-04-24  01:34 PM               267 HelloWorldApp.java
               1 File(s)            267 bytes
               2 Dir(s)  93,297,991,680 bytes free

C:\myapplication>

 

이제 컴파일할 준비가 되었습니다. 프롬프트에서 다음 명령을 입력하고 Enter 키를 누르십시오.

javac HelloWorldApp.java

 

컴파일러가 바이트코드 파일인 HelloWorldApp.class를 생성했습니다. 프롬프트에서 dir을 입력하여 생성된 새 파일을 확인하십시오. 다음과 같이 표시됩니다:

C:\myapplication>javac HelloWorldApp.java

C:\myapplication>dir
 Volume in drive C is System
 Volume Serial Number is F2E8-C8CC

 Directory of C:\myapplication

2014-04-24  02:07 PM    <DIR>          .
2014-04-24  02:07 PM    <DIR>          ..
2014-04-24  02:07 PM               432 HelloWorldApp.class
2014-04-24  01:34 PM               267 HelloWorldApp.java
               2 File(s)            699 bytes
               2 Dir(s)  93,298,032,640 bytes free

C:\myapplication>

 

이제 .class 파일이 생겼으므로 프로그램을 실행할 수 있습니다.

이 단계의 지침에서 문제가 발생하면 Common Problems (and Their Solutions)를 참조하십시오.

 

 Run the Program

같은 디렉토리에서 프롬프트에 다음 명령을 입력하십시오:

java -cp . HelloWorldApp

 

화면에 다음과 같이 표시되어야 합니다:

C:\myapplication>java -cp . HelloWorldApp
Hello World!

C:\myapplication>

 

축하합니다! 프로그램이 작동합니다!

이 단계의 지침에서 문제가 발생하면 Common Problems (and Their Solutions)를 참조하십시오.

 

Lesson: A Closer Look at the "Hello World!" Application

"Hello World!" 애플리케이션을 보았고 (아마도 컴파일하고 실행했을 수도 있습니다), 이제 이것이 어떻게 작동하는지 궁금할 것입니다. 여기 다시 그 코드가 있습니다:

class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}

 

"Hello World!" 애플리케이션은 세 가지 주요 구성 요소로 이루어져 있습니다: source code comments, the HelloWorldApp class definition, 그리고 the main 메서드 입니다. 다음 설명은 코드에 대한 기본적인 이해를 제공하지만, 더 깊은 의미는 튜토리얼의 나머지 부분을 읽은 후에야 분명해질 것입니다.

 

Source Code Comments

다음 /** */ 회색 텍스트는 "Hello World!" 애플리케이션의 주석(comments)을 정의합니다:

/**
 * The HelloWorldApp class implements an application that
 * simply prints "Hello World!" to standard output.
 */
class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}

 

주석은 컴파일러에 의해 무시되지만 다른 프로그래머들에게 유용합니다. Java 프로그래밍 언어는 세 가지 종류의 주석을 지원합니다:

 

/* text */ :

컴파일러는 /*부터 */까지의 모든 내용을 무시합니다.

 

/** documentation */  :

이것은 문서화 주석(doc comment)을 나타냅니다. 컴파일러는 /*와 */를 사용하는 주석과 마찬가지로 이 주석도 무시합니다. javadoc 도구는 자동 생성 문서를 준비할 때 문서화 주석을 사용합니다. javadoc에 대한 자세한 내용은 Javadoc™ tool documents를 참조하십시오.

 

// text :

컴파일러는 //부터 줄의 끝까지의 모든 내용을 무시합니다.

 

The HelloWorldApp Class Definition

다음 회색 텍스트는 "Hello World!" 애플리케이션의 클래스 정의 블록을 시작합니다:

/**
 * The HelloWorldApp class implements an application that
 * simply displays "Hello World!" to the standard output.
 */
class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}

 

위에서 보이는 것처럼, 클래스 정의의 가장 기본적인 형태는 다음과 같습니다:

class name {
    . . .
}

 

키워드 classname이라는 이름의 클래스 정의를 시작하며, 각 클래스의 코드는 위에서 표시된 중괄호( { , }) 사이에 나타납니다. 2장에서는 일반적인 클래스 개요를 제공하고, 4장에서는 클래스를 자세히 다룹니다. 지금은 모든 애플리케이션이 클래스 정의로 시작한다는 것을 아는 것만으로 충분합니다.

 

The main Method

다음 텍스트는 main 메서드 정의를 시작합니다:

/**
 * The HelloWorldApp class implements an application that
 * simply displays "Hello World!" to the standard output.
 */
class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); //Display the string.
    }
}

 

Java 프로그래밍 언어에서는 모든 애플리케이션에 다음과 같은 시그니처를 가진 main 메서드가 포함되어야 합니다:

public static void main(String[] args)

 

제한자(modifier)인 public과 static은 어느 순서로든 작성할 수 있지만 (public static 또는 static public), 관례적으로 위에서 보이는 것처럼 public static을 사용합니다. 아규먼트 이름은 원하는 대로 지정할 수 있지만, 대부분의 프로그래머는 "args" 또는 "argv"를 선택합니다.

main 메서드는 C와 C++의 main 함수와 유사합니다. 이는 애플리케이션의 진입점(EntryPoint)이며, 이후 프로그램에 필요한 모든 다른 메서드를 호출합니다.

main 메서드는 단일 아규먼트를 허용합니다: String 타입 요소의 배열.

public static void main(String[] args)


이 배열은 런타임 시스템이 애플리케이션에 정보를 전달하는 메커니즘입니다. 예를 들어:

java MyApp arg1 arg2


배열의 각 문자열은 커맨드라인 아규먼트라고 합니다. 커맨드라인 아규먼트를 통해 사용자는 애플리케이션을 다시 컴파일하지 않고도 그 작동에 영향을 줄 수 있습니다. 예를 들어, 정렬 프로그램은 사용자가 다음 커맨드라인 아규먼트를 통해 데이터를 내림차순으로 정렬하도록 할 수 있습니다:

-descending


"Hello World!" 애플리케이션은 커맨드라인 아규먼트를 무시하지만, 이러한 아규먼트가 존재한다는 사실을 알고 있어야 합니다.

마지막으로, 다음 라인:

System.out.println("Hello World!");


는 코어 라이브러리의 System 클래스를 사용하여 "Hello World!" 메시지를 표준 출력(standard out)에 출력합니다. 이 라이브러리의 일부 (또한 "Application Programming Interface" 또는 "API"라고도 함)는 튜토리얼의 나머지 부분에서 논의될 것입니다.