零基础学习Java---第一天

Java诞生、运行机制及JVM、JRE、JDK介绍

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

日期:2025年6月18日

种一棵树最好的时间是十年前,其次就是现在。现在就开始学习,坚持。


提示:以下内容仅自己的学习记录,学习视频:B站:狂神说Java

一、Java的诞生

(1)1972年C诞生:

	(1)贴近硬件,运行极快,效率极高
	(2)操作系统,编译器,数据库,网络系统等
	(3)指针和内存管理

(2)1982年C++诞生:

	(1)面向对象
	(2)兼容C
	(3)图形领域,游戏等

(3)1995年Java正式发布:

	(1)简单性
	(2)面向对象
	(3)可移植性
	(4)高性能
	(5)分布式
	(6)动态性
	(7)多线程
	(8)安全性
	(9)健壮性

二、第一个Java程序–Hello World!

1.随便新建一个文件夹,存放学习代码

2.新建一个Java文件

	(1)文件后缀为.java
	(2)Hello.java

3.编写代码

代码如下(示例):

public class Hello {
    public static void main(String[] args) {   // 快捷:psvm
        System.out.println("Hello World");  // 快捷:sout,补全键:Tab

    }
}

2.注意事项

   (1)Java对字母大小写敏感
   (2)尽量使用英文,中文会报错
   (3)文件名和类的名必须保持一致,且首字母大写

三、Java运行机制

运行是指使用Java解释器将字节码文件翻译成机器代码,执行并显示结果。 字节码文件是一种和任何具体机器环境及操作系统环境无关的中间代码,它是一种二进制文件,是Java源文件由Java编译器编译后生成的目标代码文件。
在这里插入图片描述先编译再解释
注释:编译型语言和解释型语言的区别:

(1)编译性语言(一次全部)

编译性语言,如C、C++和Pascal,需要通过编译器将源代码一次性转换成机器语言,生成可执行文件(例如Windows下的.exe文件)。这种转换只需进行一次,之后就可以无限次运行生成的机器码,无需再次编译。编译性语言的优势在于执行效率高,但由于依赖于编译器,它们通常不具备良好的跨平台性。不同的操作系统可能需要不同的编译器,而且可执行文件通常无法在不同的操作系统间移植。

(2)解释性语言(逐句解释)

解释性语言,如Python、JavaScript和Ruby,不需要预先编译。源代码在程序运行时由解释器逐行转换成机器语言。这意味着每次执行程序时,源代码都需要被重新解释,这通常会导致解释性语言的执行效率低于编译性语言。然而,解释性语言的优势在于跨平台性好,因为不同平台的解释器可以将相同的源代码解释成适合该平台的机器码。

(3)Java的特殊性

Java语言是一种特殊的情况,它结合了编译性和解释性语言的特点。Java源代码首先被编译成与平台无关的字节码文件(.class文件),然后这些字节码文件可以在不同平台的Java虚拟机(JVM)上运行。JVM在运行时解释字节码,这个过程是解释性的。
在这里插入图片描述

四、JVM、JRE、JDK

(1)JVM(Java Virtual Machine Java虚拟机)

(1)JVM是Java字节码执行的引擎,为java程序的执行提供必要的支持,还能优化java字节码,使之转换成效率更高的机器指令。程序员编写的程序最终都要在JVM上执行,JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的。
(2)ClassLoader是java运行时一个重要的系统组件,负责在运行时查找和装入类文件的类。
(3)JVM屏蔽了与具体操作系统平台相关的信息,从而实现了java程序只需生成在JVM上运行的字节码文件(class文件),就可以在多种平台上不加修改地运行。不同平台对应着不同的JVM,在执行字节码时,JVM负责将每一条要执行的字节码送给解释器,解释器再将其翻译成特定平台环境的机器指令并执行。java语言最重要的特点就是跨平台运行,使用JVM就是为了支持与操作系统无关,实现跨平台运行。

ClassLoader
(1)是JVM实现的一部分,包括bootstrapclassloader(启动类加载器)

(2)ClassLoader在JVM运行的时候加载java核心的API,通过java程序实现两个ClassLoader:

ExtClassLoader,它的作用是用来加载java的扩展API,也就是lib\ext类;

AppClassLoader,用来加载用户机器上CLASSPATH设置目录中的Class.

(3)ClassLoader加载流程:当运行一个程序的时候,JVM启动,运行bootstrapclassloader,该ClassLoader加载java核心API,然后调用ExtClassLoader加载扩展API,最后AppClassLoader加载CLASSPATH目录下定义的Class.

(2)JRE

JRE是JavaRuntimeEnvironment,java运行时环境,它是java程序运行所必须的环境集合,主要由java虚拟机、java平台核心类和若干支持文件组成。其不包含开发工具、编译器、调试器以及其他工具。

在执行java程序的时候,操作系统会按照下面顺序寻找JRE环境。

(1)先查找当前目录下有没有JRE

(2)再查找父目录下有没有JRE

(3)接着在环境变量PATH制定的路径中查找JRE

(4)注册表查看CurrentVersion的键值指向哪个JRE

JRE自带的基础类库主要在JRE\LIB\rt.jar文件中。在程序运行时,JRE由ClassLoader(类加载器)负责查找和加载程序引用到的基类库和其他类库。基础类库,Classloader会自动到rt.jar的位置;其他的类库,ClassLoader在环境变量CLASSPATH制定的路径中搜索。

(3)JDK

JDK是Java Development Kit,简称java开发工具包。

JDK是java的核心。它包括java运行环境、一堆java工具盒java基础的类库(rt.jar)。

JDK包含JRE的全部内容外,还包含开发者用以编译、调试和运行java程序的工具。

JDK、JRE、JVM之间的关系:
在这里插入图片描述

原文链接:https://blog.youkuaiyun.com/xwh3165037789/article/details/128729746

总结

以上就是今天学习的内容啦~今天简单了解了java,加油!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值