.java的源文件会被编译得到.class的字节码文件,这个过程是jdk当中的javac程序也就是编译器(java compiler)干的。但是各个平台上的javac有所区别,而且各组织或者公司可以自行开发定制自己的jdk(例如HP、IBM等都有自己的JDK),定制的JDK可能会对java源代码进行编译期优化,所以编译出来的结果很可能是不完全一样的,可以有一些细微的差别。不过这不要紧,在绝大多数情况下,即使编译结果不同,实际运行起来的结果是一样的。
目前成都创新互联公司已为成百上千的企业提供了网站建设、域名、网络空间、网站托管维护、企业网站设计、达拉特网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
就像中文“我叫汤姆”,有的翻译可能会译成“My name is Tom”,有的翻译可能会译成“I'm Tom”,但是对于老外来说没太大区别,老外都能理解,实际效果是差不多的。
源代码就是你在电脑里手敲进去的那些;
编译过的代码其实是你的编译软件将你手敲进去的那些代码“翻译”成了计算机可以识别读懂的机器语言,换句话说也就是一堆二进制的代码。
你写程序的时候会用到某种软件(比如java的eclipse,.NET的vs2005、vs2008等),当你要编译时只需点下软件的编译按钮,软件会自动给你编译。
Java代码编译和执行的整个过程包含了以下三个重要的机制:
Java源码编译机制
类加载机制
类执行机制
Java源码编译机制
Java源码编译由以下三个过程组成:
分析和输入到符号表
注解处理
语义分析和生成class文件
JVM的类加载是通过ClassLoader及其子类来完成的
JVM是基于栈的体系结构来执行class字节码的。线程创建后,都会产生程序计数器(PC)和栈(Stack),程序计数器存放下一条要执行的指令在方
法内的偏移量,栈中存放一个个栈帧,每个栈帧对应着每个方法的每次调用,而栈帧又是有局部变量区和操作数栈两部分组成,局部变量区用于存放方法中的局部变
量和参数,操作数栈中用于存放方法执行过程中产生的中间结果
.java也是跨平台的,意思就是一份代码可以在不同平台编译,但虚拟机最终执行的是.class,我们通常说的跨平台主要是针对计算机执行这个层面。