java语言的编译原理
A. 简述java程序从编写到运行的基本步骤,并说明Java的基本工作原理
Java编译原理:
Java 虚拟机(JVM)是可运行Java 代码的假想计算机。只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行。
一.Java源文件的编译、下载 、解释和执行
Java应用程序的开发周期包括编译、下载 、解释和执行几个部分。Java编译程序将Java源程序翻译为JVM可执行代码?字节码。这一编译过程同C/C++ 的编译有些不同。当C编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而产生的。因此,在编译过程中,编译程序通过查表将所有对符号的引用转换为特定的内存偏移量,以保证程序运行。Java编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号引用信息保留在字节码中,由解释器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址。这样就有效的保证了Java的可移植性和安全 性。
运行JVM字节码的工作是由解释器来完成的。解释执行过程分三部进行:代码的装入、代码的校验和代码的执行。装入代码的工作由"类装载器"(class loader)完成。类装载器负责装入运行一个程序需要的所有代码,这也包括程序代码中的类所继承的类和被其调用的类。当类装载器装入一个类时,该类被放在自己的名字空间中。除了通过符号引用自己名字空间以外的类,类之间没有其他办法可以影响其他类。在本台计算机上的所有类都在同一地址空间内,而所有从外部引进的类,都有一个自己独立的名字空间。这使得本地类通过共享相同的名字空间获得较高的运行效率,同时又保证它们与从外部引进的类不会相互影响。当装入了运行程序需要的所有类后,解释器便可确定整个可执行程序的内存布局。解释器为符号引用同特定的地址空间建立对应关系及查询表。通过在这一阶段确定代码的内存布局,Java很好地解决了由超类改变而使子类崩溃的问题,同时也防止了代码对地址的非法访问。
随后,被装入的代码由字节码校验器进行检查。校验器可发现操作数栈溢出,非法数据类型转化等多种错误。通过校验后,代码便开始执行了。
Java字节码的执行有两种方式:
1.即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。
2.解释执行方式:解释器通过每次解释并执行一小段代码来完成Java字节码程 序的所有操作。
通常采用的是第二种方法。由于JVM规格描述具有足够的灵活性,这使得将字节码翻译为机器代码的工作
具有较高的效率。对于那些对运行速度要求较高的应用程序,解释器可将Java字节码即时编译为机器码,从而很好地保证了Java代码的可移植性和高性能。
B. java中的正则表达式跟编译原理有什么联系
首先,正则表达式不仅在Java里有,其它语言里面也有,它是一个数学上的概念,各个语言中的正则表达式是它的不同形式的实现。
其次,编译原理的词法分析里,会用到正则表达式去匹配源程序中的各种token(记号),比如说
int a = 8;
里识别出:
类型名:int
变量名:a
运算符:=
数字:8
结尾分号:;
总之,二者有联系,但不是一回事。
C. java是c语言还是C++编写的
java是C++编写的。
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

java工作原理由四方面组成:
(1)Java编程语言
(2)Java类文件格式
(3)Java虚拟机
(4)Java应用程序接口
当编辑并运行一个Java程序时,需要同时涉及到这四种方面。使用文字编辑软件或集成开发环境在Java源文件中定义不同的类,通过调用类中的方法来访问资源系统;
把源文件编译生成一种二进制中间码,存储在class文件中,然后再通过运行与操作系统平台环境相对应的Java虚拟机来运行class文件,执行编译产生的字节码,调用class文件中实现的方法来满足程序的Java API调用。
D. java关于this的编译原理
java提供了一个this关键字,它是一个对象的默认引用,this关键字总是指向调用该方法的对象,根据this的出现位置不同,this作为对象的默认引用由两种情形:
1.构造器中引用该构造器执行初始化
的对象;
2.在方法中引用调用引用该方法的对像;
this关键字最大的作用就是让类中的一个方法,访问该类的另一个方法或属性。
E. C语言,Java语言的符号表区别和特点是什么他们分别是如何处理函数参数的(编译原理)
具体点?java用的是JVM,给你解释一下JVM的相关吗?不过JVM底层算法同样用的C。
F. java怎样解释执行两种应用程序
问题不够详细,请问你说的两种应用程序是什么意思...........
如果你是说JAVA编译原理的
~~~~~~~~~~
java是编译解释型语言,是先编译后解释;
先把代码变异成字节码文件,就是.calss结尾的文件
然后在JVM(java虚拟机)
中解释执行字节码文件...
谢谢采纳
G. 有没有介绍java编译原理的书籍推荐。现在在学java只是模仿代码,但不知道为什么程序要这样写,我
学Java必看书籍:Java编程规范,Effective Java第二版,Java并发编程实践,Java解惑,ROBUST Java 中文版-Java异常处理、测试与调试
另外我也有学Java的课程老师给我们推荐:Java面向对象编程
H. C语言和JAVA语言的运行机制有何不同
很简单,如果你有学习过编译原理就会明白的。
C和Java都是高级编程语言,计算机是不会明白的,而要让计算机明白,就得找个“翻译”。
而这个“翻译”有两类,第一个是“翻译程序”,第二个是“解释程序”。
“翻译程序”的工作就是一次过将高级编程语言编写的代码翻译成低级语言代码,让计算机执行翻译后的代码。
“解释程序”的工作就是读取一句高级编程语言写的指令就解释成低级语言编写的指令,而采取一边解释一边执行的方式。
C就是翻译之后,让计算机执行翻译得到的程序。
Java很特别,在翻译这一步上,它不是翻译成直接可以运行的程序,而是“字节码”。“字节码”由当前操作系统安装的Java虚拟机一边解释一边执行,注意,相同程序得到的“字节码”是一样的,但是在不同操作系统下的虚拟机则不同。这样,就可以“一次编写,处处运行”。但是,一边解释一边执行是效率很低的,所以Java又出了JIT技术,就是Just In Time Compiler及时编译器,在执行时对一些常用的类花费一定时间进行编译,但是编译后执行效率很高,而编译只需要很少的时间,相对于浪费运行的时候宝贵的相应时间来说是很值得的。
总之,C写的程序是编译后由系统直接运行,Java是编译成字节码再由JVM执行解释执行字节码来运行程序,前者执行效率高,后者相对低。
I. 简述java语言的运行机制
简单来说Java程序的运行机制
编写、编译、运行三个步骤。

运行机制 主要是指
编译、运行的过程
1、编译
Java编译器对源文件进行错误排查的过程,编译后将生成后缀名为.class的字节码文件。好让JVM(java虚拟机)里的解释器可以正常读取。
2、运行
三步代码的装入、代码的校验和代码的执行
2.1 、代码的装入
JVM控制解释器中的“类装载器”去读取和装载程序所需的类(class的字节码)。然后解释器开始建立类与类之间的关系。
2.2、代码的校验
字节码校验器进行检查:校验器可发现操作数栈溢出,非法数据类型转化等多种错误。
2.3、代码的执行
执行也分两种情况
即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。
解释执行方式:解释器通过每次解释并执行一小段代码来完成Java字节码程 序的所有操作。
通常采用的是第二种方法。由于JVM规格描述具有足够的灵活性,这使得将字节码翻译为机器代码的工作
本回答由电脑网络分类达人 化晓峰推荐
J. JAVA是从那个程序语言的基础上 做出来的
Java编程语言的风格十分接近C语言、C++语言。Java是一个纯粹的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心。Java舍弃了C语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
Java不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的性能。
来自网络:Java
你可以认为是C++,但因为它舍弃了很多东西,使得开发速度比C++快了许多,所以性能上会有降低。
