java初识
java介绍
-
java是一种高级编程语言和计算平台, 最初由Sun microsystems与1995年提出
-
被设计成具有跨平台性-->一次编写的java代码可以在不同操作系统上运行, 只需要安装适当的java虚拟机(JVM) 这种特性使得java非常流行, 特别是web 应用程序开发和企业级应用程序中
java的特点
-
简单性: 语法设计简洁清晰, 易于学习和使用. 避免了喝多传统语言中容易引起错误的复杂特性, 如指针操作和手动内存管理
-
跨平台性: java代码可以编译成中间字节码(bytecode) . 在任何安装了java虚拟机(JVM) 的平台上运行, 这种跨平台性是通过将java代码转换为平台无关的中间代码实现的
-
面向对象: java是一种面向对象的编程语言, 支持面向对象编程的基本特性, 如封装, 继承,和多态
-
安全性: java内建有安全特性, 例如内置的安全性检查机制和 垃圾回收器, 有助于防止常见的安全漏洞和内存泄漏
-
多线程支持: java提供了对多线程编程的支持, 使得开发者能够编写并发执行的程序. 充分利用现代计算机的多核处理能力
java的应用领域包括但不限于
-
企业级应用开发: 大型企业软件系统, 如客户关系管理系统(CRM) . 企业资源规划系统(ERP)等
-
移动应用开发: Android操作系统采用Java作为主要的开发语言, 因此Android应用都是Java编写的
-
web开发: Java可以用于服务器端的web应用开发, 常用的框架包括Spring, Hibernate等
-
科学计算和大数据处理: Java在处理大规模和科学计算方便, 比如Hadoop和spark等大数据处理框架都有Java组件
java程序的执行过程
1. 编写代码:
开发者使用文本编辑器或集成开发环境(IDE)编写Java源代码文件(.java扩展名),在这些文件中包含了所需的程序逻辑和功能。
2. 编译:
一旦源代码编写完成,开发者使用Java编译器(javac)将Java源代码文件编译成Java字节码文件(.class扩展名)。这个过程发生在开发环境中或者命令行中,编译器会检查代码中的语法错误并生成对应的字节码。
3. 执行:
Java字节码是一种与平台无关的中间代码。这些字节码文件可以在任何安装了Java虚拟机(JVM)的平台上运行。当你要执行程序时,JVM会负责将字节码翻译成特定平台的机器码并执行。具体过程如下:
-
加载: JVM会加载所需的类文件,这包括主程序入口类和其他相关类。
-
验证: JVM会对加载的字节码进行验证,以确保其符合Java语言规范和安全要求,避免潜在的安全风险。
-
解释/编译为本地代码: 在执行过程中,JVM可能会对字节码进行解释执行,或者在运行时使用即时编译器(JIT)将字节码编译为本地机器码,以提高执行速度。
-
执行: JVM按照字节码中的指令执行程序逻辑,调用方法,操作数据等,直到程序运行结束或达到终止条件。
4. 垃圾回收:
Java具有内置的垃圾回收器(Garbage Collector),它负责自动管理内存,释放不再使用的对象所占用的内存空间。这个过程不需要程序员手动干预,有助于避免内存泄漏问题。
这个整个过程使得Java具有跨平台性和灵活性,使得开发者能够专注于编写一次代码,而不必担心其在不同平台上的执行问题。
JVM的主要功能包括
-
字节码执行: JVM是一个解释器和执行引擎,能够将Java字节码翻译为特定平台的机器码并执行。它可以通过解释执行字节码或者即时编译(JIT)将字节码转换为本地机器代码,提高程序的执行效率。
-
内存管理: JVM负责Java程序的内存分配和管理。它在运行时动态分配内存,包括堆(Heap)用于存储对象实例和运行时数据,以及栈(Stack)用于存储方法调用和局部变量。
-
垃圾回收: JVM内置了垃圾回收器(Garbage Collector),负责自动管理内存,检测和回收不再使用的对象,防止内存泄漏,使得开发者不必手动管理内存释放。
-
即时编译器(JIT): JVM中的即时编译器能够将频繁执行的字节码编译成本地机器码,以提高程序的执行速度。通过动态优化,JIT能够在运行时对代码进行优化,提高程序的性能。
-
安全管理: JVM包含安全管理器(Security Manager),能够对Java程序的安全性进行管理和控制,防止恶意代码的执行和对系统的不当访问。
JVM的架构
JVM由多个组件构成,包括:
-
类加载器(Class Loader): 负责将类文件加载到内存中,并生成对应的Class对象。
-
运行时数据区域: 包括堆、栈、方法区、程序计数器等,用于存储程序运行时的数据。
-
执行引擎: 解释器和即时编译器,负责执行字节码。
-
垃圾回收器: 负责垃圾回收和内存管理。
Java虚拟机的规范由Oracle公司制定,而实际上有多种不同的JVM实现,包括Oracle的HotSpot、OpenJ9、GraalVM等。不同的实现在性能、垃圾回收策略、优化等方面可能有所差异,但它们都遵循Java虚拟机规范,保证了Java程序的可移植性和跨平台性。
JDK的介绍
java Development Kit(JDK)是Java开发工具包,提供了Java开发所需的工具、库和JRE(Java Runtime Environment,Java运行时环境)组件。JDK包含了编译器、调试器、各种实用工具和JRE,使得开发者能够编写、编译、调试和运行Java应用程序。
-
两个主要组件:
-
javac -编译器, 将源程序转成字节码
-
java -运行编译后的java程序 (.class后缀的)
-
JDK的主要组成部分
-
Java编译器(javac): 用于将Java源代码编译成Java字节码。
-
Java运行时环境(JRE): 包含Java虚拟机(JVM)和Java核心类库。JRE允许Java程序在特定平台上运行,并提供了许多标准的Java类库和工具。
-
Java开发工具: JDK提供了一系列开发工具,如调试器(jdb)、Javadoc(用于生成文档)、jar打包工具等,有助于开发者进行代码编写、调试和管理。
-
Java API类库: 包括标准的Java类库,提供了丰富的API(应用程序接口)供开发者使用,涵盖了各种功能,从基本的数据结构到网络、图形界面和数据库访问等。
-
其他实用工具: JDK还包含其他一些实用工具,如jconsole(监视和管理JVM)、jvisualvm(Java应用程序监视和分析工具)等,用于开发和调试Java程序。
JRE的介绍
Java Runtime Environment(JRE)是Java运行时环境,它是Java应用程序的运行环境,包含了Java虚拟机(JVM)和Java类库。JRE使得计算机能够执行Java程序,运行Java字节码并提供所需的基础类库。
-
JRE(Java Runtime Environment) 就是运行java字节码的虚拟机
-
包括java虚拟(JVM), java核心类库和支持文件
-
如果只需要运行java程序, 下载并安装JRE即可
-
如果要开发java软件, 需要下载JDK
-
在JDK中附带有JRE
JRE的主要组成部分
-
ava虚拟机(JVM): JVM是Java程序运行的核心。它负责将Java字节码解释成特定平台的机器码或者进行即时编译,以便在特定平台上执行Java程序。
-
Java核心类库: JRE包含了Java标准库(Java Standard Edition API),包括了各种类和方法,用于处理输入输出、网络通信、数据结构、图形界面、安全性等各种功能。
-
运行时数据区域: 包括堆(Heap)、栈(Stack)、方法区(Method Area)等,用于存储Java程序运行时所需的数据、对象实例和方法信息。
JRE的作用:
JRE的主要作用是为Java程序的运行提供支持。当开发者将Java程序打包成可执行的jar文件或者war文件时,最终用户只需安装JRE,就可以在其计算机上运行Java应用程序。JRE的安装使得计算机能够理解和执行Java字节码。
JRE与JDK的关系:
JDK(Java Development Kit)包含了JRE,同时还包含了编译器(javac)和其他开发工具。开发者在开发Java应用程序时需要使用JDK,因为JDK提供了编译器和其他开发工具,使得开发者能够编写、编译和调试Java代码。
一般情况下,最终用户只需要安装JRE,以便能够运行Java应用程序。但是在开发Java应用程序时,开发者需要安装JDK,以便编写、编译和测试Java代码。
总之,JRE是Java应用程序的运行时环境,包含了Java虚拟机和基本的Java类库,使得计算机能够执行Java程序
JVM和JDK JRE 三者的关系
-
JVM 是Java程序的核心执行引擎,负责在计算机上执行Java字节码。
-
JRE 包含了JVM和基本的Java类库,提供了Java程序运行所需的环境。
-
JDK 包含了完整的JRE,同时还包括了开发所需的工具(编译器、调试器等),用于编写、编译和测试Java程序。
简而言之,JDK包含了完整的JRE,并提供了额外的开发工具,而JRE则提供了Java程序运行所需的环境,包括JVM和基本的类库。而JVM是Java程序的核心执行引擎,负责执行Java字节码
Java平台
-
Java SE就是标准版,包含标准的JVM和标准库,而Java EE是企业版,它只是在Java SE的基础上加上了大量的API和库,以便方便开发Web应用、数据库、消息服务等,Java EE的应用使用的虚拟机和Java SE完全相同
Java程序的结构
package com.imooc;
public class imoocpro {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 这个第一个城程序
System.out.println("hello,imooc!!!");
}
}
JDK环境搭建
1 Windows版JDK的下载和安装
-
安装和环境变量配置
-
运行程序