A. 一个java程序运行从上到下的环境次序是( )
Java程序、JRE/JVM、操作系统、硬件。
编写Java程序首先需要一个入口点,在运行的时候通过指定MainClass来指定入口点,代码层面主类必须实现一个静态的main函数,运行时虚拟机会从MainClass.main开始执行指令,其他的逻辑只是import和函数调用了。
(1)java编译和编写谁先扩展阅读:
注意事项:
运行java文件,必须先编译java文件为Class文件。然后在解析class文件。这两个步骤都是需要在安装了java运行环境的。安装好java后,要对java进行配置。
代码里的标点符号都要是英文状态下的,这一点很多新手朋友在写java文件的时候犯错。
java程序文件的文件名必须和java程序里的class名一致。
B. Java的详细运行步骤
Java程序从源文件创建到程序运行要经过两大步骤:1、源文件由编译器编译成字节码(ByteCode)
2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java被称为半解释语言( "semi-interpreted" language)。
下面通过以下这个java程序,来说明java程序从编译到最后运行的整个流程。代码如下:
//MainApp.java
public class MainApp {
public static void main(String[] args) {
Animal animal = new Animal("Puppy");
animal.printName();
}
}
//Animal.java
public class Animal {
public String name;
public Animal(String name) {
this.name = name;
}
public void printName() {
System.out.println("Animal ["+name+"]");
}
}
第一步(编译): 创建完源文件之后,程序会先被编译为.class文件。Java编译一个类时,如果这个类所依赖的类还没有被编译,编译器就会先编译这个被依赖的类,然后引用,否则直接引用,这个有点象make。如果java编译器在指定目录下找不到该类所其依赖的类的.class文件或者.java源文件的话,编译器话报“cant find symbol”的错误。
编译后的字节码文件格式主要分为两部分:常量池和方法字节码。常量池记录的是代码出现过的所有token(类名,成员变量名等等)以及符号引用(方法引用,成员变量引用等等);方法字节码放的是类中各个方法的字节码。下面是MainApp.class通过反汇编的结果,我们可以清楚看到.class文件的结构:
第二步(运行):java类运行的过程大概可分为两个过程:1、类的加载 2、类的执行。需要说明的是:JVM主要在程序第一次主动使用类的时候,才会去加载该类。也就是说,JVM并不是在一开始就把一个程序就所有的类都加载到内存中,而是到不得不用的时候才把它加载进来,而且只加载一次。
下面是程序运行的详细步骤:
在编译好java程序得到MainApp.class文件后,在命令行上敲java AppMain。系统就会启动一个jvm进程,jvm进程从classpath路径中找到一个名为AppMain.class的二进制文件,将MainApp的类信息加载到运行时数据区的方法区内,这个过程叫做MainApp类的加载。
然后JVM找到AppMain的主函数入口,开始执行main函数。
main函数的第一条命令是Animal animal = new Animal("Puppy");就是让JVM创建一个Animal对象,但是这时候方法区中没有Animal类的信息,所以JVM马上加载Animal类,把Animal类的类型信息放到方法区中。
加载完Animal类之后,Java虚拟机做的第一件事情就是在堆区中为一个新的Animal实例分配内存, 然后调用构造函数初始化Animal实例,这个Animal实例持有着指向方法区的Animal类的类型信息(其中包含有方法表,java动态绑定的底层实现)的引用。
当使用animal.printName()的时候,JVM根据animal引用找到Animal对象,然后根据Animal对象持有的引用定位到方法区中Animal类的类型信息的方法表,获得printName()函数的字节码的地址。
开始运行printName()函数。
特别说明:java类中所有public和protected的实例方法都采用动态绑定机制,所有私有方法、静态方法、构造器及初始化方法<clinit>都是采用静态绑定机制。而使用动态绑定机制的时候会用到方法表,静态绑定时并不会用到。
C. 简述Java应用程序的开发流程
分为网页和桌面的应用开发
网页或者桌面开发流程
项目启动1)、项目组成立(公司成员、客户成员)
2)、制定项目预期目标
3)、制定项目计划周期
4)、建立好项目组成员沟通机制
2、需求调研
1)、创建调研计划、协调调研时间
2)、收集客户资料,获取客户需求所有的资料都需要保留一份,资料中存疑的需要及时询问
3)、编写需求文档重点描述出客户的业务流程和性能要求。采用Word、Excel、Rose等形式。
4)、需求变更记录
5)、确定开发环境和运行环境
6)、扩展性要求
7)、与旧系统的接驳要求。
8)、估算出项目工作量本阶段需要一套需求管理系统来进行需求的管理。本阶段的需求文档也是用户测试的依据。
3、系统设计/详细设计一个系统可以分为基础平台和应用模块两部分。
1)、选择基础平台,无论是采用第三方平台还是自行开发平台,都需要深入了解,查看是否符合要求。
2)、应用模块设计(针对业务流程)
3)、中间件的采用或自行开发,需要深入了解。
4)、用户界面的设计如果用户界面设计完毕并确认,即可初步写出用户使用手册、管理员使用手册。
5)、变更记录本阶段的系统设计是集成测试的依据。
4、程序开发创建开发任务计划表、开发计划日程表
1)、优先编写测试用例
2)、按照编码规范编写代码
3)、按照文档注释规范注释以上形成开发文档。本阶段需要一套版本管理系统。本阶段的测试用例也是单元测试的依据。如果能做到,最好每日构建。
5、测试本阶段需要一套Bug管理系统,形成需求、设计、开发、测试互动。
1)、编写测试计划和测试方案
2)、功能测试单元测试、集成测试
3)、性能测试集成测试、压力测试如果能做到,最好能进行自动化测试。如果能做到,做分析统计工作。最后形成测试报告。
6、试用、培训、维护本阶段需要解决:
1)、解决异地修改和公司修改的同步问题。
2)、用户测试中的Bug修改问题,按照级别分为a)、程序Bugb)、设计变更c)、需求变更尽量按照a b c的顺序来进行修改,尽量避免b、c级的修改。最后形成安装手册、维护记录。
D. java中编译顺序和运行顺序是一样的吗
java是面向对象的语言,面向对象的特性之一就是重载,也就是方法的参数列表不同,其它声明都一样,这样编译的时候无论先编译哪个都不表示先运行哪个,因为,重载决定在运行期,只有运行的时候,看真正调用哪一个,才去运行哪一个,所以编译顺序和运行顺序是不一样的。
--------------------------------
编译都干了什么,具体我也说不清楚,只直到类成员是优先的。
E. 简述JAVA程序的编辑编译和运行过程
第一步(编译): 创建完源文件之后,程序会先被编译为.class文件。Java编译一个类时,如果这个类所依赖的类还没有被编译,编译器就会先编译这个被依赖的类,然后引用,否则直接引用,这个有点象make。
如果java编译器在指定目录下找不到该类所其依赖的类的.class文件或者.java源文件的话,编译器话报“cant find symbol”的错误。
第二步(运行):java类运行的过程大概可分为两个过程:1、类的加载 2、类的执行。需要说明的是:JVM主要在程序第一次主动使用类的时候,才会去加载该类。也就是说,JVM并不是在一开始就把一个程序就所有的类都加载到内存中,而是到不得不用的时候才把它加载进来,而且只加载一次。
特别说明:java类中所有public和protected的实例方法都采用动态绑定机制,所有私有方法、静态方法、构造器及初始化方法<clinit>都是采用静态绑定机制。而使用动态绑定机制的时候会用到方法表,静态绑定时并不会用到。
(5)java编译和编写谁先扩展阅读:
Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来简单的说明整个流程。
Java代码编译:是由Java源码编译器来完成;
Java字节码的执行:是由JVM执行引擎来完成
Java程序从源文件创建到程序运行要经过两大步骤:
1、源文件由编译器编译成字节码(ByteCode)
2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java被称为半解释语言( "semi-interpreted" language)。
F. 运行java程序时,为什么要先编译再运行,编译运行一起进行不行吗
java讲究的是 一次编译 处处运行,也就是提高了程序的一致性。java的程序之所在不同的操作系统上的运行结果是一样的,是因为java虚拟机。
所以要运行java都要装一个叫jdk的东西,里面有java的虚拟机。这个虚拟机就是来解释我们写的代码。通过这个虚拟机,就实现了代码的移植。
我们写好的程序,通过虚拟机,编译成class文件,然后在运行。但是我们只需要编译一次即可。
G. java程序的执行和编译顺序
这个程序就是实验在类初始化时的执行顺序:先初始化构造函数外的静态变量,再初始化非静态变量,再调用构造函数
H. Java语言的运行机制
在分析程序语言的运行机制时,通常会讨论两种类型的程勋执行模式: 编译行的程序语言和解释性的程序语言。语言的编译过程类似于日常生活中的翻译——翻译人员将一片文章翻译从中文翻译成英文,在过程中有批次处理和离线完成的特点。C语言就是这种类型的典型代表。解释性语言就类似于国际上的“中英同传”——在发言者将出中文的同时,对方的耳机就会有对应英文发言,此时的编译就叫做同传,在过程上有在线和及时的特点,BASIC语言就是这类典型的代表。
JAVA语言是一种变异性解释性语言,同时具备编译特性和解释特性。作为变异性语言,JAVA程序要被统一编译成字节码文件——文件后缀是class。此种文件在java中又称为类文件。java类文件不能再计算机上直接执行,它需要被java虚拟机编译成本地的机器码后才能执行,而java虚拟机的翻译过程则是解释性的。java字节码文件首先被加载到计算机内存中,然后读出一条指令,翻译一条指令,执行一条指令,该过程被称为java语言的解释执行,是有java虚拟机完成的。而在现实中,java开发工具JDK提供了两个很重要的命令来完成上面的编译和解释过程。两个命令分别是java.exe和javac.exe,前者加载java类文件,并逐步对字节码文件进行解释执行,而另一个命令则对应了java语言的编译过程。在次序上,java语言是要先进行编译的过程,接着解释执行。