Java 컴파일러와 JVM은 어떤 언어로 작성됩니까?
Java 컴파일러는 어떤 언어에서 사용됩니까?javac및 , JVM 。java타터터 츠요시
질문의 정확한 표현은 약간 오해의 소지가 있습니다.여러 JVM 벤더(jrockit은 1개, IBM은 1개)와 여러 컴파일러가 있기 때문에 "JVM"이나 "컴파일러"가 아닙니다.
Sun JVM은 다음과 같이 기술되어 있습니다.
C단, 이는 필수는 아닙니다.JVM은 사용하시는 머신에서 동작하고 있기 때문에 플랫폼에 의존한 실행 파일이기 때문에 원래 어떤 언어로도 작성되어 있을 수 있습니다.예를 들어 원래 IBM JVM은 Smalltalk로 작성되었습니다.라이브러리Java)
java.lang,java.utiletc(Java API) 자체는 Java로 작성되지만 메서드는 다음과 같이 표시됩니다.native있을 입니다.C★★★★★★★★★★★★★★★★★」C++.Sun에서 제공하는 Java 컴파일러도 Java로 작성되어 있다고 생각합니다.(하지만 여러 컴파일러가 있습니다)
최초의 자바 컴파일러는 Sun Microsystems에 의해 개발되었으며 C++의 라이브러리를 사용하여 C로 작성되었다.현재 Java 컴파일러는 Java로 작성되며 JRE는 C로 작성됩니다.
Java 컴파일러가 Java에서 어떻게 작성되었는지 짐작할 수 있습니다.
Java 컴파일러는 Java 프로그램으로 작성된 후 C(최초의 Java 컴파일러)로 작성된 Java 컴파일러로 컴파일됩니다.따라서 새로 컴파일된 Java 컴파일러(Java로 작성)를 사용하여 Java 프로그램을 컴파일할 수 있습니다.
Java Docs에서
컴파일러는 Java로 작성되며 런타임은 ANSI C로 작성됩니다.
실제로 Oracle JVM은 C가 아닌 C++로 작성됩니다.
HotSpot JVM 코드(http://openjdk.java.net/groups/hotspot/를 참조하십시오.
원칙적으로 거의 모든 것, 보통 C
이 링크는 질문에 대한 답변입니다.
컴파일러는 Java로 작성되어 있는 것 같습니다만, 런타임은 ANSI C로 작성되어 있습니다.
- Java가 Sun Microsystem에 의해 도입되었을 때 Java 컴파일러는 C++의 라이브러리를 사용하여 C로 작성되었습니다.
- 컴파일러 설계에는 Bootstraping이라는 개념이 있습니다.주로 컴파일러 개발에서 사용됩니다.Bootstraping은 컴파일러가 컴파일하려는 소스 프로그래밍 언어로 컴파일러(또는 어셈블리러)를 작성하는 프로세스입니다.셀프호스팅 컴파일러를 작성하기 위해 사용됩니다.새로운 프로그래밍 언어용 컴파일러의 개발은 처음에 기존 언어로 개발되었으며, 그 후 새로운 언어로 다시 쓰여지고 자체적으로 컴파일되었습니다.그것이 오늘날 자바 컴파일러가 자바 자체로 작성되는 이유이다.
- Java 가상 머신: Java 가상 머신은 추상 머신입니다.실제 컴퓨팅 머신처럼 명령어 세트를 가지고 런타임의 다양한 메모리 영역을 조작합니다.일반적으로 JVM은 바이트 코드를 기계 코드로 해석합니다.
(자세한 것에 대하여는, 다음의 링크를 참조해 주세요.https://docs.oracle.com/javase/specs/jvms/se7/html/)
Jikes RVM은 연구 목적으로 광범위하게 사용되는 자가 호스팅 JVM으로 Java로 작성되어 있습니다.데스크톱에서 실행되는 것은 아니지만, "이제 언어의 일반적인 힘을 뽐내자"는 목록에 올라 있습니다.
Sun에서 제공하는 핫스팟 JVM을 말하는 경우 C++로 작성됩니다.Java용 다양한 가상 시스템에 대한 자세한 내용은 이 링크를 참조하십시오. javac은 대부분의 Java 컴파일러와 마찬가지로 Java로 작성됩니다.
언급URL : https://stackoverflow.com/questions/1220914/in-which-language-are-the-java-compiler-and-jvm-written
'programing' 카테고리의 다른 글
| axios/larabel/formdata 게시 요청이 비어 있습니다. (0) | 2022.08.14 |
|---|---|
| Java List.add() 지원되지 않는 조작예외. (0) | 2022.08.14 |
| Java를 사용한 두 날짜 사이의 일 수 계산 (0) | 2022.08.14 |
| 백엔드에서 페이지화된 데이터의 컨텍스트에서 Vuex의 사용 (0) | 2022.08.14 |
| C/C++ int[] vs int*(포인트 vs. 어레이 표기).뭐가 다른데? (0) | 2022.08.14 |