Java是一种广泛使用的编程语言,自1995年由Sun Microsystems推出以来,已经经历了多个版本的迭代。下面是Java的主要版本及其特点的详细介绍,包括一些案例。
Java 1.0 (1995)
Java 1.0是Java语言的最初版本,包含了基础的语言特性和库。这个版本的主要特点包括:
- 基础的类库,如
java.lang
、java.io
、java.util
等。 - awt(抽象窗口工具包)用于图形用户界面开发。
案例:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
Java 1.1 (1996)
Java 1.1引入了Java Applets,使得Java能够在浏览器中运行。
案例:
import java.applet.Applet;
import java.awt.Graphics;
public class SimpleApplet extends Applet {
public void paint(Graphics g) {
g.drawString("Hello, Applet!", 50, 25);
}
}
Java 2 (1998)
Java 2平台分为三个版本:Java 2 Standard Edition (J2SE)、Java 2 Enterprise Edition (J2EE) 和 Java 2 Micro Edition (J2ME)。
- J2SE:包含了Swing图形用户界面库。
- J2EE:用于企业级应用开发,包含了Servlets和JavaServer Pages (JSP)。
- J2ME:用于开发嵌入式和移动设备上的应用。
案例:
import javax.swing.JOptionPane;
public class SimpleSwingApp {
public static void main(String[] args) {
JOptionPane.showMessageDialog(null, "Hello, Swing!");
}
}
Java 5 (2004)
Java 5带来了许多重要的新特性,包括:
- 泛型(Generics):提供编译时类型安全。
- 注解(Annotations):提供元数据。
- 枚举(Enums):提供类型安全的枚举类型。
- 可变参数(Varargs):简化方法重载。
- For-each循环:简化数组和集合的遍历。
案例:
public class GenericsExample {
public static void main(String[] args) {
List<String> strings = new ArrayList<String>();
strings.add("Hello");
strings.add("World");
for (String s : strings) {
System.out.println(s);
}
}
}
Java 6 (2006)
Java 6引入了Java Web Start,用于轻松部署Java应用程序。
案例:
// Java Web Start通常通过JNLP文件启动,而不是直接编写代码示例。
Java 7 (2011)
Java 7带来了以下新特性:
- switch语句支持字符串。
- 异常处理中try-with-resources语句。
- NIO.2文件系统API。
- 泛型方法推断。
案例:
public class SwitchStringExample {
public static void main(String[] args) {
String day = "Wednesday";
switch (day) {
case "Monday":
System.out.println("Start of work week");
break;
case "Wednesday":
System.out.println("Middle of work week");
break;
default:
System.out.println("End of work week");
break;
}
}
}
Java 8 (2014)
Java 8是Java语言发展中的一个重要里程碑,引入了以下关键特性:
- Lambda表达式。
- 方法引用。
- Stream API。
- Date-Time API。
案例:
import java.util.Arrays;
import java.util.List;
public class LambdaExample {
public static void main(String[] args) {
List<String> strings = Arrays.asList("Hello", "World");
strings.forEach(System.out::println);
}
}
Java 9 (2017)
Java 9引入了模块化系统(Project Jigsaw),以及其他一些特性:
- 模块化系统。
- 私有接口。
- G1垃圾收集器的改进。
案例:
// 模块化示例通常涉及到module-info.java文件和模块依赖,不适合简短代码示例。
Java 10 (2018)
Java 10引入了局部变量类型推断(var),以及其他特性:
- 局部变量类型推断(var)。
- 根证书颁发机构。
案例:
public class VarExample {
public static void main(String[] args) {
var number = 42;
System.out.println(number);
}
}
Java 11 (2018)
Java 11是长期支持版本(LTS),引入了以下特性:
- 局部变量类型推断(var)。
- 字符串的lines()方法。
- HttpClient API。
案例:
public class VarExample {
public static void main(String[] args) {
var lines = "Hello\nWorld".lines();
lines.forEach(System.out::println);
}
}
Java 12 (2019)
Java 12引入了以下特性:
- Switch表达式(预览)。
- 文件系统API的改进。
案例:
public class SwitchExpressionExample {
public static void main(String[] args) {
var day = "Wednesday";
var result = switch (day) {
case "Monday" -> "Start of work week";
case "Wednesday" -> "Middle of work week";
default -> "End of work week";
};
System.out.println(result);
}
}
Java 13 (2019)
Java 13引入了以下特性:
- 文本块(预览)。
- 可恢复的异常。
案例:
public class TextBlockExample {
public static void main(String[] args) {
var quote = """
Hello,
World!
""";
System.out.println(quote);
}
}
Java 14 (2020)
Java 14引入了以下特性:
- Switch表达式(正式版)。
- instanceof模式匹配(预览)。
案例:
public class PatternMatchingExample {
public static void main(String[] args) {
Object obj = "Hello";
if (obj instanceof String s) {
System.out.println(s.length());
}
}
}
Java 15 (2020)
Java 15引入了以下特性:
- instanceof模式匹配(正式版)。
- sealed classes(预览)。
案例:
// Sealed classes示例通常涉及到定义密封类及其允许的子类,不适合简短代码示例。
Java 16 (2021)
Java 16引入了以下特性:
- Record类(预览)。
- ZGC(Z Garbage Collector)。
案例:
public record Person(String name, int age) {}
public class RecordExample {
public static void main(String[] args) {
Person person = new Person("Alice", 30);
System.out.println(person.name() + " is " + person.age() + " years old.");
}
}
Java 17 (2021)
Java 17是当前的长期支持版本,引入了以下特性:
- sealed classes(正式版)。
- 加强的对Java记录的支持。
案例:
// Sealed classes和记录类的示例如上所述。
Java的每个版本都带来了一些新特性和改进,使得Java语言更加健壮和易于使用。随着时间的推移,Java社区不断发展和完善,以满足现代软件开发的需求。