当前位置:首页 » 编程软件 » 编译器jvm

编译器jvm

发布时间: 2022-02-16 13:16:59

java编译器,解释器,JVM的关系和定义

编译器负责把Java程序转成Class文件,方便Jvm来读取它.Jvm是java虚拟机,其实它就是解释器,把Class文件中的命令转成某种平台的命令,比如把Java命令转成Windows下的命令,然后Java程序就执行了.

❷ 如何实现一个能在jvm上运行的语言的编译器

可以理解为用java语言写一个编译器(运行在jvm上),然后用

javaXXLanguage

运行吧(还是说你要用JRuby,Jython实现?都是运行在jvm上的),

你可以试试

  1. antlr,教程可以参考<编程语言实现模式>

  2. <两周自制脚本语言>

  3. "龙书"的前端也是用java写的,书最后有java代码

❸ 写个编译器,把C++代码编译到JVM的字节码可不可行

Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。平台无关有两种:源代码级和目标代码级。C和C++具有一定程度的源代码级平台无关,表明用C或C++写的应用程序不用修改只需重新编译就可以在不同平台上运行。

Java主要靠Java虚拟机(JVM)在目标码级实现平台无关性。JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈、寄存器组等。但JVM通常是在软件上而不是在硬件上实现。(目前,SUN系统公司已经设计实现了Java芯片,主要使用在网络计算机NC上。另外,Java芯片的出现也会使Java更容易嵌入到家用电器中。)JVM是Java平台无关的基础,在JVM上,有一个Java解释器用来解释Java编译器编译后的程序。Java编程人员在编写完软件后,通过Java编译器将Java源程序编译为JVM的字节代码。任何一台机器只要配备了Java解释器,就可以运行这个程序,而不管这种字节码是在何种平台上生成的(过程如图1所示)。另外,Java采用的是基于IEEE标准的数据类型。通过JVM保证数据类型的一致性,也确保了Java的平台无关性。

❹ java编译器和JVM有什么区别

java编译器把java源码编译成字节码 (.class文件).
jvm是在运行期将class文件编译成机器码文件.供程序运行.

❺ “java编译器”和“JVM”有什么区别

java编译器把java源码编译成字节码
(.class文件).
jvm是在运行期将class文件编译成机器码文件.供程序运行.

❻ 关于JVM和编译器

编译为字节码的JAVA程序可以直接在JVM上运行,无需再次编译.

C程序必须在不同的平台重新编译,并且可能需要依据不同的系统修改程序中用到的数据类型.

❼ java编译器和java虚拟机的关系

java编译器是开发java程序用的
java虚拟机是java跨平台的解释java程序和运行java程序用的

❽ java中eclipse,jdk,jvm,jre,编译器的区别

JVM就是常说的java虚拟机,它是整个java实现跨平台的 最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可 以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解 释给本地系统执行。

  1. JVM 是 Java 平台的基础,和实际的机器一样,它也有自己的指令集,并且在运行 时操作不同的内存区域。 JVM 通过抽象操作系统和 CPU 结构,提供了一种与平台无关的代码执行方法,即与特殊的实现方 法、主机硬件、主机操作系统无关。但是在一些小的方面, JVM 的实现也是互不相同的,比如垃圾回收 算法,线程调度算法(可能不同 OS 有不同的实现)。JVM 的主要工作是解释自己的指令集(即字节码)到 CPU 的指令集或 OS 的系统调用,保护用户免被恶意程序骚扰。 JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的类文件( class file )。类文件的 组成包括 JVM 指令集,符号表以及一些补助信息。



JRE是指java运行环境。光有JVM还不能成class的 执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。 在JDK的安装目 录里你可以找到jre目录,里面有两个文件夹bin和lib,在 这里可以认为bin里的就是jvm,lib中则是jvm工 作所需要的类库,而jvm和 lib和起来就称为jre。所以,在你写完java程序编译成.class之后,你可以把这个.class文件 和jre一起打包发给朋友,这样你的朋友就 可以运行你写程序了。(jre里有运行.class的java.exe)

  1. JRE 是 Sun 公司发布的一个更大的系统,它里面就有一个 JVM 。 JRE 就与具体的 CPU 结构和操作系统有关,我们从 Sun 下载 JRE 的时候就看到了不同的各种版本。同 JVM 一起组成 JRE 的还有一些 API (如 awt , swing 等)。 JRE 是运行 Java 程序必不可少的。

  2. JRE ( Java Runtime Environment ),是运行 Java 程序必不可少的(除非用其他一些编译环境编译成.exe可执行文件……),JRE的 地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮 我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。

  3. JRE里面有一个 JVM , JRE 与具体的 CPU 结构和操作系统有关,我们从 Sun 下载 JRE 的时候就看到了不同的各种版本,,同 JVM 一起组成 JRE 的还有 一些 API (如 awt , swing 等), JRE 是 运行 Java 程序必不可少的.

JDK是java开发工具包,基本上每个学java的人都会先在机器 上装一个JDK,那他都包含哪几部分呢?让我们看一下JDK的安装目录。在目录下面有 六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的 是以下四个文件夹:bin、include、lib、 jre。现在可以看出这样一个关系,JDK包含JRE,而JRE包 含JVM。

    1. bin:最主要的是编译器(javac.exe)

    2. include:java和JVM交互用的头文件

    3. lib:类库

    4. jre:java运行环境

      (注意:这里的bin、lib文件夹和jre里的bin、lib是 不同的)总的来说JDK是用于java程序的开发,而jre则 是只能运行class而没有编译的功能,eclipse、idea等 其他IDE有自己的编译器而不是用JDK bin目录中自带的,所以在安装时你会发现他们只要求选中jre路径就ok了。

三者联系:

  1. Java 喊出的带有标志性的口号“ Write Once , Run Anywhere (一次编写,到处运行)”,正是建立在 JRE 的基础之上。何以实现?就是在 Java 应用程序和操作系统之间增加了一虚拟层—— JRE 。

  2. 程序源代码不是直 接编译、链接成机器代码,而是先转化到字节码( bytecode ) 这种特殊的中间形式,字节码再转换成机器码或系统调用。前者是传统的编译方法,生成的机器代码就不可避免地跟特殊的操作系统和特殊的机器结构相关。而 Java 程序的字节码文件可以放到任意装有 JRE 的计算机运行,再由不同 JRE 的将它们转化成相应的机器代码,这就实现了 Java 程序的可移植性。这样程序员也不用去 关心程序运行的具体环境,而可以专心编写软件。这种分层抽象、隐藏细节的思想在计算机科学中处处可见,比如机器组织结构的设计、网络协议的实现等。 Pascal 语言的发明者 Niklaus Wirth ,就富有预见性地指出应该有这样一种可移植的语言,其生成的中间代码可以在一台假想的机器( a hypothetical machine )上运行。

  3. 而 Java 虚拟机( Java virtual machine 或 JVM )就是这样的一台机器,它模拟实际处理器的结构,解释字节码。 怎么一会说是 JRE ,一会儿又成了 JVM ,两者是否同物不同名? 回答是否定的。

  4. JRE的地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮 我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。

  5. 要运行Applet,在客户端必须安装有 JRE,即“运行时”,容易一点理解,就象所谓的“插件”,要开发JAVA应用程序Web应用,就必须在服务器端安装相应的 JVM+JDK 了(开发应用 Java web应用 时,客户端不需要安装任何的JVM)如果使用JAVA开发应用,就需要安装 JRE+JDK,就是 J2SE. 。如果在客户端运行Applet,客户端浏览器必须嵌有JAVA JVM,如果没有,就需要安装,即: 在客户端创建JRE(运行时,包含JVM),而客户端是不需要做开发的,所以,JDK就没有必要安装 了。不同版本的Applet在不同的JVM下可能无法正常运行,而Microsoft JVM只是Sun JVM的“低版本”,微软在windows xp/2003中干脆将JVM去掉了.

❾ jdk中有编译器,解释器,jvm,那么它们是如何配合工作的呢

Java源代码---->编译器---->Java字节码(即虚拟指令)---->jvm---->解释器----->二进制机器码

❿ 编译器 JVM JDK JRE JSE是什么 关系都有什么用,都怎么样工作的

java是面向对象编程,一切皆对象。这个观念要以后慢慢才能了解,无论怎么样讲都是初学者理解不了的。所以还需要多多练习。
C语言是面向过程编程的。所以没有“类”的概念,而java的类却更符合人类的思维方式,C语言更符合机器的思维方式。

还有就是,千万不要把C语言的一些概念和java混淆,这是两种不同类型的语言,java是纯的面向对像的编程语言,而C是面向过程的。以后的学习中你会发现java比C更有优势。再重申一下,最好不要把C的概念和java做对比。你把java当作一门新的语言来学。 唯一可以借鉴C的就是语法和编程的一些基本概念如数据类型,设计模式之类的。

jvm 是java虚拟机,将java的class字节码文件翻译成二进制可执行程序。
jdk 是java的开发包 java sdk, java的开发工具,包含SUN公司提供的java API,将java源码编译为class字节码文件,通常jdk中就包含了jre。
jre 是java运行时,用于执行java程序。
jse 是java标准开发,jse 就是java开发的一种,标准开发,例如开发桌面程序。

其余的还有 javaEE, javaMe 前者是java的企业应用,后者是java的嵌入式开发,例如java手机程序。

如果netbeans能运行,说明你安装的netbeans已经包含了JDK,而jdk里已经包含了jre和jvm,故以后就可以省心了,至于环境变量的事情,你可以去搜索一下,很简单的配置,有个好消息告诉你,如果你是按照安装向导操作的,向导会自动将环境变量写进去。

java基础类库就是API,而你说的“库”我不太明白是什么意思。

jdk是开发工具包,里面包含 javaSE, JRE, JVM
jdk 把.java文件编译成为.class字节码文件
然后JRE调用JVM将字节码文件翻译成可供机器执行的程序。就这样了啊。

最后说一句: 不推荐使用Netbeans, 现在公司里都用Eclipse,这才是趋势。

************************************8
继续补充
angelicdemon 所说的没错,IDE环境会在配置文件里自己写上jdk和jre的路径以便找到他们。
但是经过安装向导安装jdk后确实会自动将java所需要的环境变量写进系统环境变量中。再有,如果使用IDE的话 环境变量没啥用处,只有用命令行模式编译java源码才会有用处。

另外: Eclipse绝对是现在公司的首选,因为公司里的项目用ECLIPSE构建的,源码上传到版本控制系统后,同步后,你用Netbeans打不开,还得重新构建,麻烦吗? 再说了NB和EC还是有相当大区别的。
还有就是,这句话最重要,如果你真的是java初学者,绝对不要用IDE,用记事本+命令行 这样才能真正掌握java的机理。 哈哈 累死我了,就写到这吧
angelicdemon 看来也和这贴干上了。
一会儿这贴成论文贴了
***********************************

以上回答可能有错误,要参考其他人的答案。

热点内容
电脑怎么查卡配置 发布:2025-01-14 20:01:29 浏览:27
手机怎么控制服务器 发布:2025-01-14 19:58:46 浏览:307
php难招 发布:2025-01-14 19:06:07 浏览:489
sublime编译php 发布:2025-01-14 18:57:16 浏览:307
云计算服务器是什么 发布:2025-01-14 18:56:22 浏览:44
vip域名查询ftp 发布:2025-01-14 18:46:48 浏览:116
格式化linux 发布:2025-01-14 18:35:14 浏览:595
如何进入安卓原生市场 发布:2025-01-14 18:22:06 浏览:560
台式电脑找不到服务器 发布:2025-01-14 18:19:58 浏览:423
androidsdk网盘 发布:2025-01-14 18:17:43 浏览:82