回答思路:
两个显著特性
JRE/JDK
Java语言执行
回答总结:
首先Java是一门面向对象语言,有两个显著特性:
1. “一次编译,处处运行”,跨平台机制使得程序运行不受平台限制;
2. GC垃圾收集器,垃圾回收机制使得程序员不需要关心内存分配和回收;
在日常开发中会接触到JRE或者JDK:
1. 其中JRE是Java Runtime Environment,Java运行环境,包含JVM和Java类库;
2. JDK是Java Development Kit,Java开发工具包,是JRE的一个超集,提供更多的工具,如编译器、诊断工具等。
常常有讨论Java语言的运行机制是编译执行还是解释执行:
Java代码的运行包括 “编码 > 编译 > 运行 > 调试 ” 这么几个步骤。在编译过程中是将.java文件编译成.class文件,然后运行过程中,是由JVM中的解释器将字节码文件解释为对应环境的机器语言。在我们使用的大多数JDK中提供的JVM中包含了 JIT(Just-In-Time)编译器,也就是动态编译器,可以一边编译一边执行,这样Java也可以说是属于编译执行的。
编译型语言的好处是速度快、效率高,编译好的文件在跨平台方面就会比较受限;
解释型语言的好处就是编译一行执行一行,跨平台性比较好,但是执行效率较慢。
对于Java属于哪一种没有标准限制,得看不用的JVM的实现方式。比如只解释运行的JRockrt,既包含编译器也包含解释器的Hotspot,可以根据不同的JVM参数配置控制使用解释器(-Xint)还是优先使用编译器(-Xcomp)。