Java历史
Java最早是由SUN公司(已被Oracle收购)的詹姆斯·高斯林(高司令,Java之父)在上个世纪90年代初开发的一种编程语言,最初被命名为Oak(橡树),目标是针对小型家电设备的嵌入式应用,在1995年以Java的名称正式发布
Java介于编译型语言和解释型语言之间
编译型语言如C、C++,代码是直接编译成机器码执行,但是不同的平台(x86、ARM等)CPU的指令集不同,因此,需要编译出每一种平台的对应机器码
解释型语言如Python、Ruby没有这个问题,可以由解释器直接加载源码然后运行,代价是运行效率太低
而Java是将代码编译成一种“字节码”,它类似于抽象的CPU指令,然后,针对不同平台编写虚拟机,不同平台的虚拟机负责加载字节码并执行,这样就实现了“一次编写,到处运行”的效果
对于虚拟机,需要为每个平台分别开发。为了保证不同平台、不同公司开发的虚拟机都能正确执行Java字节码,SUN公司制定了一系列的Java虚拟机规范。从实践的角度看,JVM的兼容性做得非常好,低版本的Java字节码完全可以正常运行在高版本的JVM上
随着Java的发展,SUN给Java又分出了三个不同版本:
- Java SE:Standard Edition 平台标准版
开发桌面应用(用c/c++更合适)、其他两个版本的基础
- Java EE:Enterprise Edition 平台企业版
用于Web方向的网站开发。(主要从事后台服务器的开发)
- Java ME:Micro Edition 平台微型版
Java语言的小型版,用于嵌入式消费类电子设备或者小型移动设备的开发
简单来说,Java SE就是标准版,包含标准的JVM和标准库,而Java EE是企业版,它只是在Java SE的基础上加上了大量的API和库,以便方便开发Web应用、数据库、消息服务等,Java EE的应用使用的虚拟机和Java SE完全相同
Java SE的标准库无法在Java ME上使用,Java ME的虚拟机也是“瘦身版”,主要应用小型移动设备的开发(手机),目前Android 安卓和 IOS 开发成为了移动平台的标准,不建议使用Java ME
从互联网到企业平台,Java是应用最广泛的编程语言,原因在于:
- Java是基于JVM虚拟机的跨平台语言,一次编写,到处运行;
- Java程序易于编写,而且有内置垃圾收集,不必考虑内存管理;
- Java虚拟机拥有工业级的稳定性和高度优化的性能,且经过了长时期的考验;
- Java拥有最广泛的开源社区支持,各种高质量组件随时可用
Java语言常年霸占着三大市场:
- 互联网和企业应用,这是Java EE的长期优势和市场地位;
- 大数据平台,主要有Hadoop、Spark、Flink等,他们都是Java或Scala(种运行于JVM的编程语言)开发的;
- Android移动平台
Java版本
从1996年发布1.0版本开始,到目前为止,最新的Java版本是Java 23:
时间 | 版本 |
---|---|
1996 | 1.0 |
1997 | 1.1 |
1998 | 1.2 |
2000 | 1.3 |
2002 | 1.4 |
2004 | 1.5 / 5.0 |
2005 | 1.6 / 6.0 |
2011 | 1.7 / 7.0 |
2014 | 1.8 / 8.0 |
2017/9 | 1.9 / 9.0 |
2018/3 | 10 |
2018/9 | 11 |
2019/3 | 12 |
2019/9 | 13 |
2020/3 | 14 |
2020/9 | 15 |
2021/3 | 16 |
2021/9 | 17 |
2022/3 | 18 |
2022/9 | 19 |
2023/3 | 20 |
2023/9 | 21 |
2024/3 | 22 |
2024/9 | 23 |
学习教程使用的Java版本是最新版的Java 23
名词解释
JDK
(Java Development Kit)是Java的开发工具包,JDK是提供给Java开发人员使用的,其中包含了Java的开发工具 和运行时环境JRE
开发工具包括:编译工具(javac.exe)打包工具(jar.exe)等。通俗的说就是开发用的
JRE
(Java Runtime Environment)是Java 运行时环境,是一个软件包, JRE包括 Java虚拟机标准实现和Java程序所需的核心基本类库等
如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。通俗的说就是运行用的
三者间的关系:层层嵌套 JDK > JRE > JVM
JVM
(Java Virtual Machine)是Java虚拟机。 它只认识 .class 为后缀的文件,它能将class文件中的字节码指令进行识别并调用操作系统向上的API完成动作
JVM是java能够跨平台的核心机制,就是把我们写的代码,转换成class文件用的
CMD命令
cmd 就是在windows操作系统中,利用命令行的方式去操作计算机
我们可以利用cmd命令去操作计算机,比如:打开文件,打开文件夹,创建文件夹等
打开CMD
-
按下快捷键:
win + R
-
在运行窗口中输出cmd
-
输出回车
cmd默认操作C盘下的users文件夹下的XXX文件夹。(XXX就是计算机名)
可在资源管理器(文件夹)的地址输入 cmd 进入当前所在路径
常用CMD命令
扩展:
在很多资料中都说成是DOS命令,其实是不对的。真正的DOS命令是1981年微软和IBM出品的MS-DOS操作系统中的命令才叫做DOS命令
而在Windows中,win98之前的操作系统是以非图形化的DOS为基础的,可以叫做DOS命令。到了2000年以后,windows逐渐的以图形化界面为主了,这个时候就不能叫DOS命令了,他只是模拟了DOS环境而已,很多的原本的DOS命令已经无法使用了,所以这个时候叫做CMD命令会更准确一些
常见的CMD命令如下:
操作 | 说明 |
---|---|
盘符名称: | 盘符切换。E:回车,表示切换到E盘。 |
dir | 查看当前路径下的内容。 |
cd 目录 | 进入单级目录。cd itheima |
cd .. | 回退到上一级目录。 |
cd 目录1\目录2... | 进入多级目录。cd itheima\JavaSE |
cd \ | 回退到盘符目录。 |
cls | 清屏。 |
exit | 退出命令提示符窗口。 |
CMD练习
需求:
利用cmd命令打开自己电脑上的软件
完成步骤:
1,确定电脑上的软件安装位置
2,启动cmd
3,进入到启动程序name.exe所在的路径。
4,输出name.exe加回车表示启动软件。
安装 JDK
下载地址:https://www.oracle.com/java/technologies/downloads/
环境变量
作用:
软件启动必须要进入当前exe所在的路径,如果想要在CMD的任意目录下都可以启动某一个软件,那么就可以把这个软件的路径配置到环境变量中PATH里面。在启动软件的时候,操作系统会先在当前路径下找,如果在当前没有再到环境变量的路径中去找。如果都找不到就提示无法启动
步骤:
- 右键此电脑,选择属性。
- 点击高级系统设置
- 选择高级,点击环境变量。
- 找系统变量里面的PATH
- 把软件的完整路径,配置到PATH当中就可以了。
开发Java程序,需要使用JDK提供的开发工具(比如javac.exe
、java.exe
等命令),而这些工具在JDK的安装目录的bin目录下,如果不配置环境变量,那么这些命令只可以在bin目录下使用,而我们想要在任意目录下都能使用,所以就要配置环境变量
JAVA_HOME:
告诉操作系统JDK安装在了哪个位置(未来其他技术要通过这个找JDK)
Path:
告诉操作系统JDK提供的javac(编译)、java(执行)命令安装到了哪个位置
注意:现在最新从官网上下载的JDK安装时会自动配置javac、java命令的路径到Path环境变量中去 ,所以javac、java可以直接使用
设置参数
-
变量名:JAVA_HOME
-
变量值:D:\Java\jdk1.8.0_91 // 要根据自己的实际路径配置
-
变量名:Path
-
变量值:%JAVA_HOME%\bin;
目录介绍
目录名称 | 说明 |
---|---|
bin | 该路径下存放了JDK的各种工具命令。javac和java就放在这个目录。 |
conf | 该路径下存放了JDK的相关配置文件。 |
include | 该路径下存放了一些平台特定的头文件。 |
jmods | 该路径下存放了JDK的各种模块。 |
legal | 该路径下存放了JDK各模块的授权文档。 |
lib | 该路径下存放了JDK工具的一些补充JAR包。 |
把 JAVA_HOME 的 bin 目录添加到 path 中是为了在任意文件夹下都可以运行 java 。打开命令提示符窗口,输入命令java -version
会看到如下输出:
java version "23.0.1" 2024-10-15
Java(TM) SE Runtime Environment (build 23.0.1+11-39)
Java HotSpot(TM) 64-Bit Server VM (build 23.0.1+11-39, mixed mode, sharing)
如果版本号不符合,说明系统存在多个JDK,需要重新配置环境变量,将JDK23提到 path 前面
JDK 工具
可以在JAVA_HOME
的bin
目录下找到很多可执行文件:
java
:这个可执行程序其实就是JVM,运行Java程序,就是启动JVM,然后让JVM执行指定的编译后的代码;javac
:这是Java的编译器,它用于把Java源码文件.java
编译为Java字节码文件.class
后缀;jar
:用于把一组.class
文件打包成一个.jar
文件,便于发布;javadoc
:用于从Java源码中自动提取注释并生成文档;jdb
:Java调试器,用于开发阶段的运行调试
第一个Java程序
打开文本编辑器,输入以下代码:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
在一个Java程序中总能找到一个类似以下代码的定义:
public class HelloWorld {
...
}
这个定义被称为class(类),这里的类名是HelloWorld
,大小写敏感,class
用来定义一个类,public
表示这个类是公开的,public
、class
都是Java的关键字,必须小写,Hello
是类的名字,按照习惯,首字母H
要大写。而花括号{}
中间则是类的定义
注意到类的定义中定义了一个名为main
的方法:
public static void main(String[] args) {
...
}
方法是可执行的代码块,一个方法除了方法名main
,还有用()
括起来的方法参数,这里的main
方法有一个参数,参数类型是String[]
,参数名是args
``public、
static用来修饰方法,这里表示它是一个公开的静态方法,
void是方法的返回类型,而花括号
{}`中间的就是方法的代码
方法的代码每一行用;
结束,这里只有一行代码,就是:
System.out.println("Hello, world!");
它用来打印一个字符串到屏幕上
Java规定,某个类定义的public static void main(String[] args)
是Java程序的固定入口方法,因此,Java程序总是从main
方法开始执行
注意 Java 源码的缩进不是必须的,但是用缩进后便于开发编辑,缩进一般是4个空格或者一个tab
运行Java程序
Java源码本质上是一个文本文件,需要先用javac
把HelloWorld.java
编译成字节码文件HelloWorld.class
,然后用java
命令执行这个字节码文件:
因此可执行文件javac
是编译器,而可执行文件java
就是虚拟机
编译文件:编译后会产生一个class文件
java文件:程序员自己编写的代码
class文件:交给计算机执行的文件
运行文件:运行的是编译之后的class文件
用到两个命令:
javac + 文件名 + 后缀名 (就是编译java文件)
java + 文件名(运行编译之后的class文件,无需后缀)
javac 是JDK 提供的编译工具,把 .java 文件编译成 class 字节码
注意:给虚拟机传递的参数HelloWorld
是我们定义的类名,虚拟机自动查找对应的class文件并执行。
直接运行java HelloWorld.java
也是可以的:
$ java Hello.java
Hello, world!
这是Java 11新增的一个功能,它可以直接运行一个单文件源码
需要注意的是,在实际项目中,单个不依赖第三方库的Java源码是非常罕见的,所以,绝大多数情况下,我们无法直接运行一个Java源码文件,原因是它需要依赖其他的库
小结
一个Java源码只能定义一个public
类型的class,并且class名称和文件名要完全一致;
使用javac
可以将.java
源码编译成.class
字节码;
使用java
可以运行一个已编译的Java程序,参数是类名
IDEA 开发工具
IDE是集成开发环境:Integrated Development Environment的缩写。
使用IDE的好处在于,可以把编写代码、组织项目、编译、运行、调试等放到一个环境中运行,能极大地提高开发效率。
IDE提升开发效率主要靠以下几点:
- 编辑器的自动提示,可以大大提高敲代码的速度;
- 代码修改后可以自动重新编译,并直接运行;
- 可以方便地进行断点调试。
目前,流行的用于Java开发的IDE有:
JetBrains IDEA下载地址:https://www.jetbrains.com/idea/download/
IDEA中层级结构介绍
结构分类
Project(项目或工程)—Module(模块)—Package(包)—Class(类)
一个Project中可以创建多个Module,若无另外定义则一个工程为单模块,一般小项目都是一个模块
一个模块(Module)中可以创建多个包(Package)
一个包(Package)中可以创建多个类(Class)
结构介绍
project(项目、工程)
淘宝、京东网站都属于一个个项目,IDEA中就是一个个的Project,项目作为一个独立的实体,可以拥有自己的版本控制、构建工具和发布流程
module(模块)
在一个项目中,可以存放多个模块,不同的模块可以存放项目中不同的业务功能代码,栗如用户登录模块、用户角色模块和用户权限模块等,都是为了实现特定的功能而设计的。因为每个Module都可以独立地进行开发、测试和部署,同时也可以根据需要添加或删除Module,而不会影响到其他部分的稳定性
为了更好的管理代码,我们会把代码分别放在模块中存放
package(包)
- 包是一种组织类和接口的方式,用于将相关的类和接口组织在一起。
- 包通常用于在代码中建立命名空间,以避免类名冲突。
- 在模块内,包仍然是组织代码的基本单元。
为了把这些业务区分的更加清楚,就会用包来管理这些不同的业务
包的命名,或以独立功能为准,或以层次划分为准
class(类)
- 类是 Java 程序中的基本组成单元,它包含字段、方法等成员。
- 类被组织在包内,可以通过包名和类名唯一标识。
小结
-
层级关系
project - module - package - class
-
包含数量
project中可以创建多个module
module中可以创建多个package
package中可以创建多个class 这些结构的划分,是为了方便管理类文件的
创建第一个Java项目
-
1、启动 IntelliJ IDEA。
-
2、在欢迎屏幕中单击"新建项目"。
-
3、在"新建项目"向导中,从左侧列表中选择"Java"。
-
4、为项目命名,并根据需要更改默认位置。
-
5、确保在构建系统中选择了 IntelliJ。
-
要在 IntelliJ IDEA 中开发 Java 应用程序,需要 Java SDK (JDK)。
-
如果 IntelliJ IDEA 中已定义所需的 JDK,请从 JDK 列表中选择它。
-
如果计算机上安装了 JDK,但未在 IDE 中定义,选择"添加 JDK"并指定 JDK 主目录的路径
- 创建包和类,在项目工具窗口中,右键单击 src 文件夹,选择新建,然后选择 Java 类。
- 在名称字段中,输入 com.example.helloworld.HelloWorld(一般为公司域名的反写) 并点击确定,IntelliJ IDEA 将创建 com.example.helloworld 包和 HelloWorld 类。
package com.example.helloworld;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
Java AI 编程助手
点击左上方"文件"再点击"设置",接着点击左侧"插件"选择"Marketplace",并搜索"Fitten Code",然后点击"Install"进行安装
具体点击用户指南学习——学习中,暂时没使用
标签:文件,01,Java,JDK,简介,虚拟机,java,class From: https://www.cnblogs.com/lingxiaoGIS/p/18584296