文章目录
前言
记录java小白须知的一些术语
JVM (Java Virtual Machine)
JVM(Java Virtual Machine,Java虚拟机)是Java技术体系的核心组件,它是一个抽象化的计算机,能够在各种不同的硬件和操作系统平台上通过软件模拟的方式来执行Java字节码。简单来说,JVM为Java程序提供了一个标准化的运行环境,使得编写的Java代码能够实现“一次编写,到处运行”(Write Once, Run Anywhere)的目标。以下是JVM的一些关键特性和用途:
JVM的组成部分
- 类加载器(Class Loaders):负责查找并加载类文件到内存中,准备执行。JVM有不同类型的类加载器,包括Bootstrap ClassLoader、Extension ClassLoader、Application ClassLoader以及自定义类加载器,它们共同构成了类加载的层次结构。
- 运行时数据区(Runtime Data Areas):包括方法区、堆、Java栈、本地方法栈、程序计数器等,用于存储程序运行时的各种数据和控制信息。
- 执行引擎:负责解释或编译字节码为机器码,并执行这些指令。现代JVM采用即时编译(JIT, Just-In-Time Compilation)技术来提高执行效率。
- 内存管理:通过垃圾回收器(Garbage Collector, GC)自动管理内存,回收不再使用的对象所占用的空间,减少程序员的负担。
- 安全性:提供了安全机制来限制程序的非法访问,如类加载器验证、安全沙箱等,增强了程序的安全性。
JVM的作用
- 平台无关性:JVM作为Java代码与底层硬件和操作系统的中间层,屏蔽了具体平台的差异,使得Java程序可以跨平台运行,无需重新编译。
- 代码安全:通过类加载器的验证机制和安全策略,确保加载的类安全可靠,防止恶意代码执行。
- 内存管理自动化:自动的内存管理和垃圾回收机制简化了开发过程,避免了常见的内存泄露和指针错误问题。
- 性能优化:JVM可以通过即时编译、方法内联、代码缓存等多种技术优化代码执行效率,提升应用性能。
- 动态扩展:支持动态加载类和动态链接库,使得程序可以在运行时扩展功能。
为什么需要JVM
JVM的设计初衷是为了实现跨平台的兼容性和可移植性,这是通过将Java源代码编译为与平台无关的字节码(.class文件)来实现的。字节码是一种中间语言,它不直接对应任何特定的硬件架构,而是由JVM在目标平台上解释或编译执行。这种设计允许开发者编写一次代码,然后在任何安装了JVM的平台上运行,极大地提高了开发效率和程序的可维护性。此外,JVM还负责内存管理、安全性检查、性能优化等工作,减轻了开发者的负担,使得他们可以更加专注于业务逻辑的实现。
JRE(Java Runtime Environment)
JRE(Java Runtime Environment,Java运行时环境)是Java平台的一个组成部分,它为运行Java应用程序提供必要的环境。JRE包含了使Java程序得以在计算机上执行的所有组件,而不包括开发工具。以下是JRE的关键组成部分和其主要作用:
JRE的组成部分
- Java虚拟机(JVM, Java Virtual Machine):JVM是核心部分,负责解释或编译Java字节码为机器代码并执行。它是Java跨平台特性的基石,确保了编译后的Java程序可以在任何安装了相应JRE的设备上运行。
- Java类库:包含了Java语言的基本类和API,这些是Java程序运行时所需的预编译类文件。这些类库提供了基本功能,如输入输出处理、网络通信、字符串操作、集合框架等。
- Java应用程序启动器:用于启动Java应用程序的工具,它管理JVM的启动并传递必要的参数给JVM,让程序开始执行。
JRE的作用
- 运行Java应用程序:JRE使得终端用户无需了解Java编程细节,即可在他们的设备上运行Java应用程序。无论是桌面应用、Web应用的客户端(Applet,尽管已不常用)还是服务器端应用,只要有JRE,用户就能直接运行。
- 跨平台兼容性:因为JRE保证了Java程序的跨平台性,用户可以在不同的操作系统上安装对应的JRE来运行相同的Java程序,无需担心兼容性问题。
- 简化最终用户的安装和使用:开发者可以将程序打包成JAR文件,最终用户只需安装JRE,就可以直接运行这些程序,无需关心编译等开发环节。
为什么需要JRE
JRE的存在是为了分离开发环境与运行环境,使得Java应用程序的分发和使用变得简单。对于大多数最终用户而言,他们并不需要编译器、调试器等开发工具,仅需一个能够执行Java程序的环境即可。因此,JRE提供了一个轻量级、易于部署的解决方案,确保了用户能够专注于使用应用程序,而非关心技术细节。此外,它也是Java“一次编写,到处运行”哲学的关键实现部分,确保了应用的广泛普及和易用性。
JDK(Java Development Kit,Java开发工具包)
JDK(Java Development Kit,Java开发工具包)是Java程序员进行开发工作的核心工具集。它是Oracle公司(以及早期的Sun Microsystems)为Java平台提供的官方开发环境,旨在支持编写、编译、调试和运行Java应用程序。JDK是Java初学者和专业开发者都必须掌握的关键组件。下面是对JDK的详细说明:
JDK的组成部分
- Java编译器(javac):将源代码(.java文件)转换为可执行的Java字节码(.class文件)。
- Java运行时环境(JRE):包含JVM(Java虚拟机)和Java类库,是运行Java程序的必要条件。
- Java文档生成器(javadoc):从源代码注释中自动生成HTML格式的API文档。
- Java调试器(jdb):用于调试Java应用程序,允许设置断点、查看变量值等。
- 性能分析工具(如jconsole、jvisualvm):监控和分析Java应用程序的性能,包括内存使用、CPU占用等。
- 命令行工具:如jar(用于创建和管理JAR文件)、javap(Java反汇编器,查看字节码)、keytool(密钥和证书管理工具)等。
- 类库和API文档:Java标准库中的类和接口,为开发者提供了大量预先实现的功能,包括集合、多线程、网络编程、数据库连接(JDBC)、图形用户界面(Swing)等。
JDK的作用
- 开发支持:提供必要的工具帮助开发者编写、编译Java代码。
- 编译和执行:将源代码编译为字节码,并通过JRE运行这些字节码。
- 调试与测试:利用调试器和分析工具检测和修复代码错误,优化性能。
- 打包与部署:使用jar工具将类和资源打包成可分发的JAR文件。
- 文档生成:自动生成API文档,便于团队协作和后期维护。
为什么需要JDK
JDK是开发Java应用程序的基石,它不仅仅包含了运行Java程序所需的JRE,更重要的是提供了全面的开发工具和库,使得开发者能够高效地完成从编码、编译、测试到部署的整个开发流程。没有JDK,开发者无法从头开始创建新的Java应用程序,也无法利用Java的高级特性和类库来增强应用功能。
总之,JDK是Java开发的必备工具包,它确保了Java语言的跨平台性,同时通过丰富的工具链提升了开发效率和应用质量。
JAR
JAR 文件是 Java ARchive 文件的缩写,它是 Java 平台上的一种文件格式,主要用于聚合大量的 Java 类文件、相关的元数据和资源(如图片、配置文件等)到一个压缩的文件中。JAR 文件类似于 ZIP 文件,使用 ZIP 压缩算法进行压缩。它简化了类和资源的管理和分发过程。
JAR 文件的主要用途包括:
- 打包应用程序或库:开发人员可以将项目中的所有类文件和资源打包成一个 JAR 文件,便于发布、分发和部署Java应用或库。
- 封装库:第三方库通常被打包成 JAR 文件供其他开发者使用,只需将 JAR 文件添加到项目的类路径中即可使用其中的类和资源。
- 可执行程序:通过在 JAR 文件的清单(MANIFEST.MF)中指定主类,可以使其成为可直接双击运行的可执行 JAR 应用程序。
- 模块化应用:在Java平台模块系统(JPMS,自Java
9起引入)中,虽然主要使用JMOD文件,但JAR文件也可以作为模块的一部分被使用,进行模块化开发。
1.1 使用JAR包有以下几个显著的好处
-
模块化和组织结构清晰:JAR包允许将相关类和资源文件组织在一起,形成一个逻辑单元,便于管理和维护。这对于大型项目尤其重要,因为它帮助保持代码结构的整洁和模块化。
-
简化部署:将应用或库打包成一个JAR文件简化了部署过程。只需分发单个文件,而不是多个分散的类和资源文件,降低了部署的复杂度和出错的可能性。
-
版本控制:JAR包内可以包含版本信息,有助于追踪和管理不同版本的库或组件,便于回滚或升级。
-
提高加载效率:JAR文件可以被JVM高效加载,因为它们是预编译的,并且可以被缓存。此外,由于JAR文件是压缩的,减少了磁盘空间占用和网络传输时间。
-
安全性:JAR文件可以被数字签名,确保文件的完整性和来源的真实性。这对于防止恶意代码注入和确认软件的可靠性至关重要。
-
跨平台兼容性:由于Java的平台无关性,JAR文件可以在任何支持Java的平台上使用,提高了代码的可移植性。
何时使用JAR包:
- 当你需要分发或共享自己的Java库、组件或服务时,打包成JAR文件可以让其他人方便地将其集成到他们的项目中。
- 开发Java应用程序时,如果你的应用由多个模块组成,每个模块可以打包成独立的JAR,便于管理和复用。
- 需要在Java Web Start或Applet中部署应用程序时,使用JAR包可以减少下载时间和提高安全性。
- 当你想要创建一个可执行的Java应用时,通过在JAR的Manifest文件中指定Main-Class属性,可以使其成为一个可直接运行的jar应用。
- 在需要利用Java模块系统中,尽管主要使用JMOD文件,但JAR文件仍然可用于包含资源或作为模块的一部分。
Class
Class: Java程序的基本单位,源代码经过编译后生成的字节码文件,每个类都定义了一种对象的结构和行为。
Object
Object: 对象是类的实例,Java是一种面向对象的编程语言,通过对象来表示现实世界中的实体。
OOP
OOP (Object-Oriented Programming): 面向对象编程。强调将数据和处理数据的方法封装在对象中,通过对象交互来设计和实现程序。
Encapsulation 封装
Encapsulation: 封装,将数据(属性)和操作数据的方法(行为)捆绑在一起,隐藏内部细节,只暴露公共接口。
Inheritance 继承
Inheritance: 继承,子类可以继承父类的属性和方法,实现代码复用和扩展。
Polymorphism 多态
Polymorphism: 多态,允许使用父类类型的引用指向子类对象,使得同一接口可以表现出不同的行为。
Interface 接口
Interface: 接口,定义了一组没有具体实现的方法,用来规定某些类必须遵循的规则或提供特定功能。
Abstract Class
Abstract Class: 抽象类,不能直接实例化,可以包含抽象方法(没有具体实现的方法),为子类提供共通的实现基础。
Exception Handling
Exception Handling: 异常处理,Java中通过try-catch-finally结构来捕获和处理程序运行时可能发生的异常情况。
Garbage Collection
Garbage Collection: 垃圾回收,自动管理内存,自动回收不再使用的对象所占的内存空间,程序员无需手动释放内存。
Multithreading
Multithreading: 多线程,Java支持同时执行多个线程,以提高程序的执行效率和响应速度。
总结
java 基础概念认识