본문 바로가기
Java Tutorials

#0 Lesson: The "Hello World!" Application

by xogns93 2024. 7. 16.

아래 나열된 섹션들은 간단한 "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 {
    . . .
}

 

키워드 class는 name이라는 이름의 클래스 정의를 시작하며, 각 클래스의 코드는 위에서 표시된 중괄호( { , }) 사이에 나타납니다. 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"라고도 함)는 튜토리얼의 나머지 부분에서 논의될 것입니다.