导航:首页 > 源码编译 > java编译的底层实现

java编译的底层实现

发布时间:2023-03-14 21:31:18

‘壹’ java程序运行的五个步骤

1、Java程序从源文件创建到程序运行要经过两大步骤:1、源文件由编译器编译成字节码(ByteCode) 2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java被称为半解释语言("semi-interpreted" language)。

第一步(编译): 创建完源文件之后,程序会先被编译为.class文件。Java编译一个类时,如果这个类所依赖的类还没有被编译,编译器就会先编译这个被依赖的类,然后引用,否则直接引用,这个有点像make。如果java编译器在指定目录下找不到该类所其依赖的类的.class文件或者.java源文件的话,编译器话报“cant find symbol”的错误。

编译后的字节码文件格式主要分为两部分:常量池和方法字节码。常量池记录的是代码出现过的所有token(类名,成员变量名等等)以及符号引用(方法引用,成员变量引用等等);方法字节码放的是类中各个方法的字节码。

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

2、下面是程序运行的详细步骤:

‘贰’ 程序语言底层是怎么实现的

你好, 对于你的问题:
1、C++和Java都是面向对象编程语言(OOP),接口是OOP的一个特色,而函数是任何编程语言无论是面向过程还是面向对象都有的。
2、关于语句底层如何实现,你应该看过编程教材的第一章,一般在书籍开头都会介绍程序时有何而来,在你编写完程序代码后,都会经过编译、链接这个过程,这些就是将你的代码进行转换并最终生成可执行程序的过程,这些由IDE(开发工具)和编译器(如Java的JDK)来共同完成,内部的细节是自动完成的。
3、要了解底层代码实现,建议你去学习“编译原理”这门知识
4、要学习控制CPU和内存存储,建议去学习“计算机操作系统”这门知识(不是如何使用操作系统,是如何设计操作系统)
PS:除非你是非常喜欢或者就想做底层开发(如操作系统开发),一般应用程序开发只要学好相应的语言和类库即可!
有其他问题欢迎咨询!

‘叁’ 到底JAVA的底层是什么

java底层,汇编啊。。

有部分库(比如渲染等需要高速运算的)可能是C/C++

而且,这个,java底层这个概念。本来就存在某些问题。因为java是解释型语言啊,应该问他的编译器是啥语言实现的。

‘肆’ java的"一次编译,到处运行"的机制是如何实现的

JVM是一个java虚拟机,所谓的java虚拟机就是和普通的虚拟机一样,拥有自己的CPU,RAM之类的。我们所使用的操作系统是Windows的操作系统,Windows操作系统支持的可执行文件是EXE文件,也就是说在Windows的操作系统上只有EXE的文件是可以直接被操作系统解释为底层机器语言并进行运行的。而java虚拟机可以支持的是.class的可执行文件,在java的虚拟机中遇到.class的文件就可以直接翻译成java虚拟机所能是别的底层机器语言并进行执行。这就是JVM的机制,正是因为java的这种机制才实现了java的跨平台,在不同的平台上安装能够在相应平台上运行的虚拟机,然后在java虚拟机中运行java的源程序,“一次编译,多次执行”就此实现了。
所以java的跨平台是离不开虚拟机的支持的。虚拟机充当着java源程序和操作系统之间的中间,不同的操作系统只需要寻找相应的中介就可以实现在不同的操作系统上运行。而java的编译只是吧.java文件编译为.class字节码文件而已,然后把字节码交给虚拟机去执行。
虚拟机在执行的时候是读一句字节码文件人后解释一句给操作系统听,这就是为什么java是解释型的语言。
所谓的编译型的语言是指这种语言被编译之后生成的是可以直接供操作系统执行的010101文件,像C,C++都是编译型的,java因为中间有JVM这么个东西所以是解释型的。

‘伍’ Java的底层是用什么语言写的

JVM 的话是 C++ 实现的。而c++则需要考虑效率,任何在windows下运行的程序,底层都是C/C++或者ASM,这是硬件指令系统决定的。
Java 类库是 Java 实现的。java主要面向于实现。

阅读全文

与java编译的底层实现相关的资料

热点内容
解压和拉伸这一动画的原理是什么 浏览:736
tbc战士的命令怒吼 浏览:479
idea快捷键看源码 浏览:972
手机碎屏解压工具 浏览:245
jsonrpcphp使用 浏览:566
网上求职系统源码 浏览:699
pdf数字不显示 浏览:890
convertwordtopdf 浏览:253
程序编译基本单位 浏览:23
python分析图片角度 浏览:64
阿里云服务器能复制数据吗 浏览:562
python拼音转换文字 浏览:563
动画遗传算法 浏览:63
php如何解析xml文件 浏览:702
如何改变appstore的语言 浏览:462
javahtmlxml 浏览:34
单片机启动文件 浏览:811
橙app如何开启聊天 浏览:899
访问服务器公网地址 浏览:666
pdf打印底色去掉 浏览:465