‘壹’ java程序不能执行
Java程序的运行过程(执行流程)分析
1、编写:是指在 Java 开发环境中进行程序代码的输入,最终形成后缀名为 .java 的 Java 源文件。
2、编译:是指使用 Java 编译器对源文件进行错误排査的过程,编译后将生成后缀名为 .class 的字节码文件,不像C语言那样生成可执行文件。
3、运行:是指使用 Java 解释器将字节码文件翻译成机器代码,执行并显示结果。
字节码文件是一种和任何具体机器环境及操作系统环境无关的中间代码。它是一种二进制文件,是 Java 源文件由 Java 编译器编译后生成的目标代码文件。编程人员和计算机都无法直接读懂字节码文件,它必须由专用的 Java 解释器来解释执行,因此 Java 是一种在编译基础上进行解释运行的语言。
Java 解释器负责将字节码文件翻译成具体硬件环境和操作系统平台下的机器代码,以便执行。因此 Java 程序不能直接运行在现有的操作系统平台上,它必须运行在被称为 Java 虚拟机的软件平台之上。
Java 虚拟机(JVM)是运行 Java 程序的软件环境,Java 解释器是 Java 虚拟机的一部分。在运行 Java 程序时,首先会启动 JVM,然后由它来负责解释执行 Java 的字节码程序,并且 Java 字节码程序只能运行于 JVM 之上。这样利用 JVM 就可以把 Java 字节码程序和具体的硬件平台以及操作系统环境分隔开来,只要在不同的计算机上安装了针对特定平台的 JVM,Java 程序就可以运行,而不用考虑当前具体的硬件平台及操作系统环境,也不用考虑字节码文件是在何种平台上生成的。
JVM 把这种不同软、硬件平台的具体差别隐藏起来,从而实现了真正的二进制代码级的跨平台移植。JVM 是 Java 平台架构的基础,Java 的跨平台特性正是通过在 JVM 中运行 Java 程序实现的。Java 的这种运行机制可以通过下图来说明。
Java 语言这种“一次编写,到处运行”的方式,有效地解决了目前大多数高级程序设计语言需要针对不同系统来编译产生不同机器代码的问题,即硬件环境和操作平台的异构问题,大大降低了程序开发、维护和管理的开销。
提示:Java 程序通过 JVM 可以实现跨平台特性,但 JVM 是不跨平台的。也就是说,不同操作系统之上的 JVM 是不同的,Windows 平台之上的 JVM 不能用在 Linux 平台,反之亦然。
‘贰’ 在Java中,负责对字节代码解释执行的是什么
在Java中,负责对字节代码解释执行的是虚拟机,虚拟机将得到的字节代码进行编码运行
‘叁’ JAVA到底是什么 怎么用 用最通俗的话解释
Java是一种高级编程语言。用高级语言编写的程序不能直接在任何计算机上运行。首先,需要将其翻译成特定的机器语言。javac编译器做这件事情,把Java程序(含有的.java文件源代码)转换成机器代码(称为字节码或.class文件)。
Java虚拟机(JVM)是运行在计算机中的虚拟机,而JVM的机器语言是字节码。
JVM的主要功能是执行编译器生成的字节码。每个操作系统具有不同的JVM,但是在执行所有字节代码后,它们在所有操作系统上产生的输出都是相同的。这意味着Windows上生成的字节码可以在Mac OS上运行,反之亦然。这就是为什么我们将Java称为平台独立语言。
有考虑学习Java的同学,这边我整理了一篇关于Java系统学习的全套资料:
网页链接
希望会给你带来帮助!
‘肆’ JDK下解释执行JAVA的程序是
首先通过javac Xxx.java来编译;
然后使用java Xxx来运行.
注意,编译的时候是有后缀名".java"的,而运行的时候是不包括后缀名".class".
‘伍’ 为什么说java程序是边解释边执行的
java应用程序的开发周期包括编译、下载、解释和执行几个部分。java编译程序将java源程序翻译为jvm可执行代码--字节码。这一编译过程同c/c++的编译有些不同。当c编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而产生的。因此,在编译过程中,编译程序通过查表将所有对符号的引用转换为特定的内存偏移量,以保证程序运行。java编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号引用信息保留在字节码中,由解释器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址。这样就有效的保证了java的可移植性和安全性。运行jvm字节码的工作是由解释器(java命令)来完成的。解释执行过程分三部进行:代码的装入、代码的校验和代码的执行。装入代码的工作由"类装载器"(classloader)完成。类装载器负责装入运行一个程序需要的所有代码,这也包括程序代码中的类所继承的类和被其调用的类。当类装载器装入一个类时,该类被放在自己的名字空间中。除了通过符号引用自己名字空间以外的类,类之间没有其他办法可以影响其他类。在本台计算机上的所有类都在同一地址空间内,而所有从外部引进的类,都有一个自己独立的名字空间。这使得本地类通过共享相同的名字空间获得较高的运行效率,同时又保证它们与从外部引进的类不会相互影响。当装入了运行程序需要的所有类后,解释器便可确定整个可执行程序的内存布局。解释器为符号引用同特定的地址空间建立对应关系及查询表。通过在这一阶段确定代码的内存布局,java很好地解决了由超类改变而使子类崩溃的问题,同时也防止了代码对地址的非法访问。随后,被装入的代码由字节码校验器进行检查。校验器可发现操作数栈溢出,非法数据类型转化等多种错误。通过校验后,代码便开始执行了。java字节码的执行有两种方式:1.即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。2.解释执行方式:解释器通过每次解释并执行一小段代码来完成java字节码程序的所有操作。通常采用的是第二种方法。由于jvm规格描述具有足够的灵活性,这使得将字节码翻译为机器代码的工作具有较高的效率。对于那些对运行速度要求较高的应用程序,解释器可将java字节码即时编译为机器码,从而很好地保证了java代码的可移植性和高性能。java宣称的一处编写随处运行就是由jvm来完成.在sun的网站上你可以下载到基于各种cpu和各种操作系统的jdk和jre的下载版本,只要寻找到合适你使用的版本,以前你所编写的class文件到其他的机器上可以直接运行JAVA,不需要再编译.其实j2se是一种规范,这种规范约定了其跨平台执行的所需要关注很多实现,基于该规范开发人员可以任意编写自己的java代码而不需要关心这个程序可能在其他的机器和cpu上无法很好运行问题.其实你也可以看到ibm和weblogic都有基于j2se规范的自己实现的java虚拟机.而且sun所宣称的不需要编译而可以直接用class文件在各个jvm上直接运行并不精确,博格曾经遇到过用sunjre开发的class文件在ibmjre上有一个自动转换的过程,然后这个类可以很好的工作了,幸好这种情况是自动完成,否则我们又要陷入类似于各种cc++的版本编译器兼容性问题中.以下下摘录了几个主要的概念:jvmjavavirtualmachine(java虚拟机),它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。jvm屏蔽了与具体操作系统平台相关的信息,使得java程序只需生成在java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。java虚拟机在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。jrejavaruntimeenvironment(java运行环境),运行java程序所必须的环境的集合,包含jvm标准实现及java核心类库。,和jdk以及j2se等同。jdkjavadevelopmentkit(java开发工具包):包括运行环境、编译工具及其它工具、源代码等,基本上和j2se等同。j2mejava2microedition(java2精简版)api规格基于j2se,但是被修改为可以适合某种产品的单一要求。j2me使java程序可以很方便的应用于电话卡、寻呼机等小型设备,它包括两种类型的组件,即配置(configuration)和描述(profile)。j2eejava2enterpriseedition(java2企业版),使用java进行企业开发的一套扩展标准,必须基于j2se,提供一个基于组件设计、开发、集合、展开企业应用的途径。j2ee平台提供了多层、分布式的应用模型,重新利用组件的能力,统一安全的模式以及灵活的处理控制能力。j2ee包括ejb,jta,jdbc,jca,jmx,jndi,jms,javamail,servlet,jsp等规范。j2sejava2standardedition(java2标准版),用来开发java程序的基础,包括编译器、小工具、运行环境,sun发布的标准版本中还包括核心类库的所有源代码。
‘陆’ 对java平台的理解,java是解释执行吗
.java不经过编译就无法执行,可以说Java是编译型的。但是java代码编译后不能直接运行,它是解释运行在JVM上的,所以也可以说是解释型的。java是一种半编译、半解释执行的语言。
‘柒’ java工作原理
Java工作原理
由四方面组成:
(1)Java编程语言
(2)Java类文件格式
(3)Java虚拟机
(4)Java应用程序接口
当编辑并运行一个Java程序时,需要同时涉及到这四种方面。使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境(Eclipse、MyEclipse等)在Java源文件中定义不同的类 ,通过调用类(这些类实现了Java API)中的方法来访问资源系统,把源文件编译生成一种二进制中间码,存储在class文件中,然后再通过运行与操作系统平台环境相对应的Java虚拟机来运行class文件,执行编译产生的字节码,调用class文件中实现的方法来满足程序的Java API调用 。
‘捌’ Java程序设计语言是什么意思
Java是由SunMicrosystems公司于1995年推出的一门面向对象程序设计语言。2010年Oracle公司收购SunMicrosystems,之后由Oracle公司负责Java的维护和版本升级。
其实,Java还是一个平台。Java平台由Java虚拟机(JavaVirtualMachine,JVM)和Java应用编程接口(,API)构成。
Java应用编程接口为此提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。
Java平台已经嵌入了几乎所有的操作系统。这样Java程序只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版本发展到1.2版本。常用的Java平台基于Java1.6,最新版本为Java1.8。
Java发展至今,就力图使之无所不能。按应用范围,Java可分为3个体系,即JavaSE、JavaEE和JavaME。
(8)解释执行java扩展阅读
Java语言的特点
Java语言的风格很像C语言和C++语言,是一种纯粹的面向对象语言,它继承了C++语言面向对象的技术核心,但是抛弃了C++的一些缺点,比如说容易引起错误的指针以及多继承等,同时也增加了垃圾回收机制,释放掉不被使用的内存空间,解决了管理内存空间的烦恼。
1、面向对象
Java是一种面向对象的语言,它对对象中的类、对象、继承、封装、多态、接口、包等均有很好的支持。为了简单起见,Java只支持类之间的单继承,但是可以使用接口来实现多继承。使用Java语言开发程序,需要采用面向对象的思想设计程序和编写代码。
2、平台无关性
平台无关性的具体表现在于,Java是“一次编写,到处运行(WriteOnce,RunanyWhere)”的语言,因此采用Java语言编写的程序具有很好的可移植性,而保证这一点的正是Java的虚拟机机制。在引入虚拟机之后,Java语言在不同的平台上运行不需要重新编译。
Java语言使用Java虚拟机机制屏蔽了具体平台的相关信息,使得Java语言编译的程序只需生成虚拟机上的目标代码,就可以在多种平台上不加修改地运行。
3、简单性
Java语言的语法与C语言和C++语言很相近,使得很多程序员学起来很容易。对Java来说,它舍弃了很多C++中难以理解的特性,如操作符的重载和多继承等,而且Java语言不使用指针,加入了垃圾回收机制,解决了程序员需要管理内存的问题,使编程变得更加简单。
4、解释执行
Java程序在Java平台运行时会被编译成字节码文件,然后可以在有Java环境的操作系统上运行。在运行文件时,Java的解释器对这些字节码进行解释执行,执行过程中需要加入的类在连接阶段被载入到运行环境中。
5、多线程
Java语言是多线程的,这也是Java语言的一大特性,它必须由Thread类和它的子类来创建。Java支持多个线程同时执行,并提供多线程之间的同步机制。任何一个线程都有自己的run()方法,要执行的方法就写在run()方法体内。
‘玖’ java中,负责对字节代码解释执行的是
java中负责对字节代码解释执行的是虚拟机,虚拟机将得到的字节代码进行编码运行。
java程序,是先把java源程序通过javac命令编译成字节码文件,然后再用java命令解释执行。把字节码文件复制到其它计算机上,只要有java虚拟机就可以用java命令来执行。
‘拾’ java怎样解释执行
java 是 先编译后运行。
javac 命令可以吧 源代码(.java文件)编译生成 字节码(.class)文件
java 命令运行 字节码文件。