0%

Java-1

计算机语言的历史及Java的历史地位

第一代语言

  • 打孔机 - 纯机器语言

第二代语言

  • 汇编

第三代语言

  • C、Pascal、Fortran:面向过程的语言
  • C++:面向过程/面向对象
  • Java:跨平台的纯面向对象语言
  • .NET:跨语言的平台

Java自身的发展史

起源与初期发展

Java的开发始于1991年,由James Gosling领导的Sun Microsystems团队提出,最初的名字为“Oak”,目的是用于消费电子设备中的嵌入式系统。1995年,Java 1.0正式发布,并成为面向互联网和企业级应用开发的编程语言。

关键版本演变

  • Java 1.0 (1995):Java初次发布,具备“编写一次,随处运行”的核心理念。
  • Java 2 (1998):引入了三大平台版本:J2SE(标准版)、J2EE(企业版)、J2ME(移动版),增强了面向企业和移动设备的开发。
  • Java 5 (2004):引入泛型、枚举、增强型for循环等语言特性,极大提升了语言的灵活性与表达力。
  • Java 8 (2014):最具革命性的一次更新,引入了Lambda表达式、Streams API等新特性,极大提升了并发和函数式编程的支持。
  • Java 9及以后:Java 9推出模块化系统(Project Jigsaw),Java 10引入局部变量类型推断,Java 11成为长期支持版(LTS)。

Oracle收购与开源

2010年,Oracle收购了Sun Microsystems,并接管了Java的发展。Java逐步转向开源社区驱动,Java SE平台下的OpenJDK成为Java的官方参考实现。

Java体系

  • Java SE(Standard Edition):提供核心的Java库和API,涵盖语言基础、数据结构、并发、多线程、文件处理等,适用于桌面应用和核心后端开发。
  • Java EE(Enterprise Edition):侧重于企业级应用开发,提供了分布式计算、Web服务、数据库交互、JMS消息处理等特性。
  • Java ME(Micro Edition):适用于嵌入式和移动设备的精简版Java,过去用于开发功能手机和嵌入式系统。
  • JavaFX:用于构建现代用户界面应用,替代Swing和AWT,适用于桌面和移动应用的UI开发。

Java的特点

  • 跨平台性(“一次编写,随处运行”):Java程序通过编译成字节码,依赖于JVM(Java虚拟机)运行,确保在不同操作系统上可移植。
  • 面向对象:Java完全支持面向对象的编程理念,具有封装、继承和多态等特性,便于构建模块化和可扩展的应用。
  • 安全性:Java提供了强大的安全机制,如字节码校验、沙箱模型和权限管理,尤其适用于网络环境中的应用程序。
  • 垃圾回收机制:Java自动管理内存分配和释放,通过垃圾回收器(Garbage Collector)有效回收不再使用的对象,避免内存泄漏。
  • 多线程支持:Java原生支持多线程编程,允许开发者在程序中处理多个任务,提高程序的执行效率。
  • 丰富的标准库:Java提供了一个庞大的标准类库,涵盖I/O、网络编程、数据结构、并发控制、GUI开发等领域。

Java的运行机制

  • 编译过程:Java代码首先被编译为中间字节码(bytecode),存储在.class文件中。字节码独立于底层硬件和操作系统。
  • JVM(Java虚拟机):Java程序的字节码在各个平台的JVM中运行。JVM负责解释字节码并将其转换为机器代码,以便在特定平台上执行。
  • JIT(即时编译器):JVM内含的JIT编译器在运行时将频繁执行的字节码块动态编译为本地机器代码,从而提高性能。
  • 垃圾回收(Garbage Collection):JVM管理对象的内存分配和回收,自动处理对象的生命周期,防止内存泄漏。通过标记-清除(Mark-and-Sweep)、标记-压缩等算法实现。
  • 类加载器(ClassLoader):Java使用类加载器动态加载类到内存。类加载器负责将字节码文件加载到JVM内存,并对其进行字节码校验,保证代码的正确性和安全性。

Java运行环境的安装与配置

windows部署JDK

Java-JDK安装教程

现在可以执行第一个程序了

  1. 新建一个Hello.txt, 在文件内输入

    1
    2
    3
    4
    5
    public class Hello {
    public static void main(String[] args) {
    System.out.print("Hello, World!");
    }
    }
  2. 文件名后缀改为.java

  3. 在命令行执行:

    1
    2
    3
    4
    5
    javac Hello.java
    java Hello

    # 命令行输出:
    Hello, World!

    注意:

    1. javac是对Hello.java文件进行编译生成可执行的.class文件的命令, 此时直接在此执行对应的
    2. java是执行程序的命令
    3. 文件名与类名必须相同