본문 바로가기
JAVA/김영한의 자바 입문 (인프런 강의 내용)

2 개발환경 설정 및 자바 시작

by yororing 2024. 9. 27.

00 개요

  • 목록:
    • 01 개발 환경 설정
    • 02 자바 프로그램 실행
    • 03 주석(comment)
    • 04 자바란?

 

01 개발 환경 설정

1. 개발 환경 도구: IntelliJ

  • IDE - 인텔리제이 vs 이클립스
    • 자바 프로그램 개발 시 인텔리제이 (IntelliJ) 또는 이클립스 (Eclipse)라는 툴을 많이 사용
    • 과거에는 이클립스를 많이 사용했지만 최근에는 빠른 속도와 사용의 편의성 때문에 인텔리제이 주로 사용
    • 자바로 개발하는 대부분의 메이저 회사들도 최근에는 인텔리제이를 주로 사용하므로 이 강의에서도 인텔리제이로 학습할 것
  • OS - 윈도우 vs Mac
    • 자바로 개발하는 대부분의 메이저 회사들은 Mac 사용
    • 윈도우를 사용해도 무방
    • 강의는 Mac을 사용하지만 윈도우 사용자들을 최대한 배려해서 진행할 것
      • 윈도우 화면 스크린샷, 윈도우용 단축키
  • 참고: 자바를 별도로 설치하지 않아도 됨. 인텔리제이 안에서 자바 설치도 함께 진행함 

2. 인텔리제이(IntelliJ) 설치하기

  • 다운로드: https://www.jetbrains.com/ko-kr/idea/download
    • 상용 버전: IntelliJ IDEA Ultimate
    • 무료 버전: IntelliJ IDEA Community Edition (이것 다운로드 하기)
      • OS 선택: Windows, macOS, Linux
        • Windows: .exe 선택
        • macOS: M1, M2, M3는 Apple Silicon; 나머지는 Intel 선택
  • 참고: 인텔리제이는 무료 버전인 Community Edition과 유료 버전인 IntelliJ IDEA Ultimate가 있음. 이 강의에서는 무료 버전인 Community Edition으로 충분함. 특히 자바 언어를 학습하는 단계에서는 유료 버전과 무료 버전의 차이가 없음.

3. 인텔리제이(IntelliJ) 실행하기

1) 새 프로젝트 생성

  • 'New Project' 클릭 >
    • Name: 원하는 이름 지정
    • Location: 프로젝트를 저장할 원하는 경로 지정
    • Create Git repository: 깃 저장 원할 경우 선택, 이 강의에서는 uncheck
    • Language: Java
    • Build system: IntelliJ
    • JDK: 아무거나 사용해도 무방, 없으면 다운로드, 이 강의에서는 가장 최신 버전인 Oracle OpenJDK 21 사용 
      • JDK란: 자바로 개발하기 위해 필요한 도구 + 자바 실행 프로그램의 묶음 
      • 'Download JDK' >
        • Version: 23
        • Vendor: Oracle OpenJDK  
          • aarch64: 애플 M1, M2, M3 CPU 사용 시 선택, 나머지는 뒤에 이런 코드가 붙지 않은 JDK  선택하면 됨
        • Location: 기본설정, 건들지 않아도 됨
      • 나는 Oracle OpenJDK 23 사용!
    • Add Sample Code (체크 되있는 상태) 및 Advanced Setting 그대로 두기
  • 'Create' 클릭

2) ItelliJ 메인 화면

  • 앞서 Add sample code 선택하여 샘플 코드가 만들어져 있음
  • 위쪽에 초록색 화살표 버튼 클릭 > Run 'Main.main()' 버튼 클릭 시 프로그램 실행됨

3) 한글 언어팩 → 영어 변경

  •  IntelliJ는 가급적 한글 버전 대신, 영문 버전 사용 권장
    • 개발하면서 필요한 기능들을 검색하게 되는데, 영문으로 된 자료가 많기 때문.
    • 이 강의에서도 영문을 기준으로 진행할 것
  • 변경 방법:
    • Mac: IntelliJ IDEA(메뉴) > Settings... > Plugins > Installed
    • 윈도우: File > Settings... > Plugins > Installed
      • Korean Language Pack 체크 해제
      • 'OK' 선택 후 IntelliJ 재시작 

4. 다운로드 소스 코드 실행 방법

  • 우선, 인프런 강의에서 소스코드 (java-start) 다운로드 받
  • File > New > Project from Existing Sources...
    • 압축 푼 프로젝트 폴더 (java-start) 선택
    • Import Project 
      • Create project from existing sources > 'Next' 클릭
      • Project name: java-start (있는 그대로, 원하면 다르게 지정)
      • Project location: 그대로
      • Project format: .idea (directory-based) 그대로 > 'Next' 클릭
      • "Source files for your project have been found. Please choose directories that will be added..." 
        • 클릭된 경로 그래도 > 'Next' 클릭
      • "Review the detected libraries. At this stage, you can set library names ..." > 'Next' 클릭
      • "Review the suggested module structure for the project. At this stage, you can set module names ..." > 'Next' 클릭
      • "Please select project SDK. This SDK will be used by default by all project modules."
        • 사용할 JDK 선택: 나는 openjdk-23
          • JDK 없는 경우 '+' (Add New SDK) 클릭 > 'Download JDK' 클릭 하여 다운로드하여 선택
        • > 'Create' 클릭
    • Open Project
      • This Window 또는 New Window에서 열지 선택 

02 자바 프로그램 실행

1. HelloJava 클래스 작성 및 실행

  • Project > 프로젝트명 (나는 JAVA_PEARL) > src 우클릭 > New 클릭 > Java Class 클릭

  • New Java Class
    • 원하는 이름 작성 (나는 Hello Java)
    • 'Class' 클릭 > HelloJava.java라는 파일이 성생되어있을 것
  • 다음 코드 작성 후 실행
    • 주의: 자바는 대소문자 구분함. 대소문자가 다르면 오류 발생!
public class HelloJava {
	public static void main(String[] args) {
    	System.out.println("hello java");
    }
}
  • 실행 결과:
hello java
  • 설명:
    • public class HelloJava
      • HelloJava를 클래스라 함. 클래스 (class)의 개념을 학습해야 이해 가능. 클래스는 뒤에서 학습할 것
      • 지금은 단순히 HelloJava.java라는 파일을 만들었다고 이해하면 됨
      • 파일명과 클래스 이름이 같아야 함
      • { } 블록을 사용해서 클래스의 시작과 끝을 나타냄
    • puclic static void main(String[] args)
      • main 메서드라 함. 함수, 메서드의 개념을 학습해야 이해 가능. 함수, 메서드는 뒤에서 학습할 것
      • 자바는 main(String[] args) 메서드를 찾아서 프로그램을 시작함
      • 지금은 단순히 main은 프로그램의 시작점이라고 이해하면 됨
      • { } 블록을 사용해서 메서드의 시작과 끝을 나타냄 
    • System.out.println("hello java");
      • System.out.println(): 값을 콘솔에 출력하는 기능
      • "hello java": 자바는 문자열을 사용할 때 " (쌍따옴표)를 사용함. 쌍따옴표 사이에 원하는 문자열을 감싸면 됨
      • ; : 자바는 세미콜론으로 문장을 구분함. 문장이 끝나면 세미콜론을 필수로 넣어줘야 함 
  • 참고: 괄호
    • 소괄호 ( )
    • 중괄호 { }
    • 대괄호 [ ]
  • 실행 과정
    • 1. HelloJava 프로그램을 실행
    • 2. 자바는 시작점인 main() 메서드를 실행
    • 3. System.out.println("hello java")을 만나고, 문자열 hello java를 출력함
    • 4. main() 메서드의 { } 블록이 끝나면 프로그램 종료됨

블록 (block) 예시

public class HelloJava {                         //HelloJava 클래스의 범위 시작
    public static void main(String[] args) {     //main() 메서드의 범위 시작
        System.out.println("hello java");
    }                                            //main() 메서드의 범위 끝
}                                                //HelloJava 클래스의 범위 끝
  • 블록 { }이 시작되고 끝날 때 마다 들여쓰기가 적용되어 있는 것을 확인 가능.
  • 이것은 코드를 쉽게 구분하고 이해하도록 도와주는 좋은 관례임.
  • 블록이 중첩될 때 마다 들여쓰기의 깊이가 추가됨.
  • 들여쓰기는 보통 스페이스 4번을 사용함. 참고로 IntelliJ IDE를 사용하면 키보드 Tab을 1번 누르면 자동으로 스페이스 4번을 적용함.
  • 참고로 들여쓰기를 하지 않아도 프로그램은 작동함. 하지만 코드를 읽기에 좋지 않음.

추가 예제

  • HelloJava2 클래스 새로 생성 후 다음을 작성 
public class HelloJava2 {
    public static void main(String[] args) {
        System.out.println("hello java1");
        System.out.println("hello java2");
        System.out.println("hello java3");
    }
}
  • 실행 결과:
hello java1
hello java2
hello java3
  • 프로그램은 main()을 시작으로 위에서 아래로 한 줄 씩 실행됨.

03 주석(comment)

  • 자바는 주석이 있는 곳을 무시함.
  • 사용 용도:
    • 소스 코드가 복잡하다면 소스 코드에 대한 이해를 돕기 위해 설명을 적어둘 때.
    • 특정 코드를 지우지 않고, 잠시 실행을 막아두고 싶을 때.

1. 주석의 종류

  • 한 줄 주석 (single line comment):
    • // 기호로 시작. 이 기호 이후의 모든 텍스트는 주석으로 처리됨.
  • 여러 줄 주석 (multi line comment)
    • /* 로 시작하고 */로 끝남. 이 사이의 모든 텍스트는 주석으로 처리됨.

주석 예시

public class CommentJava {
    /*
    주석을 설명하는 부분입니다.
    */
    public static void main(String[] args) {
        System.out.println("hello java1"); //hello java1을 출력합니다. (한 줄 주석 - 부분 적용)
        //System.out.println("hello java2"); 한 줄 주석 - 라인 전체 적용
        
        /* 여러 줄 주석
        System.out.println("hello java3");
        System.out.println("hello java4");
        */
    }
}
  • 실행 결과:
hello java1
  • 주석으로 처리한 코드가 실행되지 않은 것을 확인 가능
  • 주석은 쉽게 말하면 자바 프로그램이 읽지 않고 무시하는 부분. 사람이 읽기 위해 사용함.

04 자바란?

1. 자바 표준 스펙

1) 자바 표준 스펙과 구현

  • 자바는 표준 스펙과 구현으로 나눌 수 있다
    • 자바 표준 스펙
      • 자바는 이렇게 만들어야 한다는 설계도이며, 문서임
      • 이 표준 스펙을 기반으로 여러 회사에서 실제 작동하는 자바를 만듬
      • 자바 표준 스펙은 자바 커뮤니티 프로세서 (JCP)를 통해 관리됨 
    • 다양한 자바 구현
      • 참고: https://whichjdk.com/ko
      • 여러 회사에서 자바 표준 스펙에 맞추어 실제 작동하는 자바 프로그램을 개발함
      • 자바 구현들은 모두 표준 스펙에 맞도록 개발되어 있음. 따라서 오라클 Open JDK를 사용하다가 Amazon Corretto 자바로 변경해도 대부분 문제 없이 동작함 (학습 단계에서는 어떤 자바를 사용하든 크게 상관 없음)
      • 각각 장단점 존재: 예) Amazon Corretto는 AWS에 최적화 되어있음
      • 각 회사들은 대부분 윈도우, MAC, 리눅스 같이 다양한 OS에서 작동하는 버전의 자바도 함께 제공함

2. 컴파일과 실행

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

3. IDE와 자바

1) IntelliJ를 통한 자바 설치 관리

  • 인텔리제이는 내부에 자바를 편리하게 설치하고 관리할 수 있는 기능을 제공함
  • 이 기능을 사용하면 인텔리제이를 통해 자바를 편리하게 다운로드 받고 실행할 수 있음
  • 참고: 자바를 OS에 직접 설치해도 되지만, 처음 프로그래밍을 시작하는 사람에게 이 과정은 매우 번거로움. 자바를 직접 설치하는 경우 환경 설정이 복잡함. 그래서 자바를 설치하다가 잘 안되어 시작도 하기 저에 포기하는 경우 다수. 자바 언어를 배우는 단계라면 인텔리제이를 통해 자바를 설치하는 정도면 충분함. 자바를 직접 설치하고 실행하는 내용은 별도로 다룰 것.

2) IntelliJ를 통한 자바 컴파일, 실행 과정

  • 컴파일
    • 자바 코드를 컴파일 하려면 javac라는 프로그램을 직접 사용해야 하는데, 인텔리제이는 자바 코드를 실행할 때 이 과정을 자동으로 처리해줌
      • 예) javac Hello.java
    • 인텔리제이 화면에서 프로젝트에 있는 out 폴더에 가보면 컴파일된 .class 파일이 있는 것을 확인 가능 
      • .java가 컴파일 돼서 .class가 된 것
      • .java vs .class
        • .class에는 .java에 있던 주석들이 없음; 실행 되는 코드만 작성하기 때문.

CommentJava.java
CommentJava.class

 

  •  실행
    • 자바를 실행하려면 java라는 프로그램을 사용해야 함. 이때 컴파일된 .class 파일을 지정해주면 됨.
      • 예) java Hello
      • 참고: 확장자는 제외함
  • 인텔리제이에서 자바 코드를 실행하면 컴파일과 실행을 모두 한번에 처리함
  • 인텔리제이로 매우 편리하게 자바 프로그램을 개발하고 학습 가능

4. 자바와 운영체제의 독립성

1) 일반적인 프로그램

  • 일반적인 프로그램은 다른 운영체제에서 실행 불가능함
    • 예) 윈도우 프로그램을 실행하면 MAC이나 리눅스에서 작동하지 않음. 
  • 이유: 윈도우 프로그램은 윈도우 OS가 사용하는 명령어들로 구성되어 있기 때문. 해당 명령어는 다른 OS와 호환되지 않음.

2) 자바 프로그램

  • 자바 프로그램은 자바가 설치된 모든 OS에서 실행 가능
  • 자바 개발자는 특정 OS에 맞추어 개발을 하지 않아도 됨. 자바 개발자는 자바에 맞추어 개발하면 됨. OS 호환성 문제는 자바가 해결함. Hello.class와 같이 컴파일된 자바 파일은 모든 자바 환경에서 실행 가능
  • 윈도우 자바는 윈도우 OS가 사용하는 명령어들로 구성되어 있음. MAC이나 리눅스 자바도 본인의 OS가 사용하는 명령어들로 구성되어 있음. 개발자는 각 OS에 맞도록 자바를 설치하기만 하면 됨.

3) 자바 개발과 운영 환경

  • 개발할 때 자바와 서버에서 실행할 때 다른 자바를 사용할 수 있음
  • 개발자들은 개발의 편의를 위해 윈도우나 MAC OS를 주로 사용함
  • 서버는 주로 리눅스를 사용함. 만약 AWS를 사용한다면 Amazon Corretto 자바를 AWS 리눅스 서버에 설치하면 됨
  • 자바의 운영체제 독립성 덕분에 각각의 환경에 맞추어 자바를 설치하는 것이 가능함