Programing/JAVA

자바가상머신(JVM) 및 바이트 코드 설명

Dongkkase 2008. 12. 6. 20:47
반응형
java : 썬 마이크로 시스템즈사에서 개발한 객체 지향 프로그래밍

JVM(java Virtual Machine) : 자바 가상머신

Bytecode : 자바소스(~.java) --> 컴파일(~.class)
                                                 ==>실행 파일을 bytecode로 변환
───────────────────────────────────────────────────────                          
Java Vritual Machine
컴패티빌리티 : 환경이 바뀌어도 실행할수 있다.

예 )int c = 10 + 20;


C의 경우
                    컴파일
~.C(소스)────────>~.exe<─────────특정OS, 특정cpu 에서 실행
              ────────>~.out
                 기계어코드
*C언어는 소스레벨에서 컴패티빌리티는 되지만 실행레벨에서는 컴패티빌리티를 제공하지 않는다.(즉 환경이 바뀌면 다시 컴파일 해야한다.)
───────────────────────────────────────────────────────
Java의 경우
                컴파일
~.java──────────>~.class<─────JVM<─────특정OS, 특정 CPU에서 실행
                기계어,실행파일
*실행레벨에서 컴패티빌리티를 제공한다.
즉 플랫폼(OS, cpu)-winCE, 핸드폰, 냉장고..등 플랫폼이 아무리 바뀌어도
해당 바이트 코드를 실행할수 있는 JVM만 제공된다면
환경이 바뀌어도 실행파일을 실행 할 수 있다.

Applet (웹 브라우저 안에서 실행가능한 자바코드)
클라이언트에 JVM만 설치되어 있다면 어떤 OS, 어떤 cpu든지 배포하는 입장에서는 클라이언트 환경생각안하고 프로그램 배포 가능.

우리가 자바 코드를 작성하면 ~.class 라는 파일이 생긴다. 자바가상머신 JVM, cpu가 처리를 한다.
자바가상 머신은 우리의 실제 머신이 실행하는 거고 한번 걸러서 실행하는 것이기 때문에 실행레벨에서 컴패티빌리티, 윤통성이 그만큼 크다.
이를 전부 말해서 Java가 플렛폼에 독립적이다라고 할 수 있다.(쉽게 말해 환경을 따지지 않는다)

반응형