본문으로 건너뛰기
안동민 개발노트 아이콘

안동민 개발노트

본문 시작
1장 : Java 설치와 첫 프로그램

첫 Java 프로그램

Hello.java를 직접 저장하고 javac로 컴파일한 뒤 java로 실행합니다.

첫 프로그램의 목적은 문법을 많이 배우는 것이 아니라 작성 → 컴파일 → 실행의 한 바퀴를 성공시키는 것입니다.

편집기는 메모장, Visual Studio Code, IntelliJ IDEA 등 무엇을 사용해도 됩니다.

다만 서식 있는 문서가 아니라 일반 텍스트로 저장해야 합니다.


5줄짜리 Hello World

java-board/src 폴더에 Hello.java 파일을 만들고 다음 내용을 그대로 저장합니다.

src/Hello.java — 완전한 파일
public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, Java!");
    }
}

처음에는 모든 단어를 외울 필요가 없습니다.

각 줄의 역할은 다음과 같습니다.

  • public class HelloHello라는 프로그램 단위를 선언합니다.
  • {와 마지막 }Hello에 속하는 범위를 표시합니다.
  • main은 프로그램이 시작할 위치입니다.
  • System.out.println(...)은 괄호 안의 글을 한 줄 출력합니다.
  • 세미콜론 ;은 출력 문장이 끝났음을 표시합니다.

Java는 대소문자를 구분합니다.

hello, Hello, HELLO는 서로 다른 이름입니다.

공개 클래스 이름이 Hello이므로 파일명도 정확히 Hello.java여야 합니다.


컴파일하기

PowerShell이 java-board 폴더에 있는지 확인한 뒤 다음 명령을 실행합니다.

javac -d out src/Hello.java

아무 메시지도 나오지 않으면 컴파일에 성공한 것입니다.

성공한 명령이 조용히 끝나는 것은 이상한 일이 아닙니다.

out 폴더를 확인합니다.

Get-ChildItem out
Hello.class

Hello.java는 사람이 편집하는 소스 파일이고 Hello.classjavac가 만든 실행용 파일입니다.

.class를 편집하지 않습니다.


실행하기

다음 명령에서 -cp out은 실행할 클래스를 out 폴더에서 찾으라는 뜻입니다.

마지막 Hello는 파일 경로가 아니라 실행할 클래스 이름이므로 .class를 붙이지 않습니다.

java -cp out Hello
Hello, Java!

이 출력이 보이면 작성·컴파일·실행 세 단계가 모두 성공했습니다.

src/Hello.java  --javac-->  out/Hello.class  --java-->  화면 출력

소스를 바꾸면 다시 컴파일한다

출력 문자열을 다음처럼 바꿔 저장합니다.

System.out.println("회원가입 시작");

java 명령만 다시 실행하면 이전 출력이 나옵니다.

JVM은 방금 고친 .java 파일이 아니라 기존 Hello.class를 실행하기 때문입니다.

먼저 다시 컴파일한 뒤 실행합니다.

javac -d out src/Hello.java
java -cp out Hello
회원가입 시작

IDE의 실행 버튼은 저장과 컴파일을 대신 처리할 수 있습니다.

이 교재에서는 각 단계가 보이도록 처음에는 터미널 명령을 사용합니다.


첫 소스를 읽는 순서

긴 선언을 한 덩어리로 외우기보다 바깥에서 안쪽으로 읽습니다.

  1. class Hello: Hello라는 클래스의 범위
  2. main: 실행이 시작되는 메서드의 범위
  3. println: 실제로 실행할 출력 문장

클래스와 메서드가 정확히 무엇인지는 뒤 장에서 작은 예제로 다시 배웁니다.

지금은 중괄호의 짝과 문장의 실행 순서를 확인합니다.


연습 문제

src/NewMember.java를 만들고 가입할 이메일과 역할을 두 줄로 출력하세요.

출력 예
email=kim@example.com
role=member

파일명과 공개 클래스 이름을 NewMember로 맞추고 다음 명령으로 확인합니다.

javac -d out src/NewMember.java
java -cp out NewMember