目录
一、Java语言有什么特点
二、JDK、JRE、JVM的区别
三、JavaSE和JavaEE的区别
四、什么是字节码,使用字节码的好处
五、为什么说Java语言是编译与解释并行
六、OpenJDK和OracleJDK的区别
七、Java和C++的区别
答:
1. 面向对象 具备面向对象的三大特性(封装、继承、多态)
2. 其次最大的特点就是简单,相较于c++来说已经很简单了。而且Java语言的设计初衷就是为了提供一种比c++容易学,而且各方面也不错的一种面向对象的语言,所以就诞生了Java
....可以扯上它两的区别 指针 释放要自己管理内存 继承
2. 其次还有跨平台,由于Jvm的存在,使得只需要生成一次字节码,就能够到处运行
3. 安全
3.1 最大的就是使用jvm的垃圾回收机制 不需要我们程序员手动的去管理内存,降低了内存泄漏的风险
3.2 从Java语言本身的特性语法来考虑
异常机制、封装使用权限修饰符
4. 多线程
可以很简单进行多线程编程
先说JVM JVM就是java虚拟机 它的作用就是起到一个翻译的作用
然后加上核心内库 = JRE JRE就已经有了Java代码的运行环境了 所以说如果只是单纯的跑代码 安装JRE就行了
在JRE的基础再加上一点Java的工具 就变成了JDK了 Java的工具就是bin包下面的一些命令 java javac javap javadock jconsole jms
JavaSE是Java基础类库JVM的核心组件
JavaEE是JavaSE的升级版 Java企业级类库 包含一些规范(Servlet、JSP)专为企业开发打造
还有一个JavaME Java微型类库 为了小电器里面运行
字节码就是通过javac命令得到的这样一种文本 还不能直接运行
字节码就只面向JVM,只有JVM才懂它 交由JVM翻译成机器码与操作系统打交道
好处:就是实现跨平台性 具体就是说我这个代码只要生成了一个字节码,这个字节码就可以只需要一份 然后交由不同操作系统上面的JVM翻译成对应的操作系统所能理解的机器码
首先就是要理解什么是编译型语言什么又是解释型语言
编译型语言
很直接 可以直接将源代码一次编译成机器码 所以效率很高 但是开发效率低 c系语言
解释型语言
它是需要逐行进行解释运行,就是解释一行我就运行一行 没有编译的这一说 只有解释
执行效率低下 但是开发效率高
到底为什么Java是编译与解释并行的呢?
因为Java代码首先需要使用javac命令将其编译成字节码 然后需要使用JVM的执行引擎来进行解释
虽然是解释 但是对于热点代码 JVM使用jJIT即时编译器 可以将热点代码直接编译成机器码 以后就不需要再次解释了 直接运行机器码就行了
1. 是否开源 前者完全开源 后者部分开源
2. 是否免费 前者完全免费 后者部分版本需要收费 但是随着Java版本的推进 就比如JDK11也是免费的
3. 功能性 OpenJDK肯定功能没有OrecleJDK强的 就比如说一些Java工具 OpenJDK就没有
JFR、JMC监控工具
1. Java更简单 舍弃了C++中的指针 并且不支持多继承 c++还支持运算符重载 Java不支持
2. Java语言是可以使用JVM的垃圾回收机制自动的进行内存管理 而C++则需要程序员手动的释放内存
3. 安全性 c++可以手动的操作内存 而Java不行