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

编译jvm

发布时间: 2023-03-25 03:06:33

⑴ 写个编译器,把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 编译成c++

Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

C++都会考虑下是不是影响整体性能,C/C++是名副其实的编程语言的统治者,后来随着科技的进步,主要是硬件的发展,硬件的性能越来越强,在板卡上运行java程序都不觉得卡段的时代来临。

最主要是随着软件这些年的发展,很多基础领域的事情已经完善,在很多类库或者板块上都已经有了成熟的方案,所以促进了各种应用级的开发,能够快速开发应用高级语言相比C/C++就有了非常大的优势了。

与C语言

汇编语言是低级语言,能够直接操作硬件,并且生成机器码的效率高。但汇编对平台的依赖性强,可移植性差,开发效率低。而C语言则处于二者之间,移植性比较好,代码效率也比较高,可以对部分硬件直接访问。开发效率较高。写得好的C代码,可移植性是很好的,很多时候都不用修改或者只做少量修改。

⑶ JVM的组成和运行原理是什么

JVM是Java Virtual Machine(Java虚拟机)的缩写。

1、JVM的组成:

JVM 由类加载器子系统、运行时数据区、执行引擎以及本地方法接口组成。

2、JVM的运行原理:

JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种基于下层的操作系统和硬件平台并利用软件方法来实现的抽象的计算机,可以在上面执行java的字节码程序。java编译器只需面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译器,编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。

⑷ 简述JAVA程序的编辑编译和运行过程

第一步(编译): 创建完源文件之后,程序会先被编译为.class文件。Java编译一个类时,如果这个类所依赖的类还没有被编译,编译器就会先编译这个被依赖的类,然后引用,否则直接引用,这个有点象make。

如果java编译器在指定目录下找不到该类所其依赖的类的.class文件或者.java源文件的话,编译器话报“cant find symbol”的错误。

第二步(运行):java类运行的过程大概可分为两个过程:1、类的加载 2、类的执行。需要说明的是:JVM主要在程序第一次主动使用类的时候,才会去加载该类。也就是说,JVM并不是在一开始就把一个程序就所有的类都加载到内存中,而是到不得不用的时候才把它加载进来,而且只加载一次。

特别说明:java类中所有public和protected的实例方法都采用动态绑定机制,所有私有方法、静态方法、构造器及初始化方法<clinit>都是采用静态绑定机制。而使用动态绑定机制的时候会用到方法表,静态绑定时并不会用到。

(4)编译jvm扩展阅读:

Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来简单的说明整个流程。

Java代码编译:是由Java源码编译器来完成;

Java字节码的执行:是由JVM执行引擎来完成

Java程序从源文件创建到程序运行要经过两大步骤:

1、源文件由编译器编译成字节码(ByteCode)

2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java被称为半解释语言( "semi-interpreted" language)。

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

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

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

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

⑺ java为什么要编译

因为java的跨平台特性,java所谓的一次编译,到处运行,关键就是在于java的虚拟机,也就是jvm,jvm只认识字节码,所以你写好的java代码就需要编译成字节码才能在jvm上运行。其实不只是java需要编译,C也需要编译,机器本身并不能认识你写的代码,它们只认识0、1这样的字节码,所以无论是你用什么样的语言编写的代码,要想最终在物理机器上运行,都要进行编译。

⑻ jvm是指什么

你好,提问者:

JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器)
JRE是指java运行环境。光有JVM还不能成class的 执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。 (jre里有运行.class的java.exe)
JRE ( Java Runtime Environment ),是运行 Java 程序必不可少的(除非用其他一些编译环境编译成.exe可执行文件……),JRE的 地位就像一台PC机一样,我们写好的Win64应用程序需要操作系统帮 我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。
简称:运行时环境,编译时需要依赖JDK。

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

eclipse是java写代码的工具,jvm是运行(.class二进制文件)的工具。jvm存在于jre里面。jdk是代码转换成.class二进制文件的API,总的来说就是:使用写好的代码经过jdk转成.class文件,然后通过jre里面的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-07-18 16:34:44 浏览:997
压缩长抱枕 发布:2025-07-18 16:13:38 浏览:504
如何使用wifi热点配置网络 发布:2025-07-18 16:06:25 浏览:969
android软键盘数字 发布:2025-07-18 16:03:18 浏览:611
三菱plc编程软件官网 发布:2025-07-18 15:59:59 浏览:437
gse源码 发布:2025-07-18 15:58:15 浏览:627
编译链c语言执行速度 发布:2025-07-18 15:52:51 浏览:555
在线编程课程 发布:2025-07-18 15:46:56 浏览:173
生兔子算法循环 发布:2025-07-18 15:44:32 浏览:47
背包规划算法 发布:2025-07-18 15:44:27 浏览:110