[Java] 01. 자바란 무엇인가?

Ko Gun·2025년 7월 15일

Java

목록 보기
1/1

⚠️ 주의: 이 글은 자바를 공부하면서 개인적으로 정리한 글입니다.
친절한 설명보다는 개념 정리 중심이니 참고용으로만 활용해주세요.


01. 자바란?

자바(Java)는 썬 마이크로시스템즈(Sun Microsystems)의 제임스 고슬링(James Gosling)과 연구원들이 개발한 객체 지향 프로그래밍1 언어로, 1995년에 발표되었다.

처음에는 가전제품에 탑재되는 프로그램을 만들기 위한 목적이었으나, 현재는 웹 애플리케이션, 모바일 앱, 서버 백엔드 개발 등 다양한 영역에서 가장 널리 사용되는 프로그래밍 언어 중 하나이다.

1💡 TMI : 객체지향 프로그래밍이란?

객체는 프로그램에서 사용되는 데이터 또는 참조 공간을 말한다.
객체는 값을 저장할 변수와 작업을 수행할 메서드를 묶은 단위로, 쉽게 말해 "연관된 데이터 + 행동"을 하나로 묶은 구조이다.

이를 레고 블록에 비유할 수 있다.
레고 조각 하나하나가 객체이고, 이 객체들을 조립해서 하나의 큰 구조를 만드는 것이 객체지향 프로그래밍이다.


02. 자바 둘러보기

프로그래밍 언어를 배울 때 자바는 다른 언어와 달리 첫 번째 예제로 다루는 Hello World 를 출력하는 자바 프로그램만 제대로 공부하면 자바 언어의 절반 이상을 익히는
것과 다름없다고 한다.

왜냐하면 Hello World 를 출력하는 프로그램을 작성하려면 JDK2IDE3 를 설치하는 방법과 클래스, 함수, public, static 의 개념을 이해하고 실행하는 방법까지 모두 알아야 하기 때문이다.

2💬 TMI : JDK란?

JDK(Java Development Kit)는 자바 프로그램을 개발하기 위한 도구 모음이다.
이 안에는 컴파일러(javac), 실행기(java), 디버거(jdb), 문서 생성기(javadoc)
개발에 필요한 핵심 도구들과 JRE(Java Runtime Environment)가 포함되어 있다

  • javac: 자바 소스 코드를 바이트코드(.class)로 변환하는 컴파일러
  • java: 컴파일된 바이트코드를 JVM에서 해석·실행하는 런처
  • jdb: 자바 프로그램을 디버깅하기 위한 도구
  • javadoc: 코드 주석을 기반으로 API 문서를 자동 생성
  • 기타 jar, javadoc, javap, jinfo 등 다양한 개발 유틸리티 포함

JDK는 내부적으로 JRE + 개발 도구 모음이기 때문에,
단순히 Java 애플리케이션 실행 목적이라면 JRE만 설치해도 가능하지만,
개발을 하려면 꼭 JDK를 설치해야 한다.

3💬 TMI : IDE이란?

IDE(통합 개발 환경)이란, 프로그램을 실행하기 위한 과정인 코드 작성 → 컴파일 → 실행을 하나의 소프트웨어 안에서 처리할 수 있도록 도와주는 도구이다.
프로그램을 실행하는 과정은 일반적으로 다음 두 단계로 이루어진다.

1. 프로그래밍(코딩)
→ 우리가 실행하고자 하는 코드를 직접 작성하는 과정이다.

2. 컴파일
→ 작성한 코드를 해당 언어의 컴파일러를 통해 기계어로 번역하고 실행한다.
예를 들어, Python의 경우 Python 컴파일러를 통해 실행된다.

반면, IDE를 사용하면 코드 작성 → 컴파일 → 실행 과정을 한 곳에서 통합적으로 수행할 수 있어 훨씬 편리하다.

💡 자바 프로그램 실행 과정

※ 컴파일러는 javac.exe, 자바 가상 머신(JVM)은 java.exe에 해당합니다. 1

  1. 소스 코드인 MyProgram.java 파일을 작성한다.
  2. 컴파일러는 자바 소스 코드를 이용하여 클래스 파일인 MyProgram.class를 생성한다. 이때 MyProgram.class는 JVM이 인식할 수 있는 이진 파일(binary file)이다.
  3. JVM은 클래스 파일의 이진 코드(binary code)를 해석하여 프로그램을 실행한다.
  4. MyProgram의 실행 결과가 컴퓨터에 반영된다.

03. 자바 설치 및 인텔리제이 설치

JDK(Java Development Kit) 설치

🔗 JDK 다운로드 (Oracle 공식)

  • 자바 개발 도구 모음이며, 반드시 설치해야 함
  • 설치 방법은 여러 블로그 및 공식 페이지를 참고

IntelliJ IDEA 설치

🔗 IntelliJ IDEA 다운로드 (공식 사이트)

  • JetBrains에서 제공하는 대표적인 자바 통합 개발 환경(IDE)
  • 무료 버전(Community Edition)도 충분히 사용 가능

04. Hello World

public class HelloWorld {
}

클래스 선언 시 public 키워드는 접근 제어자4이다.
자바에서는 하나의 파일에 여러 클래스를 작성할 수 있지만,
파일명과 동일한 클래스에는 public 키워드를 붙이는 것이 관례이다.

예를 들어 HelloWorld.java 파일 안에 여러 클래스가 있어도,
파일명과 같은 HelloWorld 클래스에만 public을 붙인다.

HelloWorld.java의 파일명과 HelloWorld 클래스의 이름은 같다.

4💬 TMI : 접근제어자(public, private, protected, default)

자바에서 접근제어자(access modifier)는 클래스와 클래스의 멤버(필드, 메소드, 생성자)의 접근 범위를 지정하는 키워드이다.

1. 클래스의 접근제어자

클래스를 정의할 때 사용할 수 있는 접근제어자는 public과 default(생략) 두 가지이다.

  • public 클래스: 모든 패키지에서 접근 가능
  • default 클래스: 같은 패키지 내에서만 접근 가능
public class Book {     // public 클래스
    ...
}

class NoteBook {        // default 클래스
    ...
}

2. 클래스 멤버의 접근제어자

클래스 멤버(필드, 메소드, 생성자)에 사용할 수 있는 접근제어자는 public, private, protected, default(생략) 네 가지이다.

  • public 멤버: 모든 패키지에서 접근 가능
  • private 멤버: 같은 클래스 내부에서만 접근 가능
  • protected 멤버: 같은 패키지 및 다른 패키지의 자식 클래스에서 접근 가능
  • default 멤버: 같은 패키지 내에서만 접근 가능

접근 범위는 public > protected > default > private 순으로 좁아진다.

public class Book {       // public 클래스

    public int a;          // public 멤버변수
    private int b;         // private 멤버변수
    protected int c;       // protected 멤버변수
    int d;                 // default 멤버변수
    
    public Book() { }      // public 생성자
    
    public void showA() {}   // public 메서드
    private void showB() {}  // private 메서드
}

main 메서드 이해하기

자바 프로그램을 실행하려면 main5 메서드가 필요하다.
모든 프로그램의 시작 지점이며, 실행 가능한 클래스에는 반드시 있어야 한다.

메서드는 함수와 개념이 동일하지만, 클래스 내부에 존재할 경우 보통 "메서드"라 부른다.
자바는 모든 것이 클래스 기반이므로, 자바에서의 함수는 곧 메서드이다.

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
5💬 TMI : main 메서드에 등장한 요소 설명 (보강)
  • public

    • 접근 제어자 중 가장 허용 범위가 넓음.
    • 자바 어플리케이션 실행 시 JVM이 어디서든 main 메서드를 호출할 수 있도록 공개되어야만 함.
    • 만약 public이 아니면, JVM이 진입점을 찾지 못해 실행 오류 발생.
  • static

    • 클래스 로딩 시점에 메서드가 정적 영역(Static Area)에 미리 생성됨.
    • 인스턴스를 생성하지 않아도 호출 가능.
    • static 메서드에서는 아직 생성되지 않은(인스턴스화되지 않은) 인스턴스 멤버에 접근할 수 없음.
  • void

    • 반환값이 없음을 명시.
    • main 메서드는 프로그램 실행 후 JVM으로 복귀만 하면 되므로, 아무것도 반환하지 않음.
  • String[]

    • String 객체들의 배열.
    • 프로그램 실행 시, 커맨드라인에서 전달된 여러 개의 문자열 인자를 저장하는 역할.
    • 예: java MyApp A B Cargs[0]="A", args[1]="B", args[2]="C".
  • args

    • 변수명으로, 배열 참조 변수는 자유롭게 변경 가능 (String[] data 등).
    • 배열 길이(args.length)를 통해 전달된 인자 개수를 확인할 수 있음.
    • 보통 for 문으로 순회 처리하거나, if (args.length < n) 조건 검사에 사용.
  • System.out.println

    • 표준 출력 스트림(System.out)으로 데이터를 보내는 내장 메서드.
    • 메시지 출력 후 자동 줄바꿈.

커맨드라인 예제

# 컴파일
javac SampleProject.java -encoding UTF-8

# 실행: 전달 인자 3개 이상이 필요할 때
java SampleProject one two three
public class SampleProject {
    public static void main(String[] args) {
        if (args.length < 3) {
            System.out.println("인자는 3개 이상 전달되어야 합니다.");
            return;
        }
        for (int i = 0; i < args.length; i++) {
            System.out.println("args[" + i + "] = " + args[i]);
        }
    }
}
  1. args.length로 인자 개수를 검사
  2. for 문으로 각 인자를 순회
  3. -encoding UTF-8 옵션으로 인코딩 오류 방지

main 메서드를 제대로 이해하려면 객체, 인스턴스 개념이 선행되어야 하므로
이번 장에서는 깊이 설명하지 않고 넘어간다.

중요한 점은, 자바 프로그램을 실행하려면 반드시 아래 형식의 main 메서드가 있어야 한다는 것이다.

public static void main(String[] args)

앞에서 main 메서드를 준비했으므로, 이제 프로그램을 실행할 수 있다.


📚 참고 사이트

profile
Software Engineer | Computer Vision

0개의 댓글