Java

Q. Java라는 언어란 무엇인가?

자바의 탄생은 가전제품(밥통..?)의 통일화를 위해서 등장했다. 기존의 언어들은 운영체제(Mac, Windows, Linux 등)에 동작 방식이 모두 달라 하나의 프로그램을 만들더라도 각 운영체제, 플랫폼에 호환이 되는 언어를 만들어야 하는 불편함이 있었습니다. 이러한 문제를 해결하기 위해 등장한 언어인 Java는 말 그대로 '플랫폼에 독립적'입니다. 이 외에도 객체지향 프로그래밍 언어로 캡슐화, 상속, 다형성을 가지고 있는 특징을 지니고 있습니다. 마지막으로 자동으로 메모리를 관리해주는 GC(Garbage Collection) 기능도 있습니다.

Q. 그렇다면, 플랫폼 독립적일 수 있는 이유는 무엇인가요?

자바는 JVM 이라고 불리는 자바 가상 머신(Java Virtual Machine) 위에서 돌아갑니다. 다른 언어같은 경우에는 직접 OS에게 명령을 내렸던 것과 다르게, 자바는 JVM에게 명령을 내리게 됩니다. 즉, 중간 매개채 역할을 통해 통역사처럼 어떤 운영체제든 프로그램을 실행하게 할 수 있는 것입니다. 이러한 특징은 자바의 표어인 Write Once, Run Anywhere 를 잘 보여줍니다.

여기서 주의해야하는 것은 Java는 플랫폼 독립적이지만, JVM은 플랫폼에 종속적이라는 점!

JDK(JRE, JVM)은 운영체제에 맞게 설치를 해줘야한다는 점을 생각하자.

Q. Java Application의 실행 과정은 어떻게 되나요?

  1. Java File(*.java) 을 자바 컴파일러(javac)를 통해 컴파일을 하게 됩니다.

  2. 컴파일을 통해 바이트코드(*.class)가 생성됩니다.

    1. JVM이 이해할 수 있는 코드가 바이트코드인 것이다.

  3. 해당 바이트코드를 기반으로 Class Loader가 JVM 메모리 영역에 클래스, static 영역 정보 등을 로드합니다.

  4. 마지막으로 실행 엔진(Execution Engine)을 통해 실행하게 됩니다.

Last updated