인프런/김영한 자바

[김영한의 자바 입문] - 1. 자바란?

sson-coding 2025. 8. 21. 23:26

본 글에 사용된 코드와 이미지의 일부는 김영한 님의 『김영한의 자바 입문』 강의를 참조하여 발췌·활용하였습니다.


 

본격적으로 자바 문법에 대해 공부하기 전에 자바에 대해서 알아보자.

자바 표준 스펙

자바는 표준 스펙과 구현으로 나눌 수 있다.

자바 표준 스펙

  • “자바는 이렇게 만들어야 한다” 라는 설계도이자 문서이다.
  • 이 표준 스펙을 기반으로 여러 회사에서 실제 작동하는 자바를 만든다.
  • 자바 표준 스펙은 자바 커뮤니티 프로세스(JCP)를 통해 관리된다.

자바 구현

  • 여러 회사에서 자바 표준 스펙에 맞추어 실제 작동하는 자바 프로그램을 개발한다.
  • 예를 들어, Amazon Corretto 는 AWS 에 최적화 되어 있다.
  • 각 회사들은 대부분 윈도우,Mac,리눅스 같은 다양한 OS 에서 작동한는 버전의 자바도 함께 제공한다.
  • 오라클 Open JDK 를 사용하다가 Amazon Corretto 자바로 변경해도 대부분 문제 없이 동작한다.

컴파일과 실행

자바 프로그램은 컴파일과 실행 단계를 거친다.
어떻게 진행되는지 알아보자.

  1. Hello.java 와 같은 자바 소스 코드 를 개발자가 작성한다.
  2. 자바 컴파일러를 사용해서 소스 코드를 컴파일 한다.
    • 자바가 제공하는 javac 라는 프로그램을 사용한다.
    • .java.class 파일이 생성된다.
    • 자바 소스 코드를 바이트코드로 변환하며, 자바 가상 머신(JVM)에서 더 빠르게 실행될 수 있게 최적화하고 문법 오류도 검출한다.
  3. 자바 프로그램을 실행한다.
    • 자바가 제공하는 java 라는 프로그램을 사용한다.
    • 자바 가상 머신 이 실행되면서 프로그램이 작동된다.

그렇다면 우리가 사용하는 인텔리제이(IDE) 에서 자바는 어떻게 작동될까?
먼저 인텔리제이에 대해 알아보자.

인텔리제이

인텔리제이는 통합개발환경(IDE) 로 자바 프로그램을 개발할 때 사용하는 툴이다. 과거에는 이클립스를 많이 사용했지만 최근에는 빠른 속도와 사용의 편의성 때문에 주로 인텔리제이를 사용한다.
또한 인텔리제이는 내부에 자바를 편리하게 설치하고 관리할 수 있는 기능을 제공해, 이 기능을 사용하면 자바를 편리하게 다운로드 받고 실행할 수 있다.

인텔리제이를 통한 자바 컴파일, 실행 과정

  1. 자바 코드를 컴파일 하려면 javac 라는 프로그램을 직접 사용해야 하는데, 인텔리제이는 자바 코드를 실행 할 때 이 과정을 자동으로 처리해준다.
    • javac Hello.java
    • 인텔리제이 화면에서 프로젝트에 있는 out 폴더에 보면 컴파일된 .class 파일을 볼 수 있다.
  2. 자바를 실행하려면 java 라는 프로그램을 사용해야 한다. 이 때 컴파일된 .class 파일을 지정해주면 된다.

즉, 인텔리제이에서 자바 코드를 실행하면 컴파일과 실행을 모두 한번에 처리해준다.


자바 프로그램 실행

public class HelloJava {
     public static void main(String[] args) {
         System.out.println("hello java");
     }
}

위 코드를 한번 분석해보자.

public class HelloJava

  • HelloJava 를 클래스라고 한다. (클래스 개념은 추후에 알아보자)
  • 파일명과 클래스 이름이 같아야 한다.
  • {} 블록을 사용해서 클래스의 시작과 끝을 나타낸다.

public static void main(String[] args)

  • main 메서드라 한다.
  • 자바는 이 메서드를 찾아서 프로그램을 시작한다.

System.out.println("hello java");

  • 값을 콘솔에 출력하는 기능이다.
  • 자바는 세미콜론(;) 으로 문장을 구분한다.

주석

주석은 소스 코드가 복잡할 때, 소스 코드에 대한 이해를 돕기 위해 설명을 적어둘 때 사용하거나, 특정 코드를 지우지 않고, 잠시 실행을 막아두고 싶을 때 사용한다.

한 줄 주석

  • // 기호로 시작한다.
  • 기호 이후의 모든 텍스트는 주석 처리된다.

여러 줄 주석

  • /* 로 시작하고 */ 로 끝난다.
  • 사이에 있는 모든 텍스트는 주석으로 처리된다.