티스토리 뷰
자바는 자바가상머신이라는 것을 사용한다.
자바는 작성된 프로그램을 한번 컴파일 한뒤 인터프리터 방식으로 실행하게끔 설계되어있다.
자바 프로그램의 실행 순서는 다음과 같다.
자바로 작성된 프로그램 -> 바이트 코드 -> 인터프리터 방식으로 바이트 코드를 한줄한줄 해석하면서 실행
즉 자바 프로그램은 한번 컴파일 할때 자바 가상 머신이 해석할 수 있는 형태인 바이트 코드로 변형이 되고
그 바이트 코드를 자바 가상머신이 한줄한줄 해석하면서(인터프리터방식) 실행시키는 방식으로 진행이 된다.
그렇기 때문에 자바 가상 머신만 있다면
운영체제나 cpu에 종속적이지 않고 자바로 된 프로그램을 한번 작성하면 어떤 플랫폼에서든지 그 프로그램을 실행 시킬수 있다는 장점이 있다.
(c나 c++같은 경우 cpu나 운영체제가 달라지면 같은 프로그램도 안돌아 가는 경우가 발생할 수 있음)
자바 소스 프로그램을 바이트 코드로 만들고 그 바이트 코드는 클래스(.class) 파일에 저장된다.
이 클래스파일을 자바 가상 머신에게 전달하면 이 머신이 알아서 현재 실행 되고 있는 컴퓨터의
운영체제/cpu에 맞게 동작하게끔 도와준다.
자바와 c/c++비교
자바프로그램을 컴파일하면 바이트코드로 구성된 .class파일이 생성되는 반면에 c/c++파일을 컴파일하게 되면 바로 실행 가능한 실행 파일이 생성 된다.
class파일은 한번 컴파일하면 어떤 컴퓨터에서든지 동작하지만 c/c++파일을 컴파일한 실행 파일은 운영체제나 cpu에 종속적이므로 이 컴퓨터에서 컴파일한 c/c++코드는 다른 컴퓨터에서 실행이 불가할 수 있고 다시 컴파일을 해야한다.
애초에 c/c++파일을 컴파일할때 운영체제/cpu에 맞게끔 컴파일이 되기 때문이다.
'컴퓨터 공학과 졸업 > 객체지향' 카테고리의 다른 글
객체 지향의 4대 특징 (1) | 2018.07.27 |
---|---|
클래스와 객체의 관계 (1) | 2018.07.27 |
다형성이란 (0) | 2018.01.22 |
추상 클래스와 인터페이스 (0) | 2018.01.22 |
c++ 업캐스팅과 다운캐스팅 (2) | 2018.01.16 |
- Total
- Today
- Yesterday
- hydrate
- typescript
- type alias
- javascript
- useRef
- react hooks
- storybook
- await
- reflow
- webpack
- reactdom
- atomic design
- Polyfill
- Babel
- useEffect
- design system
- mobx
- return type
- es6
- state
- promise
- Action
- server side rendering
- react
- async
- rendering scope
- Next.js
- computed
- props
- reducer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |