初识java

1.java的特点

1.简单易学
2.面向对象(封装、继承、多态)
3.跨平台(java虚拟机)
4.支持多线程(c++语言没有内置的多线程机制,必须调用操作系统的多线程功能来进行多线程程序设计,java支持多线程)
5.可靠性
6.安全性
7.支持网络编程并且很方便
8.编译和解释并存
9.有很完善的生态圈

java经典宣传口号:“一处编写,多处运行”

2.JDK、JRE、JVM

JDK 是 Java Development Kit 缩写,它是功能齐全的 Java SDK。它拥有 JRE 所拥有的一切,还有编译器(javac)和工具(如 javadoc 和 jdb)。它能够创建和编译程序。

JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机(JVM),Java 类库,java 命令和其他的一些基础构件。但是,它不能用于创建新程序。

JVM 即java虚拟机,是运行Java字节码的虚拟机,JVM针对不同的系统有不同的实现目的就是使用相同的字节码,他们 都会给出相同的结果。字节码和不同系统的JVM是实现java语言“一次编写,随处运行”的管家所在。
JVM并不是只有一种,只要满足JVM规范,每个公司、组织、个人都可以开发自己专属的JVM,也就是说我们平时接触到的HotSpot VM 仅仅是实现JVM 规范的一种。
JDK、JRE、JVM的关系图:
初识java_第1张图片

3.什么是字节码?使用字节码的好处是什么?

在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以, Java 程序运行时相对来说还是高效的(不过,和 C++,Rust,Go 等语言还是有一定差距的),而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。

Java 程序从源代码到运行的过程如下图所示:
初识java_第2张图片

4.为什么说 Java 语言“编译与解释并存”?

**编译型 :**编译型语言 会通过编译器将源代码一次性翻译成可被该平台执行的机器码。一般情况下,编译语言的执行速度比较快,开发效率比较低。常见的编译性语言有 C、C++、Go、Rust 等等。
**解释型 :**解释型语言会通过解释器一句一句的将代码解释(interpret)为机器代码后再执行。解释型语言开发效率比较快,执行速度比较慢。常见的解释性语言有 Python、JavaScript、PHP 等等。
初识java_第3张图片
答:Java 语言既具有编译型语言的特征,也具有解释型语言的特征。因为 Java 程序要经过先编译,后解释两个步骤,由 Java 编写的程序需要先经过编译步骤,生成字节码(.class 文件),这种字节码必须由 Java 解释器来解释执行。

5.Oracle JDK vs OpenJDK

对于 Java 7,没什么关键的地方。OpenJDK 项目主要基于 Sun 捐赠的 HotSpot 源代码。此外,OpenJDK 被选为 Java 7 的参考实现,由 Oracle 工程师维护。

Oracle JDK 大概每 6 个月发一次主要版本(从 2014 年 3 月 JDK 8 LTS 发布到 2017 年 9 月 JDK 9 发布经历了长达 3 年多的时间,所以并不总是 6 个月),而 OpenJDK 版本大概每三个月发布一次。但这不是固定的。
OpenJDK 是一个参考模型并且是完全开源的,而 Oracle JDK 是 OpenJDK 的一个实现,并不是完全开源的。

Oracle JDK 比 OpenJDK 更稳定,OpenJDK 和 Oracle JDK 的代码几乎相同(OpenJDK 的代码是从 Oracle JDK 代码派生出来的,可以理解为在 Oracle JDK 分支上拉了一条新的分支叫 OpenJDK,所以大部分代码相同),但 Oracle JDK 有更多的类和一些错误修复。因此,如果您想开发企业/商业软件,我建议您选择 Oracle JDK,因为它经过了彻底的测试和稳定。
在响应性和 JVM 性能方面,Oracle JDK 与 OpenJDK 相比提供了更好的性能。

Oracle JDK 不会为即将发布的版本提供长期支持(如果是 LTS 长期支持版本的话也会,比如 JDK 8,但并不是每个版本都是 LTS 版本),用户每次都必须通过更新到最新版本获得支持来获取最新版本;

Oracle JDK 使用 BCL/OTN 协议获得许可,而 OpenJDK 根据 GPL v2 许可获得许可。

你可能感兴趣的:(java基础,java,开发语言)