特性
Java 各版本的新特性
New highlights in Java SE 8
- Lambda Expressions
- Pipelines and Streams
- Date and Time API
- Default Methods
- Type Annotations
- Nashhorn JavaScript Engine
- Concurrent Accumulators
- Parallel operations
- PermGen Error Removed
New highlights in Java SE 7
- Strings in Switch Statement
- Type Inference for Generic Instance Creation
- Multiple Exception Handling
- Support for Dynamic Languages
- Try with Resources
- Java nio Package
- Binary Literals, Underscore in literals
- Diamond Syntax
详细说明
Java SE 8 新特性
Java SE 8 引入了许多新特性,以下是其中的一些:
-
Lambda 表达式:简化了代码编写,并支持函数式编程。
-
流式 API:提供了一种更为简单、可读性更高的方式来处理集合数据。
-
日期和时间 API:提供了一个新的日期和时间 API,使日期和时间处理更加简单。
-
默认方法:允许接口在不破坏现有实现的情况下添加新方法。
-
类型注解:增加了对代码中类型注解的支持。
-
Nashhorn JavaScript 引擎:引入了一个新的 JavaScript 引擎。
-
并发累加器:提供了一种高效的累加器,可用于并发计算。
-
并行操作:提供了一种新的并行处理方式,可以更快地处理大数据集。
-
移除 PermGen 错误:通过使用元空间来替代永久代,避免了 PermGen 错误。
Java SE 7 新特性
Java SE 7 也引入了一些新特性:
-
字符串在 Switch 语句中的使用:支持在 Switch 语句中使用字符串。
-
泛型实例创建时类型推断:支持类型推断,使得代码更加简洁。
-
多异常捕获处理:支持一次捕获多个异常。
-
对动态语言的支持:引入了一些新的 API,以支持动态语言。
-
带资源的 Try 语句:支持在 Try 语句中声明资源,并在使用后自动关闭。
-
Java nio 包:引入了一个新的 I/O API。
-
二进制字面量和下划线分隔符:支持在代码中使用二进制字面量和下划线分隔符。
-
Diamond 语法:支持使用“<>”来自动推断泛型类型。
参考资料
Java 与 C++ 的区别
- Java 是纯粹的面向对象语言,所有的对象都继承自 java.lang.Object,C++ 为了兼容 C 即支持面向对象也支持面向过程。
- Java 通过虚拟机从而实现跨平台特性,但是 C++ 依赖于特定的平台。
- Java 没有指针,它的引用可以理解为安全指针,而 C++ 具有和 C 一样的指针。
- Java 支持自动垃圾回收,而 C++ 需要手动回收。
- Java 不支持多重继承,只能通过实现多个接口来达到相同目的,而 C++ 支持多重继承。
- Java 不支持操作符重载,虽然可以对两个 String 对象执行加法运算,但是这是语言内置支持的操作,不属于操作符重载,而 C++ 可以。
- Java 的 goto 是保留字,但是不可用,C++ 可以使用 goto。
What are the main differences between Java and C++?(opens new window)
JRE or JDK
JRE
:Java Runtime Environment,Java 运行环境的简称,为 Java 的运行提供了所需的环境。它是一个JVM
程序,主要包括了JVM
的标准实现和一些 Java 基本类库。JDK
:Java Development Kit,Java 开发工具包,提供了 Java 的开发及运行环境。JDK 是 Java 开发的核心,集成了JRE
以及一些其它的工具,比如编译 Java 源码的编译器 javac 等。
参考资料
- Eckel B. Java 编程思想[M]. 机械工业出版社, 2002.
- Bloch J. Effective java[M]. Addison-Wesley Professional, 2017.