티스토리 뷰
Q. 왜 자바는 JDK, JRE와 같은 것을 설치해야 하고, 자바스크립트는 설치가 필요없는걸까?
이것에 대해 이해하려면 일단 Java와 Javascript의 언어 차이를 이해해야 한다.
- 자바스크립트는 인터프리터 언어이고 자바는 컴파일 언어이다.
- 인터프리터 언어와 컴파일 언어의 차이는 무엇일까? "인터프리트"는 사전에 머신코드나 바이트코드로 변경하는 일 없이 "line by line"으로 읽고 실행한다는 뜻이다. "컴파일"은 런타임 전에 머신코드나 바이트코드로 변경하는 중간 스텝이 한번 더 추가되고, 이 컴파일된 코드를 머신이나 가상 머신이 실행한다.
- 자바스크립트의 런타임 환경은 웹 브라우저이다. 그리고 웹 브라우저 내에는 JS engine (e.g. 크롬 V8)이 내장되어 있다. 이 엔진이 자바스크립트 코드를 해석, 실행하므로 웹 브라우저가 있다면 별도로 자바스크립트를 다운로드할 필요가 없다.
- 컴파일 언어인 자바는 일단 프로그램을 실행하기 위해서는 사전에 컴파일을 해야하고, 이 컴파일을 해줄 컴파일러(javac)가 필요하다. JDK(Java Development Kit)은 컴파일러를 포함하고 있다. 또한 컴파일된 바이트코드를 JVM이라는 가상 머신 위에서 실행시키는데, 이 JVM을 포함하고 있는 것이 JRE(Java Runtime Environment)이다. 이 JVM이 os나 device에 맞게 해석, 실행하므로 java는 플랫폼 중립적으로 사용할 수 있다는 장점이 있다.
- 그래서 자바는 JDK, JRE 다운로드가 필요하다.
Caveats
- 보통 자바는 컴파일 언어, 자바스크립트는 인터프리터 언어라고 하기 때문에 그러면 자바스크립트는 컴파일을 안하고 자바는 인터프리트를 안하나? 이분법적으로 생각할 수도 있다. 하지만 그것은 전통적인 구분이고 현대에 와서는 자바스크립트도 자바도 JIT(Just in time) 컴파일러(런타임 컴파일러)를 사용한다. 자바는 jvm에서 바이트코드를 실행할 때 JIT compiler를 사용하거나 인터프리트하여 코드를 실행한다. JIT를 사용하는 이유는 그냥 인터프리트 하는 것보다 성능을 향상시킬 수 있기 때문이다.
- 그러므로 인터프리터 언어와 컴파일 언어 구분이 있다고 해서 이분법적으로 해석해서는 안되고, 그 둘의 메인 차이점은 런타임 전에 코드를 컴파일 하는 단계가 있느냐 없느냐 로 봐야한다.
'Java' 카테고리의 다른 글
머징 과정의 Conflict 해결 (0) | 2019.07.15 |
---|---|
java.lang.ClassNotFoundException (0) | 2019.07.12 |
Spring MVC 예제 - 1 (0) | 2019.07.02 |
[Spring] 예제 코드로 시작하기 (0) | 2019.06.28 |
[Servlet] Session 객체 사용하기 (0) | 2019.06.18 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 리덕스
- Prefix Sums
- this
- SQL
- Redux
- til
- Data Structure
- rxjs
- JavaScript
- c언어
- Session
- Java
- getter
- useEffect
- 알고리즘
- package.json
- 개발 공부
- 깃
- youtube data api
- 자바
- 인스턴스
- 제네릭스
- oracle
- Conflict
- 포인터 변수
- GIT
- linkedlist
- react
- jQuery
- CSS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함