目录
1 背景
- SUN公司,上个世纪90年代初,詹姆斯·高斯林开发,一种网络编程语言
- 介于编译性语言和解释性语言之间
- Java是将代码编译成一种“字节码”,它类似于抽象的CPU指令,然后,针对不同平台编写虚拟机,不同平台的虚拟机负责加载字节码并执行,这样就实现了“一次编写,到处运行”的效果
编译型语言如C、C++,代码是直接编译成机器码执行,但是不同的平台(x86、ARM等)CPU的指令集不同,因此,需要编译出每一种平台的对应机器码
解释型语言如Python、Ruby没有这个问题,可以由解释器直接加载源码然后运行,代价是运行效率太低
- Java的三个版本
- Java SE:Standard Edition,标准版,包含标准的JVM和标准库
- Java EE:Enterprise Edition,企业版,只在Java SE的基础上加上了大量的API和库,以便方便开发Web应用、数据库、消息服务等,Java EE的应用使用的虚拟机和Java SE完全相同
- Java ME:Micro Edition,嵌入式设备的“瘦身版”,Java SE的标准库无法在Java ME上使用,Java ME的虚拟机也是“瘦身版”
- Java学习路线
- 首先要学习Java SE,掌握Java语言本身、Java核心开发技术以及Java标准库的使用
- 如果继续学习Java EE,那么Spring框架、数据库开发、分布式架构就是需要学习的
- 如果要学习大数据开发,那么Hadoop、Spark、Flink这些大数据平台就是需要学习的,他们都基于Java或Scala开发(没兴趣,不考虑)
- 如果想要学习移动开发,那么就深入Android平台,掌握Android App开发(要学)
- Java名词
- JDK:Java Development Kit,如果只有Java源码,要编译成Java字节码,就需要JDK,因为JDK除了包含JRE,还提供了编译器、调试器等开发工具
- JRE:Java Runtime Environment,运行Java字节码的虚拟机
- Java名词
- JSR规范:Java Specification Request
- JSR是一系列的规范,从JVM的内存模型到Web程序接口,全部都标准化了
- JCP组织:Java Community Process
- 负责审核JSR的组织就是JCP
- JSR规范:Java Specification Request
一个JSR规范发布时,为了让大家有个参考,还要同时发布一个“参考实现”,以及一个“兼容性测试套件”
- Java名词
- RI:Reference Implementation
- RI只是一个“能跑”的正确的代码,它不追求速度,所以,如果真正要选择一个Java的消息服务器,一般是没人用RI的,大家都会选择一个有竞争力的商用或开源产品
- TCK:Technology Compatibility Kit
- 如果有其他人也想开发这样一个消息服务器,如何保证这些消息服务器对开发者来说接口、功能都是相同的?所以还得提供TCK
- RI:Reference Implementation
2 安装
安装JDK的教材,可以参考这里面的JDK安装方法。
在JAVA_HOME
的bin
目录下找到很多可执行文件
- java:这个可执行程序其实就是JVM,运行Java程序,就是启动JVM,然后让JVM执行指定的编译后的代码;
- javac:这是Java的编译器,它用于把Java源码文件(以
.java
后缀结尾)编译为Java字节码文件(以.class
后缀结尾); - jar:用于把一组
.class
文件打包成一个.jar
文件,便于发布; - javadoc:用于从Java源码中自动提取注释并生成文档;
- jdb:Java调试器,用于开发阶段的运行调试。
3 第一个程序
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
可以用文本编辑器,直接输入编辑,然后命名为 Hello.java,然后在终端中运行,也可以使用vs code
如何运行Java程序
Java源码本质上是一个文本文件,我们需要先用javac
把Hello.java
编译成字节码文件Hello.class
,然后,用java
命令执行这个字节码文件:
因此,可执行文件javac
是编译器,而可执行文件java
就是虚拟机。
第一步,在保存Hello.java
的目录下执行命令javac Hello.java
:
$ javac Hello.java
如果源代码无误,上述命令不会有任何输出,而当前目录下会产生一个Hello.class
文件:
$ ls
Hello.class Hello.java
第二步,执行Hello.class
,使用命令java Hello
:
$ java Hello
Hello, world!
注意:给虚拟机传递的参数Hello
是我们定义的类名,虚拟机自动查找对应的class文件并执行。
此外,直接运行java Hello.java
也是可以的:
$ java Hello.java
Hello, world!
这是Java 11新增的一个功能,它可以直接运行一个单文件源码!
需要注意的是,在实际项目中,单个不依赖第三方库的Java源码是非常罕见的,所以,绝大多数情况下,我们无法直接运行一个Java源码文件,原因是它需要依赖其他的库。
注意
- 一个Java源码只能定义一个
public
类型的class,并且class名称和文件名要完全一致; - 使用
javac
可以将.java
源码编译成.class
字节码; - 使用
java
可以运行一个已编译的Java程序,参数是类名。
4 IDE
流行于Java开发的IDE有以下几种
Eclipse
Eclipse是由IBM开发并捐赠给开源社区的一个IDE,也是目前应用最广泛的IDE。Eclipse的特点是它本身是Java开发的,并且基于插件结构,即使是对Java开发的支持也是通过插件JDT实现的。
除了用于Java开发,Eclipse配合插件也可以作为C/C++开发环境、PHP开发环境、Rust开发环境等。
IntelliJ Idea
IntelliJ Idea是由JetBrains公司开发的一个功能强大的IDE,分为免费版和商用付费版。JetBrains公司的IDE平台也是基于IDE平台+语言插件的模式,支持Python开发环境、Ruby开发环境、PHP开发环境等,这些开发环境也分为免费版和付费版。
NetBeans
NetBeans是最早由SUN开发的开源IDE,由于使用人数较少,目前已不再流行。
Eclipse的安装教程可以参考这里。
设置Eclipse
“Eclipse/Window”-“Preferences”,打开配置对话框:
我们需要调整以下设置项:
- General > Editors > Text Editors
- 钩上“Show line numbers”,这样编辑器会显示行号;
- General > Workspace
- 钩上“Refresh using native hooks or polling”,这样Eclipse会自动刷新文件夹的改动;
- 对于“Text file encoding”,如果Default不是
UTF-8
,一定要改为“Other:UTF-8”,所有文本文件均使用UTF-8
编码; - 对于“New text file line delimiter”,建议使用Unix,即换行符使用
\n
而不是Windows的\r\n
。
- Java > Compiler
- 将“Compiler compliance level”设置为
16
,本教程的所有代码均使用Java 16的语法,并且编译到Java 16的版本。 - 去掉“Use default compliance settings”并钩上“Enable preview features for Java 16”,这样我们就可以使用Java 16的预览功能。
- 如果Compiler compliance level没有16这个选项,请更新到最新版Eclipse。如果更新后还是没有16,打开Help - Eclipse Marketplace,搜索Java 16 Support安装后重启即可。
- 将“Compiler compliance level”设置为
- Java > Installed JREs
- 在Installed JREs中应该看到Java SE 16,如果还有其他的JRE,可以删除,以确保Java SE 16是默认的JRE。
Eclipse IDE结构
- 中间可编辑的文本区(见1)是编辑器,用于编辑源码;
- 分布在左右和下方的是视图:
- Package Exploroer(见2)是Java项目的视图
- Console(见3)是命令行输出视图
- Outline(见4)是当前正在编辑的Java源码的结构视图
- 视图可以任意组合,然后把一组视图定义成一个Perspective(见5),Eclipse预定义了Java、Debug等几个Perspective,用于快速切换。
新建Java项目
"File”-“New”-“Java Project”,填入HelloWorld
,JRE选择Java SE 1
6
点击“Finish”就成功创建了一个名为HelloWorld
的Java工程
新建Java文件并运行
展开HelloWorld
工程,选中源码目录src
,点击右键,在弹出菜单中选择“New”-“Class”:
在弹出的对话框中,Name
一栏填入Hello
点击”Finish“,就自动在src
目录下创建了一个名为Hello.java
的源文件
保存,然后选中文件Hello.java
,点击右键,在弹出的菜单中选中“Run As...”-“Java Application”:
如果没有在主界面中看到Console
窗口,请选中菜单“Window”-“Show View”-“Console”,即可显示
5 使用IDE练习插件
点击下载IDE练习插件,保存到本地硬盘。
启动Eclipse,选择菜单“Help”-“Install New Software...”,在打开的对话框中:
去掉勾选“Group items by category”,选择列表中的“LearnJava”插件,然后点击“Next”安装。
在安装过程中,由于插件代码没有数字签名,所以会弹出一个警告:
选择“Install anyway”继续安装,安装成功后,根据提示重启Eclipse即可。
重启Eclipse后,选择菜单“Window”-“Show View”-“Other...”:
导入练习
在“Java Practice”面板中,双击hello.zip
,按照提示导入工程,即可直接下载并导入到Eclipse中: