Java의 탄생과 JVM

로롱이·2022년 8월 23일
0

Java의 탄생 배경

다양한 기종, 다양한 플랫폼에 종속되지 않는 언어를 만들기 위해 Java를 만들었다.

초기 Java 개발자들은 유닉스 기반(c,c++)의 지식을 가지고 있었다. Java 개발자들의 팀 리더는 제임스 고슬링이다.

Java 개발자들은 c/c++스타일의 언어와 가상 머신을 구현하는 것이었다. 즉 c/c++의 장점을 도입하고 단점은 보완한 언어로 개발되었고, 오크(Oak)라는 언어가 그 시초다.

오크(Oak)

오크라는 이름은 제임스 고슬링이 사무실 밖에 있던 오크 나무를 따다 오크라고 지었다.
원래 Oak는 소형기기에 사용될 목적으로 만들었다.
하지만 1990년도에 인터넷이 등장했고 운영체제에 독립적인 Oak는 이러한 환경에서 적합한 언어였다.

이에 개발 방향을 바꾸어 탄생한 것이 Java다.

Applet

Applet은 정적인 웹페이지에 멀티미디어적인 요소들을 제공할 수 있는 유일한 방법이었기 때문에 많은 인기과 유저를 가질 수 있었다.

Servlet, JSP

그러나 보안상 이유로 Applet에 대한 최신 웹브라우저의 지원이 사라졌고, Servlet, JSP와 같은 서버 프로그래밍 분야에서 많이 사용되고 있다.

WORA

WORA - Write Once Run Anywhere
즉 이들의 목표는 한 번 쓰고 어느 곳에도 실행하는 것이다.
그것이 'WORA'다. Java는 WORA와 같은 철학을 가지고 있다.

c++ 컴파일러

c++은 타겟 플랫폼에 종속적이다.
즉 윈도우 환경에서 컴파일한 경우 윈도우에서만 프로그램이 실행된다.

윈도우에서 작성한 코드를 크로스 플랫폼을 통해 다른 플랫폼에서 작동하게 할 수는 있다.

그치만 근본적인 해결법은 아닌것 같다.

Java, JVM

c++의 단점을 보완하고, 플랫폼에 독립적인 환경을 만들기위해 Java와 JVM이 나오게되었다.

위키백과
Java의 탄생배경1
Java의 탄생배경2

JVM이란?

  • Java Virtual Machine의 줄임말

자바를 실행하기 위한 가상 컴퓨터이다.
Java는 OS에 종속적이지 않다는 특징을 가지고 있다.

Linux에서 컴파일한 바이트코드를 Windows 환경에서 실행시킬 수 있다.

Java의 실행 과정

  1. 프로그램이 실행되면 JVM은 OS(타겟 플랫폼)로부터 이 프로그램이 필요로 하는 메모리를 할당받는다.
  2. JVM은 OS로부터 할당받은 메모리를 용도에 따라 여러 영역으로 나누어 관리한다.
  3. 자바 컴파일러(javac)가 자바 소스코드(.java)를 읽어들여 자바 바이트코드(.class)로 변환시킨다.
  4. Class Loader를 통해 JVM 내로 클래스 파일을 로드하고, 링크를 통해 배치하는 작업을 수행 후 초기화를 진행한다.
  5. 클래스 파일이 로딩이 완료되면 Runtime Data Area의 Method Area에 클래스 파일은 올려놓는다.
  6. Excution Engine이 Runtime Data Area에 배치된 바이트 코드들을 명령어 단위로 읽는다.

JVM 구조

JVM1
JVM2
JVM3
강의1
강의2

profile
모두 화이팅!

0개의 댓글

관련 채용 정보