JS Star 블로그

기억보다는 기록을✏️ 머신러닝, 웹개발, 물리학을 공부했고 계속 배워가고 있습니다.
📌 기존에 포스팅하던 블로그에서 포스트를 옮기는 중입니다.

자바 시작하기

30 Nov 2020 » java

자바 시작하기

자바 (java) 는 오래된 역사를 지니고 있고 기업 및 정부에서 범용적으로 사용되는 언어이다. 시스템 유지 보수에 유리한 객체지향 언어이기 때문에 다양한 분야에서 사용되고 있지만 진입장벽이 높은 언어이다. 그렇기 때문에 프로그램을 처음 접하는 사람이 자바로 시작하는 것은 다소 무리가 있을 수 있다.

자바 버전

앞서 말한 바와 같이 다양한 곳에서 사용하는 언어인 만큼 다양한 버전이 있다. 자바 언어를 작성하고 컴파일하며 개발하기 위해서 개발환경의 묶음이 필요한데, 기본적인 구성만 살펴보자.

  • Java SE (Standard Edition) : 자바의 표준안. 자바가 어떤 문법을 가져야 하고 어떤 구조로 되어 있는지 정의 (설계도와 같은 개념). 현재 Java SE 7 버전.
  • JDK (Java Development Kit) : 자바 개발을 위한 필수적인 도구들. 코드를 컴파일하는 컴파일러, 개발을 위한 툴을 포함한다.
  • JRE (Java Runtime Environment) : 자바가 실제로 동작하는 데에 필요한 JVM, 라이브러리, 파일들이 포함되어 있다. JDK을 설치하면 JRE을 설치할 필요가 없다.
  • JVM (Java Virtual Machine) : JVM을 사용하면 어떤 운영체제를 사용하던 상관 없이 자바를 위한 환경에서 구동된다. 자바가 호환성이 좋은 이유이다.
distribution
자바를 개발하려면 이러한 묶음이 필요하다

자바는 컴파일 언어인터프리터 언어 의 사이에 있다. 컴파일 언어는 플랫폼 의존적이라 환경에 따라 컴파일을 다시 해야한다. (윈도우, 리눅스, 맥 모두 각자 다른 기계어를 사용하기 때문!) 하지만 인터프리터는 호환성이 좋다. 어디서든 코드만 짜놓으면 실행을 할 수 있다.

다시 돌아가서, 자바가 이 두 방식의 사이에 있는 이유는 JAVAC 라는 컴파일러를 통해 Byte Code 로 번역해놓기 때문이다. 이는 실행파일 직전의 기계어의 형태이다. 그리고 앞서 설명했던 JVM 이 이 byte code를 환경에 맞게로 번역하여 실행한다. 컴파일을 하면서도 환경에 맞게 자동으로 컴파일을 하므로 두 가지 역할을 모두 한다고 볼 수 있다.

컴파일 언어 (Copilation)은 C, C++, Go… 등이 있다. 소스코드를 기계어로 번역하는 컴파일의 과정이 필요하다. 인터프리터 언어 (Interpretation)은 Python, PHP, Javascript… 등이 있다. 프로그램을 실행하면 인터프리터가 실시간으로 기계어로 번역하고 전달한다.

자바 설치하기

나는 맥을 사용하기 때문에 JDK를 따로 설치할 필요가 없다. 맥북을 사야할 이유가 또 생겼다! 기본적으로 OSX에 JDK (글을 작성하는 시점에는 JDK 8)가 설치되어 있기 때문이다. 버전을 확인해보자.

$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

자바의 버전인 1.8 이 나오고 JRE의 버전이 나오는 것을 보니 위에 언급한 대로 JDK을 설치하면 JRE는 따로 설치할 필요가 없다는 것이다.

소스코드 컴파일

소스코드를 만들어서 컴파일해보자. 일단 편집기를 설치하지 않았으므로 vi로 helloworld.java 파일을 만들어보자.

class Helloworld {
  public static void main(String[] args){
    System.out.println("Hello world!")
  }
}

파일을 저장하고 다시 bash 창으로 돌아와 컴파일을 해보자. 컴파일은 javac 를 통해 한다.

$ javac helloworld.java

성공적으로 컴파일이 되면 helloworld.class 라는 파일이 만들어진다. 이 파일이 byte code 이다.

실행

Byte code를 JVM 을 통해 실행하면 환경에 맞게 번역하여 실행한다.

$ java Helloworld
Hello world!

뒤에 .class 는 생략한다.

Related Posts