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 平台,反之亦然。
win7:右击计算机属性高级系统设置环境变量
XP:右击我的电脑属性高级环境变量(好象是)
在用户变量下添加JAVA_HOME和Path环境变量。
JAVA_HOME路径为JDK的安装根目录,
Path路径为JAVA_HOME下的bin路径。
你的错误我没有遇到过,变量先这样设置试试看吧
1、点击win7系统的开始-控制面板,选择查看方式为大图标或小图标,双击java;
2、选择“安全”,把“安全级别”降至“中”,点击“确定”;
3、重启浏览器,运行java,在d出的对话框中,点击“运行”即可;
4、如果不能完成上述 *** 作,提示需要提升权限,请参阅:怎样才能删除Win7多余的开机启动项中的5、提升权限,如果不能提升权限,往下 *** 作:
5、切换用户,如:xym原来是普通用户,要提升到管理员,不能在xym的用户下提升,只能切换到管理员的用户下,如:只能在lenovo的用户下进行提升;
6、点击用户xym,选择“管理员”,点击“更改帐户类型”;
7、打开您用的浏览器,“工具-
Internet选项”,进行IE设置:
Internet选项-->高级
,在“允许活动内容在我的计算机上的文件中运行”前打上勾;
Internet选项-->程序-->管理加载项,找到“Java(tm)Plug……”,勾选“启用”;
如果不想出现“为了有利于保护安全性,Internet
已限制网页运行可以访问计算机的脚本……”;
需要在安全选项-->自定义级别-->Activex控件和插件,勾选“启用”;
8、最后点击确定;
9、如果还有问题,试试卸载Java,重装Java。
java创建的线程在调用start方法后,进入就绪状态,但通常不会马上分配到CPU,处于线程就绪队列,需要等待时间片轮转到该线程获得CPU后才能执行。如果你需要先执行新的线程,可以使用Thread类的join方法来等待该线程终止后,再继续往下执行,下面举个代码例子:public class Test { int i = 0; public static void main(String[] args) { Test test = new Test(); MyThread1 myThread = new MyThread1(test); Thread thread = new Thread(myThread); threadstart(); try { threadjoin();//如果不调用此方法,打印结果为0 } catch (InterruptedException e) { // TODO Auto-generated catch block eprintStackTrace(); } Systemoutprintln(testi); }}class MyThread1 implements Runnable{ Test test; public MyThread1(Test test){ thistest = test; } @Override public void run() { testi = 1; }}
以上就是关于java程序不能执行全部的内容,包括:java程序不能执行、java 无法启动 救命、win7不能运行java提示“应用程序已被安全设置被阻止”的解决方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)