Java整体特点
# Java 与 C++ 的区别
- 继承了 C++语言面向对象技术的核心,舍弃了容易引起错误的指针,以引用取代;(面向对象是 Java 最重要的特性,让程序耦合度更低,内聚性更高)
- 移除了 C++中的运算符重载和多重继承特性,用接口取代。
# JVM JRE JDK
关系:JVM < JRE < JDK
java 虚拟机本身——jvm
jvm 配上库、包以后——jre
jre 配上编译、调试工具以后——jdk
jvm: 运行.class 字节码的 java virtual machine 虚拟机
jre: java runtime renvironment 运行环境
jdk: java development kit 开发工具包
- JDK8 与 JDK1.8 的区别 JDK8 或者 JDK1.8 是由于自从 JDK1.5/JDK5 命名方式改变后遗留的新旧命名方式问题。所以 JDK8 或者 JDK1.8 也是同一个东西。我们口中说的Java8、JDK8、JDK1.8都是同一个东西。
从 JDK 9 开始,就不需要区分 JDK 和 JRE 的关系了,取而代之的是模块系统(JDK 被重新组织成 94 个模块)+ jlinkopen in new window 工具 (随 Java 9 一起发布的新命令行工具,用于生成自定义 Java 运行时映像,该映像仅包含给定应用程序所需的模块) 。并且,从 JDK 11 开始,Oracle 不再提供单独的 JRE 下载
# JSE,JEE,JME
JSE: Java Standard Edition 标准版
JEE: Java Enterprise Edition 企业版(用得不多)
JME: Java Micro Edition 移动版
# Spring 和 SpringBoot
Spring: JEE 的轻量替代品 SpringBoot 是 Spring+自动化配置
# 编译型和解释型之分
计算机高级编程语言类型,分为编译型(compiler, 编译器) 和 解释型(interpreter, 解释器)。这 2 者都有翻译,区别在于翻译的时机,直接翻译中文书给外国友人看,是编译型;翻译官实时翻译,是解释型
编译型执行速度更快。C++/C 是编译型语言。操作系统开发常用编译型
cpp 代码编译完成以后,变成一个二进制文件,或者说,汇编,.exe 文件。exe 文件可以直接运行,是一个机器码。不过在 windows 编译得到的.exe 文件,不能在 Linux 系统执行
解释型语言边执行边解释,速度一般。Python/JavaScript/Shell 都是解释型语言
.java
被执行预编译,得到.class
中间代码,叫做 java 字节码。jvm 将字节码转换成机器码。
# Java 呢?
Java 先编译,再解释,2 个环节都有,同时具有编译型语言和解释型语言的特点
# 对Java特点的总结
1、简单(语法和 C 语言相像,卸下了指针和内存管理 2 个枷锁,不支持对象的多继承(举例:菱形继承),底层是C++实现的)
2、面向对象(纯面向对象,更符合人的思维模式。Java 最重要的特性,让程序耦合度更低,内聚性更高)
3、跨平台/可移植性(windows内核与Linux内核不同,这2个操作系统执行指令的方式是不一样的。于是然后Java运行在一台虚拟的计算机(JVM)上,由JVM屏蔽操作系统之间的差异。JVM 是 Java 跨平台使用的根本,docker 出现后,不再是 java 的独有特色)
4、高性能(即时编译,效率媲美 C++)
5、分布式(为网络分布式环境而设计,URL 统一资源定位,支持远程方法调用)
6、动态性(具有反射机制,这个C++不具有)
7、支持多线程。并发编程
8、可靠安全(因此适用于网络分布式环境)
9、健壮性(内存管理:和自动垃圾回收机制(GC机制)有关,垃圾是自动回收的,不需要程序员具关心。有异常机制)