【历史】
第三代语言:
(1)C、Pascal、Fortran面向过程的语言;
(2)C++面向过程/面向对象;
(3)Java跨平台的纯面向对象的语言;
(4).NET跨语言的平台。
第四代语言:
SQL
【特点】
(1)纯面向对象的语言;
(2)与平台无关的语言,提供程序运行的解释环境;
(3)健壮的语言,吸收了C/C++的优缺点,去掉了影响其程序健壮性的部分(例如,指针、内存的申请与释放)。
【运行机制】
(1)Java虚拟机(JVM)
<1>Java虚拟机可以理解成一个以字节码(*.class)为机器指令的CPU
(这一点类似于Windows平台上的汇编语言,只要编译成class文件,就可以实现跨平台)
<2>对于不同的运行平台,有不同的虚拟机
(JVM for UNIX/Windows/Other Platform)
<3>Java虚拟机机制屏蔽了地层运行平台的差异,实现了"一次编译,随处运行"。
(C语言在编的比较好的情况下,可以实现“一次编程,随处运行”,但是还必须在不同的操作系统上编译后才可以)
【面试题】
Java是编译型语言还是解释型语言?
----解释型语言
<1>C/C++语言可以直接编译成操作系统识别的可执行文件的格式,不经过第二次,这叫做编译型语言;
<2>Java第一次编译成自己的可执行文件格式*.class,当class文件在执行时是JVM逐行进行解释,生成目标平台识别的格式。
(2)垃圾收集机制(Garbage collection)
<1>不再使用的内存空间需要回收;
<2>在C/C++中,由程序员负责回收无用内存;
<3>Java提供了一种系统级线程跟踪存储空间的分配情况,并在JVM空闲时,检查并释放那些可被释放的存储器空间;
<4>垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预。
(Java程序会出现“卡机”的情况,例如eclipse出现反应慢的情况,这就是在动态进行垃圾回收)
【运行过程】
源程序(*.java文件)--<Java编译器>--字节码(*.class文件)--<类装载器>--<字节码校验器>--<解释器>--<操作系统平台>
----javac的作用是将*.java文件编译成*.class文件(格式:javac HelloWorld.java)
----java的作用是运行程序(格式:java HelloWorld)
【J2SDK】
----软件开发包
【JRE】
----Java运行环境