java语言类型

来源:互联网 发布:python字符串处理 编辑:程序博客网 时间:2024/06/01 23:52

最近在看《深入理解Java虚拟机JVM高级特性与最佳实践》只是看了第一遍,这本书讲的东西都是很底层的东西,基础开发一般用不到,但是让我对Java语言有了很深刻的认识。
市面上语言被分为“解释型”和“编译型”,我们上学时学习的C/C++语言就是编译型的语言,我目前接触过的Ruby、JavaScript是解释型的语言,那么Java语言是解释型的还是编译型的呢?
说成任何一种都是很片面的,Java的执行过程从大的方面分为下面几个阶段:
1. 编译: 源代码文件(.java)编辑成字节码文件(.class)。
2. 加载: JVM加载字节码。
3. 运行: JVM执行字节码内部的指令运行程序。
我们和Ruby语言做个对比,来解析一下Java的类型。
从第一个阶段来看,Java属于编译型的,这个角度来看它属于静态语言,这个阶段的所有代码必须能编译通过,才能编译成字节码,而作为解释型的语言,Ruby没有这个阶段,Ruby的虚拟机是直接加载*.rb文件的。
第二个阶段JVM加载字节码的过程就不细说了,这个阶段是把字节码加载到内容中,形成一个一个的指令,这个加载并不是一次性完成所有的,是需要的时候才加载,比如我们常用的加载JDBC的方式(Class.forName(“com.mysql.jdbc.Driver”);),就是运行到对应字节码时才加载,从这个阶段来看Java是“解释型”的语言。Java里面有一个叫“反射”的机制,这个机制来看,Java也是动态语言。
Ruby的虚拟机加载的过程没有仔细研究,但是Ruby在运行时,才会检测变量和方法是否存在,而所以它是动态语言。
总的来说,Java是混合语言,一个角度上说,既属于“编译型”,又属于“解释型”,另外一个角度上说,Java既属于“静态语言”,又属于“动态语言”。
神奇的Java,越来越感兴趣。

原创粉丝点击