9 minute read

저번 포스팅은 JAVA 에 대해서 간략히 알아보는 시간이었다면 이번 포스팅은 실제로 JAVA 를 설치해서 가장 친숙한 Hello World 출력까지 해보는 내용을 다루도록 하겠습니다.

1. 들어가며

프로그래밍 언어를 배울 때 첫 번째로 다루는 Hello World 를 출력하는 JAVA 프로그램을 만들어 보겠습니다. 대부분의 언어가 그렇지만 특히나 JAVA 는 무엇을 출력하는 프로그램을 할 줄 안다면 JAVA 의 절반 정보를 배운 것과 다름 없다고 생각합니다. 그 이유는 JDK 를 설치하고, 환경 변수를 세팅하고, IDE를 사용하지 않는 다면 터미널을 이용해 프로그램을 직접 실행하고 하는 과정에서 처음 해본다면 왜 시키는 대로 했는데 나는 안되는거지? 할 텐데 이러한 과정을 큰 무리 없이 어느 환경에서는 수월하게 앞선 과정을 진행하고 무엇이가를 출력하도록 한다면 그 이후의 과정은 손 쉽게 배우실 수 있기 때문입니다.

추가적으로 이번 포스팅도 wikidocs 를 참고하고 있는데 wikidocs 에서 처음 배우는 프로그래밍 언어로 JAVA 보다는 Python 이 좋다는 내용이 있었습니다. 하지만 이에 대해서 저는 조금 다른 의견이 있어 제 의견을 한 번 적어보도록 하겠습니다.

만약 여러분이 처음 배우는 언어로 JAVA 를 선택했다면 JAVA 보다는 C언어를 먼저 배우시는 걸 추천 드립니다. 다만 C언어는 클래스가 없고, 객체 지향적이지 않기 때문에 C언어 보다는 Python 이 낫지 않나요 하는 생각이 드실 수 있지만 제 개인적으로 Python 은 오히려 처음 배우는 언어로써는 그렇게 좋지 않다고 생각합니다. 그 이유로 저는 대부분의 사람은 쉬운길과 힘든길 중에 쉬운길을 먼저 경험해 버리면 힘든길은 왜 굳이 경험해야하지 하는 경향이 있다고 생각하는데 Python은 C 나 JAVA 처럼 데이터 타입을 선언해 주지 않아도 되고, 편리한 라이브러리들이 너무나 많기 때문에 대부분의 기능을 자신이 개발하지 않고 단순히 참조만 하게 됩니다. 그래서 Python 을 하다가 다른 언어를 하게 되면 이런 기능도 내가 개발해야 된다고? 느끼게 되면서 자연스레 Python 만 하게 될 것 같기 때문이죠 Python 에서도 데이터 타입을 지정해 줄 수 있는데요? 라고 하실 수 있지만 제가 알기론 대부분 Python 을 사용하는 사람들은 데이터 타입을 지정해 주지 않고, 그나마 Python 을 사용하는 회사에서는 코드를 나뿐만이 아니라 다른 사람도 같이 보기 때문에 좀 더 명확하게 구분하기 쉽도록 하기 위해서 데이터 타입을 주지 그게 아니라면 굳이 데이터 타입을 주지 않는다고 알고 있기 때문에 저는 처음 배우는 언어로 Python 은 좋지 않다고 생각이 듭니다. 그리고 C와 JAVA 의 경우 변수 선언, 반복문, 조건문 등 같은 것들이 많기 때문에 C를 배우고 JAVA 코드를 보면 그래도 오 내가 배운 것들이 있어서 어느 정도 읽을 수 있겠는데? 라는 느낌을 받을 수 있습니다. 그래도 C에는 객체지향이나 클래스 개념이 없어서 클래스나 객체지향 개념이 있는 Python 을 배우고 JAVA 를 배우는게 낫지 않나요 하실 수 있지만 Python 도 큰 프로젝트가 아니라 개인 공부를 하는 수준이거나 단순히 자료구조나 알고리즘만을 위해 사용하시는 거라면 굳이 클래스나 객체지향적으로 사용하지 않아도 무방하고, 또 클래스나 객체지향 개념을 모르시는 분이라면 어차피 Python 에서 클래스나 객체지향적인 코딩을 하기 위해서 공부를 해야 하기 때문에 JAVA 와 비슷한 C언어를 공부하고 JAVA 를 배우면서 클래스와 객체지향 개념을 배우는게 저는 좀 더 낫다고 생각합니다. 하지만 중요한건 그렇다고 해서 무조건 JAVA 가 처음 배우는 언어로 좋지 않은 것이 아닙니다. 아마 여러 언어들을 사용하시다 보면 아시겠지만 결국은 어느 언어나 대부분 큰 틀은 동일하기 때문에 무엇을 처음에 배워도 상관이 없습니다.

서론이 길었습니다. 그럼 이제 JAVA 프로그램을 실행하기 위한 과정을 알아보도록 하겠습니다.

2. JDK 설치하기

먼저 저의 여담을 살짝 곁들이자면 모든 언어는 시작 하기가 굉장히 어렵습니다만, 특히나 저는 JAVA 실행에 크게 애를 먹었던 기억이 납니다. C언어는 비쥬얼 스튜디오만 설치를 하면 환경변수 등을 내가 설정해 주지 않고 비쥬얼 스튜디오에서 기본적인걸 다 해줘서 파일 생성과 비쥬얼 스튜디오에서 코드 파일을 어떻게 실행할 수 있는 지만 안다면 첫 실행이 크게 어렵지는 않다고 생각됩니다. 그 다음으로는 Python 인데 지금은 모르겠지만 예전에는 Python 의 경우 윈도우에서는 실행하기가 굉장히 힘들었습니다만 Unix 기반에서는 굉장히 쉬운걸로 알고 있습니다. 단지 터미널을 열어 설치 명령어만 치고 python 을 실행해서 거기서 코드를 작성해서 바로 바로 결과를 볼 수 있기 때문이죠 하지만 JAVA 는 JDK 를 설치하고 또 윈도우에서는 시스템 설정에서 환경변수 설정에서 jdk 가 설치된 경로를 지정해 주어야 하는데 내부에 설치하는거면 또 C 드라이브 내부에 있는 jdk 경로를 또 찾아야 하고, 그게 아니라 portable 버전을 받으신거라면 또 portable 버전에 어떤 디렉토리를 환경변수를 설정해줘야 하는지 알아야 합니다. 그리고 환경변수 설정을 끝냈다고 해서 끝이 아닙니다 JAVA 를 유용하게 쓰기 위해선 IDE를 써야하는데 IDE 에서도 내가 설정한 환경변수에 있는 자바를 쓰도록 설정을 해줘야 합니다. 그렇지 않으면 IDE 내부에 있는 JDK 를 쓰게 될텐데 그렇게 되면 코드 작성을 하면서 없는 메소드라고 하거나 에러가 뜨거나 내가 설치한 JDK 랑 IDE 내부 JDK 랑 메소드 기능이 달라서 내가 참조한 코드대로 작성했음에도 예상한 결과 값과 다른 값이 나온다거나 하는 문제가 발생할 수 있습니다. 그래서 저도 대학에서 처음 JAVA 를 배울 때 저를 포함해 대부분의 수강생 들이 JAVA 실행이 안돼서 포기하는 사람들이 많았던 것으로 기억합니다.

그래도 처음이 힘들지만 하다보면 익숙해져서 나중에는 굳이 검색을 하지 않고도 자연스럽게 JDK 를 설치하고 환경변수를 잡아주고 IDE 설정도 쉽게 쉽게 하게 되실겁니다. 그래서 이를 위한 과정을 설명 드리도록 하겠습니다.

  • JAVA 컴파일에 대해

    javac 는 java compiler 의 줄임말입니다. 즉 java 파일을 컴파일 할 때 사용하는 것이 바로 javac.exe 파일입니다. 컴파일이란 것은 프로그래머가 작성한 코드를 컴퓨터가 이해할 수 있는 말(기계어)로 바꾸는 것인데, 모든 프로그래밍 언어에는 코드를 기계어로 번역해주는 프로그램인 컴파일러 또는 그와 비슷한 기능을 하는 것들이 있습니다.

    이를 java 파일과 함께 설명을 드리도록 하면, 만약 MyProgram.java 라는 java 파일을 작성했다면 프로그램이 정상으로 동작하는지 확인하기 위해서는 두 단계를 거쳐야 합니다. .java 파일을 .class 파일로 바꾸어 주는 컴파일 단계와 .class 파일을 실행하는 단계입니다. 이렇게 두 단계를 거치게 되면 java 파일을 실행할 수 있습니다.

    아래 그림을 통해 자바 프로그램을 작성하고 실행하는 과정을 좀 더 쉽게 이해하실 수 있습니다. 아래 그림에서 컴파일러는 javac.exe에, 자바 가상 머신(Java Virtual Machine, JVM)은 java.exe 에 해당합니다.

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

  • JDK 설치

    이번 포스팅에서는 윈도우를 기준으로 설명을 하도록 하겠습니다. 그리고 JAVA 버전은 8을 사용합니다. 그 이유는 JAVA 9버전 부터는 상업적으로 이용하기 위해서는 돈을 내야하기 때문에 대부분 기업에서는 JAVA8을 사용하고 있습니다. 그래서 우리는 JAVA8 사용에 익숙해지기 위해서 JAVA8을 사용합니다.

    1) JDK를 내려받을 수 있는 다음 URL에 접속 합니다 https://www.oracle.com/java/technologies/downloads/#java8 URL에 접속한 후 운영체제 선택 항목에서 Windows를 선택한 후 자신의 pc가 64비트인지 86비트인지 확인후에 x64 혹은 x86 중에 하나를 선택해 다운로드를 진행하니다. URL 접속이 안된다면 검색창에 JDK8 download 를 검색해서 다운로드 합니다.

    2) 다운로드 받은 exe 를 실행하고, 기본 옵션 값을 선택해서 설치를 마치게 되면 C:/program files/java 디렉토리에 설치가 됩니다.

    3) 환경변수 설정해 주기 나중에 JAVA 사용에 익숙해지면 굳이 환경변수 설정을 해주지 않아도 됩니다. 이번에 진행하는 환경변수 설정은 나의 pc의 환경변수로 JAVA 실행 디렉토리의 위치를 내가 직접 지정해주는 작업이고, 이 작업을 한 이후로 나의 pc는 JAVA 프로그램 실행 경로를 내가 지정한 디렉토리를 바라보게 될 것입니다. 나중에 JAVA 에 익숙해 지게 되면 굳이 해주지 않고 IDE 에서 지정해 주거나, 혹은 cmd, 터미널 등에서 내가 직접 실행에 필요한 환경변수를 지정해 줄 수 있기 때문입니다. 하지만 아직 이러한 작업들이 낯선분들은 그냥 한 번만 설정해주고 이후로는 건들이지 않아도 되도록 하기 위해 환경변수 설정 과정을 진행해 주시면 되겠습니다.

    1. java 가 설치된 곳의 경로 복사해 오기

      1) ~ 2) 과정으로 java 를 설치 했고, 환경변수 설정을 위해서는 java 가 설치된 디렉토리 정보가 필요합니다. 그래서 이 디렉토리 정보를 가져오는 방법에 대해서 알아보겠습니다.

      C:\Program Files\Java\jdk(version)\bin 경로로 들어갑니다. 그리고 아래 그림과 같이 진행합니다.

      빈 공간을 클릭하게 되면 이런식으로 경로가 선택되게 되는데 이것을 복사해 둡니다.

      윈도우키 + r 단축키로 실행창을 띄운다음 control system 을 입력해서 고급 시스템 설정창을 열 수 있는 창을 열어주고 고급 시스템 설정 창을 열어줍니다.

      환경변수 창을 열어줍니다.

      환경변수에는 사용자 변수와 시스템 변수가 있는데 사용자 변수는 내 컴퓨터에 계정이 여러개 있다면 각각의 계정에서 사용되는 변수로 지금 내가 로그인한 계정에만 적용하도록 하는 것이고 시스템 변수는 사용자와 무관하게 모두 적용하는 것으로 이번에는 사용자 변수에 적용하도록 하겠습니다.

      Path 에 복사해둔 디렉토리 정보 추가

      만약 사용자 변수에 Path 가 없다면 새로 만들기로 새로 추가를 해줍니다.

      JAVA_HOME 추, 변수 값에는 bin 이전 디렉토리를 넣어줍니다.

      환경변수 적용이 잘 되었는지 테스트 해 보기

      cmd 창을 열어 (윈도우키 + r 단축키를 눌러서 실행되는 창에서 cmd 를 입력하여 실행) java -version 혹은 javac -version 명령어를 입력해 아래 그림과 같이 나온다면 설정 성공

3. 인텔리제이 설치

JDK 설치와 환경변수 설정까지 성공했다면 JAVA 프로그램 작성을 도와주는 도구인 인텔리제이 (Intellij) 설치를 진행해 봅시다. 문서 작성을 도와주는 도구로 MS 워드나 한글이 있듯이 프로그래밍 언어로 프로그램을 작성할 때에도 도와주는 도구들이 있는데 이러한 도구들을 IDE (Intergrated Development Environment) 또는 통합 개발 환경이라고 합니다. JAVA 프로그래밍을 도와주는 IDE 중에서 가장 많이 사용되는 것으로 이클립스와 인텔리제이가 있는데 인텔리제이가 좀 더 무겁긴 하지만 제공해주는 기능도 많고 UI도 이쁘고 사용자 친화적이라 인텔리제이를 추천드립니다. 다만 인텔리제이를 이용해 웹 개발을 하신다면 따로 유료 버전을 구매를 진행하셔야 하며 웹 개발용 무료 IDE를 사용하고자 하신다면 STS 사용도 고려해볼만 합니다.

1) 다음 URL에 접속하여 Community 버전 인텔리제이 설치를 진행합니다. Community 버전은 무료 버전이라고 생각하시면 되겠습니다. https://www.jetbrains.com/ko-kr/idea/download/

설치 시 옵션들은 모두 미리 설정되어 있는 것으로 진행하시고, 동의를 구하는 팝업창에서는 동의를 하고 설치를 진행하시면 됩니다. 그리고 데이터 공유에 관한 팝업창에서는 내용을 읽어보시고 원하는 항목을 선택하시면 되겠습니다.

4. 인텔리제이를 이용해 java 실행해 보기

1) 인텔리제이를 실행해 새로운 프로젝트 생성

저는 wikidocs 를 참고해 Name 에 jump2java 로 하였습니다. Location 에는 원하시는 디렉토리를 선택해 주시고, Language 에는 Java 를 선택한 뒤 Create 버튼을 클릭하면 새로운 프로젝트가 생성됩니다.

2) HelloWorld.java 파일 생성

새로운 프로젝트를 생성한 뒤 아래 이미지와 같이 됩니다.

왼쪽 화면에서 src를 선택하고 마우스 오른쪽 클릭을 누른 뒤, New -> Java Class 순서로 클릭을 하면 New Java Class 창이 뜨는데 여기서 HelloWorld.java 를 입력한 뒤 java 파일을 생성해 줍니다.

3) main 메소드 추가해 주기

앞에서 생성한 HelloWorld 클래스를 실행해 봅시다. HelloWorld 클래스를 실행하려면 main 메소드를 작성해야 합니다. main 메소드는 프로젝트 내에서 해당 클래스를 실행하기 위한 메소드로 보통 테스트용으로 많이 사용됩니다.

  public class HelloWorld {
    public static void main(String[] args) {
      System.out.println("Hello World");
    }
  }

아직 배우지 않은 public, static, void, String[], args, System.out.println 이 등장했습니다. 가볍게만 알아봅시다.

  • public : 메소드의 접근 제어자로, 누구나 이 메소드에 접근할 수 있다는 의미입니다.
  • static : 메소드에 static이 지정되어 있으면 이 메소드는 인스턴스를 생성하지 않아도 실행할 수 있다는 것을 의미합니다.
  • void : 메소드의 반환값이 없음을 의미합니다. (void는 비었다는 의미입니다.)
  • String[] : String 은 문자열을 나타내는 자바의 자료형입니다. ([]는 값이 여러개로 이루어진 배열이라는 것을 의미합니다.)
  • args : String[] 자료형의 변수명입니다. main 에서는 파라매터로 받을 수 있도록 하는 것인데 이를 이용해 main 문 실행전에 실행에 필요한 파라매터를 주도록 할 수 있습니다.
  • System.out.println : 표준 출력으로 데이터를 보내는 자바의 내장 메소드로 출력하고자 하는 변수를 콘솔 화면에 출력해주도록 하는 메소드입니다.

JAVA 를 처음 배우시는 분이라면 여기까지 진행하시는데 진이 빠지실 겁니다. 왜냐하면 설치도 똑같이 따라 했는데 잘 안됐는데 단순히 출력하기 위해 저렇게 긴 메소드를 입력해 주어야 하고 JAVA 에 대해서 하나도 배운게 없는데 public, static, void, args, String[] 등이 나와서 더욱 더 머리가 아프실 겁니다. 왜냐하면 제가 처음에 그랬기 때문이죠

하지만 일단은 무시하고 넘어가고 당장은 main 은 public static void mian(String[] args) 이렇게 작성해 주어야 하는구나 하고 머리속에 일단 주입해 둡니다!

이제 main 메소드가 준비되었으므로 프로그램을 실행할 수 있습니다. Run -> Run -> HelloWolrd 순서로 선택하여 프로그램을 실행해 봅시다.

실행 결과는 인텔리제이 하단의 콘솔 창에 아래 이미지와 같이 표시 됩니다.

인텔리제이에서 작성한 JAVA 파일을 Run 명령으로 실행하면 .Class 파일을 만드는 컴파일 과정 (javac.exe)과 실행 과정(java.exe)이 자동으로 진행됩니다.

마치며

이번에는 JAVA 설치와 환경변수 설정, 인텔리제이 설치, 실제 JAVA 실행까지에 대해서 알아보았습니다. 대부분의 경우 설명대로 따라했음에도 한 번만에 제대로 되는 경우가 드물 것입니다. 그래도 포기하지 말고 다시 모든 과정을 천천히 보면서 하나 하나 따라해 가시는걸 추천드립니다.

아마도 다음 포스팅까지가 JAVA 의 개념적인 부분을 다루고 그 다음 포스팅 부터는 실제 자바 프로그래밍과 관련된 내용을 다룰 예정입니다.

보통은 개념을 알고 진행하는 것이 가장 좋습니다만 저도 그랬지만 아마도 여러분들도 정말 생소한 단어들과 개념이기 때문에 머리속에 확실히 들어오지 않을 것이라고 생각됩니다. 그래서 저도 대학에서 프로그래밍을 배울 때 교수님이 자 일단 개념은 조금 있다고 해도 되니까 자료에 있는대로 실행해 보고 잘 안되거나 모르겠으면 질문하세요 하는 시간부터 가진것이라 생각이 됩니다. 여러분들도 포기하지 말고 하시다 보면 익숙해져서 나중에는 자연스럽게 손가락이 움직이고 있는 자신을 경험하게 되실 겁니다.

이번 포스트도 읽어주셔서 감사드리며, 이해가 안가는 내용이나 질문 혹은 오타나 잘못된 내용이 있다면 댓글 남겨주시기 바랍니다.

참조

https://wikidocs.net/887 https://the-duchi.tistory.com/4

Tags:

Categories:

Updated:

Comments