Java 환경설정

환경설정 부터 천천히!

Java, Let’s get it!

Spring을 활용한 웹 서비스 개발에 앞서 우리들의 주무기가 될 Java 언어에 대해서 이해하고 사용법을 익히는 시간이 필요하겠죠.

먼저 Java를 설치하는 것부터 출발해보도록 하겠습니다. 가장 간단한 작업이지만 가장 중요한 부분이므로 아래 이어질 설명을 꼭 주의깊게 읽어주세요🙂

1 Java 설치하기

1.1 Java 버전별 차이

Java는 크게 LTS(Long-term Support) 버전과 non-LTS 버전으로 나뉩니다. LTS라 불리우는 장기 지원 버전은 후속 버전이 출시되어도 일정 기간 동안 지원을 지속하지만 non-LTS 버전은 지원이 종료된다는 차이점이 있습니다.

안정적인 시스템 운용 및 호환을 위해서는 LTS 버전을 사용하는 것을 강력하게 권장하고 있습니다 🙂

본 실습에서는 17 버전을 사용하도록 하겠습니다.

Oracle Java SE Support Roadmap

1.2 JDK vs JRE

💡 많은 분들이 처음 Java를 접할 때, JDK와 JRE의 역할을 혼동하는 경우가 많습니다. 이번 기회에 각 용어가 의미하는 바와 역할을 반드시 짚고 넘어가도록 합시다 🙂

  • JDK(Java Development Kit)

    • Java 어플리케이션 개발을 위해 반드시 필요하며, 사람이 작성한 소스 코드를 번역하여 컴퓨터가 이해할 수 있는 바이트 코드로 변환하는 도구인 Java 컴파일러가 포함되어 있습니다.

    • 일반적으로 JDK는 OpenJDK + 제조사의 부가 기능 으로 구성되며, 대표적인 것이 바로 Oracle JDK 입니다. 현재 Oracle JDK는 상용버전으로 공개되고 있으며, 라이센스 이슈를 피하기 위해서는 다른 제조사의 JDK 이용을 권장합니다.

    • JDK에는 JRE가 포함되어 있기 때문에 별도로 분리하여 설치할 필요가 없습니다.

  • JRE(Java Runtime Environment), JVM(Java Virtual Machine)

    • Java로 컴파일 된 어플리케이션을 실행하는 역할을 합니다. 모든 Java 어플리케이션은 JVM이라고 하는 가상의 컴퓨터 공간에서 실행되며, Windows, Linux, Mac 등 어떠한 운영체제라도 JVM이 설치되어 있다면 Java 어플리케이션을 실행할 수 있습니다.

1.3. Oracle JDK 라이센스 상용화 이슈

2019년 Oracle은 상업적인 목적으로 사용되는 Oracle JDK에 대하여 유료 구독모델을 적용 하였습니다. 이와 관련하여 많은 기사와 추측성 글이 게시판을 달구는 등 IT 업계의 큰 화두로 떠올랐죠.

Java 가 유료화 되면 어떻게 개발해요? 😭🥺

엄밀히 말하면 Java라는 언어 자체는 오픈소스이며 사용에 제약이 없습니다. Oracle JDK 특정 버전에 대한 지원을 받기 위해 Oracle과 구독 계약을 맺어야 하는 것이 변경된 정책의 핵심인 것이죠.

버그 수정, 보안 강화 등의 지원을 받으며 안정적으로 특정 버전을 장기간 사용하기 위해서는 유료 구독을 해야하는 상황에 처한 것입니다. 이러한 상황에 대해 Oracle의 공개 소스인 OpenJDK를 활용한 여러 대안이 나오게 되었습니다. 현재 대중에게 공개된 JDK는 OpenJDK의 레퍼런스를 바탕으로 개발되었으며, Oracle의 엄격한 심사와 테스트를 거쳐야만 출시할 수 있기에 일정 수준 이상의 성능과 안정성을 갖추었다고 할 수 있습니다.

OCTLA Signatories List

다양한 제조사의 JDK 중 본 실습에서는 OS 별 설치가 용이하고 안정성이 뛰어난 Azul 사의 JDK인 Zulu를 사용하도록 하겠습니다.

AZUL

운영체제별 다운로드 및 설치

  • Windows

    • 1.(다운로드 링크) 접속 후 [.msi] 버튼을 클릭하여 설치 파일을 다운로드한 후 설치합니다.

    • 2.탐색기 > 내 PC 마우스 우클릭 > 속성을 클릭합니다.

    • 3.좌측 메뉴 최하단의 "고급 시스템 설정"을 클릭합니다.

    • 4."환경 변수"를 클릭합니다.

    • 5.하단 <시스템 변수> 영역의 "새로 만들기"를 클릭합니다.

    • 6.변수 이름을 JAVA_HOME, 을 아래와 같이 입력합니다.

      • C:\Program Files\Zulu\zulu-17
    • 7.마찬가지로 <시스템 변수> 영역의 "Path"를 찾고 "편집"을 클릭합니다. 제일 끝에 아래 내용을 입력합니다.

      • C:\Program Files\Zulu\zulu-17\bin
    • 8.'확인'을 누르고 빠져나온 뒤, 윈도우키 + R 을 누르고 cmd 입력 후 엔터를 누릅니다.

    • 9.아래 내용을 입력했을 때, OpenJDK 관련 정보가 표시되면 설치 완료입니다.

      • java -version
  • Mac

    • 1.M1용(Arm64), Intel용 CPU 종류에 맞게 선택하여 다운로드 후 설치(.dmg)

    • 2.터미널에서 아래 내용을 입력했을 때, OpenJDK 관련 정보가 표시되면 설치 완료입니다.

      • java -version

2 IntelliJ 설치하기

IntelliJ는 JetBrain에서 개발한 Java 전용 IDE(Integrated Development Environment, 통합 개발 환경)입니다. 소스를 작성하는 것부터 서버를 실행, 터미널 사용, 각종 라이브러리 관리 등 다양한 기능이 하나의 프로그램에 통합되어 있기 때문에 매우 편리하게 개발을 진행할 수 있습니다.

다음의 링크를 참고하여 IntelliJ 설치를 진행해주세요 🙂

  • IntelliJ IDEA Ultimate(다운로드 링크)

    • (←눌러보기) IntelliJ 설치 가이드

      위 그림과 같이 Ultimate 버전을 다운로드 받은 후 설치까지 마무리 해주세요.

      • 라이센스 등록은 아래 가이드를 확인해주세요!

        IntelliJ Ultimate 등록 가이드

      • JetBrain에서 한글화 버전을 배포하였으나, Stackoverflow 등 다양한 레퍼런스 참조를 위해서 영문 버전 사용을 권장합니다 🙂

3 IntelliJ 설정하기

JDK가 설치되어 있다면 IntelliJ 역시 문제없이 실행됩니다. 최초 프로젝트를 생성하는 과정부터 폰트 변경 등을 차례대로 살펴 보겠습니다.

3.1 프로젝트 생성하기

순수 Java로 소스를 작성하고 실행할 수 있는 첫 프로젝트를 생성해보겠습니다.

  1. IntelliJ 실행 후 ‘New Project’ 클릭

  2. 좌측 탭에서 ‘Empty Project’ 선택 후, Name에 ‘chap01’ 작성

  3. ‘chap01’ 프로젝트 생성 완료

최종적으로 프로젝트가 생성된 IntelliJ 화면에서 좌측 디렉토리 구조를 보도록 하겠습니다.

이해가 되지 않는 파일과 디렉토리가 보이지만 현재 단계에서는 out 이라는 디렉토리에만 집중하고 위에서 다루었던 소스 코드와 바이트 코드의 구조를 떠올려보겠습니다.

Java 소스 코드는 [파일명].java 라는 파일 형식으로 최상위 위치인 루트 디렉토리에 패키지로 구분되어 작성됩니다. 아직 인간이 해석할 수 있는 단계의 소스 코드 상태이니 컴파일이라는 번역 작업을 통해서 컴퓨터가 알아듣는 언어, 즉 바이트 코드로 바꿔주어야 합니다. 그렇게 컴파일된 결과물이 바로 out 이라는 디렉토리에 [파일명].class 라는 형태로 저장됩니다.

3.2 폰트 변경하기

  1. 상단 탭의 IntelliJ IDEA를 누르고 Preferences 항목 클릭 (혹은 cmd + ,)

  2. Editor > Font 에서 설치된 폰트 중 사용하고자 하는 폰트를 선택한 후 저장

소스를 작성할 때 사용하는 폰트는 나름의 엄격한 법칙이 있습니다.

  • 글자 간의 폭이 일정한 고정폭 글꼴(Monospaced font) 이어야 한다.

  • **0, O / l, 1, I 와 같이 일반적인 상황에서 구분이 어려운 문자는 명확하게 의미가 드러날 수 있도록 해야 한다,**

코드의 가독성은 단순히 보기 좋은 환경을 구축하는 것이 아니라 로직을 이해하고 설계하는 데에 큰 영향을 미칩니다. 사소한 코드 오독이 대형 장애를 유발하기도 하죠.

IntelliJ에는 설정되어 있는 JetBrain Mono도 개발하기에 매우 좋은 폰트이나 기호에 따라 설정할 수 있도록 몇 가지 선택지를 더 제시해드리겠습니다.

1) IBM Plex

IBM Plex

2) Naver D2Coding

GitHub - naver/d2codingfont: D2 Coding 글꼴

3) Hack

Hack | A typeface designed for source code

4) DejaVu fonts

DejaVu Fonts

5) Anonymous Pro

Anonymous Pro - Mark Simonson

4 Java 소스 코드 작성하기

4.1 Java 파일 생성

이제 우리의 첫 Java 소스코드 작성을 시작해보겠습니다. 제일 기대되고 설레는 순간이죠 🙂

  1. chap01 디렉토리에 우클릭을 한 후, New > Java Class 클릭

  2. 창에 Hello 를 입력하고 엔터키

    • Java 클래스 파일의 이름은 반드시 대문자로 시작

  3. H**ello.java 파일 생성 확인**

4.2 main 함수 작성

Java 프로그램이 실행은 어떠한 단계를 거쳐서 이루어질까요? 우리가 프로그램을 실행시키는 순간 눈에 보이지 않는 많은 동작들이 컴퓨터 안에서 일어나고 있습니다. 간단한 형태의 도식을 통해 Java 프로그램의 실행 과정을 확인해보겠습니다.

Java로 작성된 프로그램을 실행하는 첫 관문은 main 함수로 진입하는 것입니다. 마치 건물의 출입구와 같은 역할을 한다고 볼 수 있습니다. main 함수로 진입한 후 작성된 소스의 작업을 모두 수행하면 main 함수가 종료되며, 이는 곧 프로그램의 종료를 의미합니다. 위에서 생성했던 Hello.java 에 main 함수를 작성해보겠습니다.

public class Hello {

    public static void main(String[] args) {
        
    }
}

main 함수 앞뒤에 잔뜩 붙은 생소한 키워드들이 보이시죠? 🤔 각각의 키워드가 의미하는 바가 적지 않지만 현재는 main 함수를 작성하기 위한 약속으로 간주하고 문자열을 출력하는 실습을 이어 진행하도록 하겠습니다.

5 “Hello, Sparta!” 출력해보기

아마 프로그래밍을 배우 경험이 있는 분들이라면 Hello world! 라는 문자열을 콘솔에 출력하는 프로그램을 작성해보신 적이 있으실 것입니다. 그만큼 첫 프로그래밍 언어를 학습하는 데에 있어서 상징적인 실습이라고 볼 수 있습니다. 위에서 작성했던 main 함수 내부에 Hello, Sparta! 를 출력하는 소스를 작성해보겠습니다.

public class Hello {

    public static void main(String[] args) {

        System.out.println("Hello, Sparta!");
    }
}
  • System.out.println(출력값); 은 콘솔에 값을 출력하기 위한 Java 함수입니다.

  • Java 에서 하나의 명령 단위가 끝났다는 의미를 전달하기 위해서는 반드시 세미콜론(;)으로 소스를 종결해주어야 합니다. 세미콜론을 쓰지 않고 엔터키를 쳐서 줄을 구분하게 되면 Java는 해당 라인의 명령이 끝나지 않았다고 인식하여 에러가 나게 됩니다. Python으로 첫 프로그래밍을 학습하신 분이라면 다소 혼동이 될 수 있으며, 평소 코드 작성 시 주의해야 합니다.

소스를 작성한 후 IntelliJ 화면에서 ▶️ 버튼을 누릅니다.

정상적으로 프로그램이 실행됐다면 하단 콘솔에서 Hello, Sparta! 출력된 것을 확인하실 수 있습니다. ▶️ 버튼을 통해 손쉽게 Java 프로그램을 실행했지만 이는 IntelliJ가 화면 첫 번째 줄과 같은 명령어를 대신 실행시켜주었기 때문에 가능했던 것입니다. 이처럼 IDE(통합 개발 환경) 에서는 개발을 위한 다양한 편의 기능을 제공한다는 점을 다시 한 번 확인하실 수 있습니다 🙂

덧붙여 IntelliJ에서는 sout 라는 글자만 입력해도 System.out.println(); 소스를 자동으로 작성해주는 자동 완성 기능을 제공합니다.


Last updated