第1章Java开发环境配置(Set up Java development environment)

工欲善其事,必先利其器。 — 《论语·卫灵公》
Write once, run anywhere. — SUN


学习要求:
掌握Windows平台下JDK安装与配置
了解Linux平台下JDK安装与配置
掌握Java环境测试
掌握第一个Java程序
掌握编译和执行命令
了解跨平台操作问题
了解集成开发环境

Java开发环境配置是学习Java的基本功!下面将分别以Windows平台和Linux平台介绍Java开发环境的配置。然后演示第一个Java程序的编辑、编译和执行过程。

1.1 Windows平台环境配置(Setup your Java Development Environment in Windows)

Windows操作系统仍然是当今世界最为流行的PC机操作系统。2014年4月微软公司停止对Window XP 操作系统的服务支持,Oracle的Java 8也停止了对Window XP的支持。国内仍然有一些机器运行着Window XP系统,如果在Window XP环境上安装JDK 8将出现“无法找到入口”的错误,如图1.1所示。如果您让需要在Window XP环境下开发Java程序,请安装JDK 7即可。

现在国内大多数PC机已经转向Window 7和Window 10。本节将详细讲解在Window 7和Window 10操作系统下的Java开发环境配置。

1.1.1下载Java开发包JDK

JDK(Java Developer’s Kit)是Java开发工具包,是针对Java开发员的产品,用于开发Java程序。JDK 包括了Java运行环境JRE、Java工具和Java基础类库,学会安装JDK是学好Java的第一步。JDK是免费的,读者朋友放心下载,无需破解。

java.sun.com
挑战到
https://www.oracle.com/technetwork/java/index.html

(1)Oracle官网
通过连接http://www.oracle.com/technetwork/java/javase/downloads/index.html进入Oracle官网JDK下载页面,如图1.2所示。单击第1个Java图标,进入下一步。

图1.2 Oracle官网下载页面

(2)接受协议
单击“Accept License Agreement”前的单选按钮,接受协议。然后选择对应操作系统版本的JDK,此处选择Windows版本,如图1.3所示。此外,读者朋友可以看到其他平台下的JDK版本,比如Linux平台、Mac OS平台等。

图1.3 选择JDK版本

1.1.2 安装JDK

(1)运行安装文件
下载后得到“jdk-8u1-windows-i586.exe”文件。双击该可执行文件,将出现安装向导界面,如图1.4所示,单击“下一步”按钮。
(2)选择JDK安装目录
如图1.5所示,可以选择安装路径。由于Java平台是系统程序,建议直接单击“下一步”按钮即可,默认安装到C:\Program Files\Java目录下面。请记住JDK的安装目录。

(3)安装JRE
如图1.6所示,单击“下一步”安装JRE。在第0章已经介绍,JRE是Java的运行环境,JRE面向Java程序的使用者,而JDK是面向Java程序的开发者。JDK中已经包含了一个JRE,为什么还要再安装一个JRE呢?因为有些用Java开发的软件的运行需要JRE,比如集成开发工具Eclipse就需要单独的JRE。JRE是运行Java应用程序所必须环境的集合,包括JVM、核心类以及支持文件,但是不包含开发工具(比如编译器和解释器等)。
(4)安装完成
如图1.7所示,安装完成,单击关闭按钮即可。

1.1.3 JDK目录结构

安装完成后,JDK默认到目录C:\Program Files\Java\下,此目录下读者可以发现一个一个jdk目录和一个jre目录,如图1.8所示。

图1.8 JDK和JRE

打开jdk目录,如图1.9所示。

图1.9 JDK目录结构

JDK9的目录与之前JDK8发生了一些变化。
bin目录:bin是二进制binary缩写,表示编译后的二进制可执行文件;JDK的bin目录下可以看到“java.exe”和“javac.exe”两个文件,这就是Java的解释器和编译器命令。
lib目录:lib是library的缩写,表示库文件;JDK的lib目录存放Java开发时所需要的类库和支持文件;
include目录:包含C语言头文件,用与支持Java本地接口和Java虚拟机调试程序接口的本地代码编程。

1.1.4 环境变量配置

(1)高级系统设置
在桌面上右键单击“计算机”(Windows10桌面上是“此电脑”),选择“属性”菜单,弹出“系统”窗口,如图1.10所示。然后单击“高级系统设置”选项,将弹出“系统属性”对话框。

图1.10 高级系统设置

(2)系统环境变量
如图1.11所示,在“系统属性”对话框中,选中“高级”Tab页,然后单击“环境变量(N)…”,弹出“环境变量”对话框,如图1.12所示。

(3)编辑环境变量
在图1.12中“环境变量”窗口中的“系统变量”中找到Path变量;然后双击“Path”变量弹出编辑窗口,如图1.13所示。在Path的变量值最后面添加分号,与前面的路径值分开;这时只需要将JDK的bin目录的路径(编者的路径是C:\Program Files\Java\jdk-9.0.1\bin,直接复制路径值,以免出错)值粘贴到分号后面即可。

图1.13 编辑Path变量

提示
设置path变量时,不要删除path变量原有的变量值,否则会破坏系统环境变量的值。在添加JDK的bin路径时,先输入分号与其他值分割,请注意输入的是英文下的分号,不要输入冒号。因为字符很小,分号和逗号很难区分。此外,在Administrator的用户变量中也可以设置Path变量,不过只针对Administrator用户有效。建议读者朋友们设置系统变量中的Path变量值,这样对所有的用户都起作用。

(4)确定
连续单击3次“确定”按钮,关闭上面所有对话框。设置Path变量的作用是让Windows可以找到Java的常用命令。

提示
由于历史原因,在Windows平台下,对于Java 5以前的JDK版本需要设置classpath环境变量,但从Java 5开始已经对JDK做了优化,不再不需要设置classpath环境变量,只需要设置path环境变量即可。可是今天仍然有大量Java书籍和网络资料还在讲解设置classpath。请读者朋友们务必注意,不需多此一举,可能带来不必要的麻烦。如果没有正确设置classpath环境变量,将导致我们的Java程序不能执行。

1.1.5 Java环境测试

(1)打开“运行”窗口
注意:如果命令行窗口已经打开,请先关闭。
单击计算机桌面左下角的“开始”菜单中选择“运行”,弹出如图1.14的窗口。或者通过快捷键Win+R直接开打“运行”窗口。

图1.14 运行窗口

(2)打开命令行窗口
在运行窗口中,输入cmd(命令command的简写),回车即可进入命令行窗口,如图1.15所示。命令行是系统附带的DOS程序,可以执行常用的DOS命令。

图1.15 命令行窗口

(3)测试编译器命令
输入“javac”命令,将出现如图1.16所示的界面,说明javac编译源文件命令(bin目录下的javac.exe)正常使用,即是Path环境变量配置成功。

图1.16 测试javac命令

(4)测试Java解释器命令
在命令行中输入“java”,出现如图1.17所示的界面,说明java解释器命令(bin目录下的java.exe)正常。

图1.17 测试java命令

(5)查看JDK版本
最后测试查看Java版本的命令“java -version”,将出现图1.18所示的界面。

图1.18 查看JDK版本

通过上面步骤,Java环境测试成功,Windows下Java环境搭建成功。

###1.1.6安装代码编辑器
编写Java程序,需要代码编辑器,但是JDK没有提供。我们可以直接使用Windows自带的“记事本”,然而记事本功能简单,不适合编辑代码。推荐大家使用Notepad++,它具有显示行号、突显关键字等特点,登录官网http://notepad-plus-plus.org/,单击“download”下载安装程序,然后双击安装即可。

1.2 Linux平台环境配置(Setup your Java Development Environment in Linux)

###1.2.1 Linux简介
Linux是一类开放源代码和自由的类似Unix的操作系统,有众多发行版本。在服务器市场,Linux操作系统占有绝对的优势。Linux操作系统大致可以分为Redhat系列和Debian系列。Redhat系列中典型代表是RHEL(Redhat Enterprise Linux)和CentOS,稳定性方面的稳定性非常好,适合于服务器使用。Debian系列,典型的有Debian、Ubuntu和国产的Deepin等,其中Ubuntu和Deepin等系统提供了良好的桌面环境,更适合桌面PC机。
在IP行业中,Linux系统多用于服务器,而Linux桌面系统占有率较低(Windows桌面一家独大)。基于这样的事实,建议选择CentOS版本,用于服务器操作系统。

1.2.2 安装CentOS虚拟机

CentOS虚拟机安装内容已经超出本教程的范畴,请参照下面3篇博文,先安装VMware,再安装CentOS系统,可以选择安装XShell。
http://blog.csdn.net/chengyuqiang/article/details/71334057
http://blog.csdn.net/chengyuqiang/article/details/71335370
http://blog.csdn.net/chengyuqiang/article/details/71367668

###1.2.3 JDK下载与安装
如果Linux系统上安装了桌面环境,可以通过浏览器直接下载JDK到Linux系统。如果Linux系统不方便下载软件,则可以先在Windows系统下载软件,然后上传到Linux服务器端。

(1)下载Linux版的JDK
如图1.19所示,选择Linux版本的JDK。为了演示Linux系统上JDK安装配置的一般性,这里下载tar.gz格式的JDK。也就是说,在其他Linux发行版系统,本节介绍的JDK安装与配置方法通用。

图1.19 选择Linux版的JDK

(2)上传到Linux服务器上
如果是在Windows端下载了JDK,则可以通过XShell中的Xftp工具将JDK软件包上传到Linux服务器端。
比如上传到Linux系统的/root目录后,通过ls命令查看。

[root@centos ~]# ls
anaconda-ks.cfg  jdk-9.0.1_linux-x64_bin.tar.gz
[root@centos ~]#

(3)解压缩
命令tar -zxvf xxx.tar.gz -C /dir表示xxx.tar.gz软件包解压缩到/dir目录,所以可以通过下面命令将jdk-9.0.1_linux-x64_bin.tar.gz软件包解压缩到/opt目录。

[root@centos ~]# tar -zxvf jdk-9.0.1_linux-x64_bin.tar.gz -C /opt

查看JDK软包目录

[root@centos ~]# ll /opt/jdk-9.0.1/
total 28
drwxr-xr-x   2 root root 4096 Nov  5 06:51 bin
drwxr-xr-x   4 root root  112 Nov  5 06:51 conf
drwxr-xr-x   3 root root  161 Nov  5 06:51 include
drwxr-xr-x   2 root root 4096 Nov  5 06:51 jmods
drwxr-xr-x 101 root root 4096 Nov  5 06:51 legal
drwxr-xr-x  12 root root 4096 Nov  5 06:51 lib
-r--r--r--   1  668  668  158 Sep 27 23:51 README.html
-rw-r--r--   1  668  668 1978 Sep 27 23:51 release
[root@centos ~]#

可见JDK根目录是/opt/jdk-9.0.1,下面进行环境变量配置时会用到该目录。

1.2.4 环境变量配置

编辑/etc/profile.d/custom.sh文件,

[root@centos ~]# vi /etc/profile.d/custom.sh

输入如下内容:

export JAVA_HOME=/opt/jdk-9.0.1
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib

通过source命令,使/etc/profile.d/custom.sh文件生效。

[root@centos ~]# source /etc/profile.d/custom.sh

提示
对于CentOS6版本的系统,可以直接在/etc/profile文件中设置Java环境变量。对于CentOS7系统,建议新建/etc/profile.d/custom.sh文件进行Java环境变量设置。

1.2.5 环境测试

(1)测试javac

[root@centos ~]# javac
Usage: javac <options> <source files>
where possible options include:@<filename>                  Read options and filenames from file-Akey[=value]                Options to pass to annotation processors--add-modules <module>(,<module>)*Root modules to resolve in addition to the initial modules, or all moduleson the module path if <module> is ALL-MODULE-PATH.--boot-class-path <path>, -bootclasspath <path>Override location of bootstrap class files--class-path <path>, -classpath <path>, -cp <path>Specify where to find user class files and annotation processors-d <directory>               Specify where to place generated class files-deprecation
...
...

(2)测试java

[root@centos ~]# java
Usage: java [options] <mainclass> [args...](to execute a class)or  java [options] -jar <jarfile> [args...](to execute a jar file)or  java [options] -m <module>[/<mainclass>] [args...]java [options] --module <module>[/<mainclass>] [args...](to execute the main class in a module)
...
...

(3)查看JDK版本信息

[root@centos ~]# java -version
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)
[root@centos ~]#

##1.3 HelloWorld
按照国际惯例,学习一门语言的第一个程序应该是在控制台输出“Hello,World!”,也就是大名鼎鼎的HelloWorld程序。本教材同样以这个经典的国际惯例作为Java语言的第一个程序。

1.3.1 新建文本文件

不失一般性,将每章的Java源程序存放在D盘下,比如本章代码存在ch1目录中。如图1.25所示,在ch1目录下右键单击新建一个文本文件。

1.3.2 修改文件扩展名

如果文件的扩展名没有显示,可以通过下面方法设置。
(1)单击文件夹的“工具”菜单下的“文件夹选项”来设置。

(2)在文件夹选项对话框中,单击“查看”分页,然后找到“隐藏已知文件类型的扩展名”选项,取消勾选即可。

1.3.3 重命名

重命名该文本文件为“HelloWorld.java”,确定修改文件扩展名。

1.3.4 编辑代码

右键单击“HelloWorld.java”文件,在弹出的快捷菜单中选择“Edit with Notepad++”(安装Notepad++后,右键菜单会添加“Edit with Notepad++”子菜单),即可编辑Java代码,如图1.28所示。

编辑代码如下:

/*定义类HelloWorld,class是关键字,类名是HelloWorld
*/
public class HelloWorld{//主方法,类似于C语言的主函数,Java程序的执行入口   public static void main(String[] args){//标准输出语句,类似于C语言的printf输出语句 System.out.println("Hello,world!");}
}


注意保存源代码。

1.3.5 编译执行

Java编译命令和解释执行命令格式如下:
Java编译命令格式:javac 源文件名.java
Java解释命令格式:java 字节码文件名

(1)打开命令行窗口
如图1.29所示,在命令行中输入输入“d:”进入D盘,然后再输入“cd ch1”即可进入ch1目录。cd是DOS操作系统命令,表示更改切换当前目录。

(2)编译源文件
然后,在命令行中输入“javac HelloWorld.java”编译HelloWorld.java源文件。

(3)字节码文件
在ch1目录下可以看到对应的“HelloWorld.clss”字节码文件,如图1.30所示。

(4)解释执行字节码文件
最后,在命令行中输入“java HelloWorld”执行字节码文件,运行结果如图1.29所示。注意使用java命令时,参数是字节码文件名,不能带上.class后缀名。

1.4 JShell

Java 9 中引入了交互式编程环境(REPL),这就是JShell,它允许可以执行 Java脚本代码,并且立即返回结果。因此,我们不需要创建什么一个解决方案或工程,就能很容易地编写代码并能很快的看到运行结果。我们不必等待整个项目 build 完去检查多行代码的执行结果。JShell,就像其他 REPL 一样,有利于探索式编程,我们很容易地进行交互式尝试和调试不同的算法和结构。
###1.4.1 进入JShell
(1)Windows系统
直接在命令行中输入jshell,回车即可进入JShell环境。

(2)Linux系统
在终端中执行jshell命令。

###1.4.2 执行Java代码
(1)Windows系统

其中String s="Hello,World"表示定义了一个字符串变量s,s值是"Hello,World"
(2)Linux系统

(3)查看帮助
输入/help,回车查看帮助。
(1)Windows系统

(2)Linux系统

jshell> /help
|  Type a Java language expression, statement, or declaration.
|  Or type one of the following commands:
|  /list [<name or id>|-all|-start]
|   list the source you have typed
|  /edit <name or id>
|   edit a source entry referenced by name or id
|  /drop <name or id>
|   delete a source entry referenced by name or id
|  /save [-all|-history|-start] <file>
|   Save snippet source to a file.
|  /open <file>
|   open a file as source input
|  /vars [<name or id>|-all|-start]
|   list the declared variables and their values
|  /methods [<name or id>|-all|-start]
|   list the declared methods and their signatures
|  /types [<name or id>|-all|-start]
|   list the declared types
|  /imports
|   list the imported items
|  /exit
|   exit jshell
|  /env [-class-path <path>] [-module-path <path>] [-add-modules <modules>] .
|   view or change the evaluation context
|  /reset [-class-path <path>] [-module-path <path>] [-add-modules <modules>]
|   reset jshell
|  /reload [-restore] [-quiet] [-class-path <path>] [-module-path <path>]...
|   reset and replay relevant history -- current or previous (-restore)
|  /history
|   history of what you have typed
|  /help [<command>|<subject>]
|   get information about jshell
|  /set editor|start|feedback|mode|prompt|truncation|format ...
|   set jshell configuration information
|  /? [<command>|<subject>]
|   get information about jshell
|  /!
|   re-run last snippet
|  /<id>
|   re-run snippet by id
|  /-<n>
|   re-run n-th previous snippet
|
|  For more information type '/help' followed by the name of a
|  command or a subject.
|  For example '/help /list' or '/help intro'.
|
|  Subjects:
|
|  intro
|   an introduction to the jshell tool
|  shortcuts
|   a description of keystrokes for snippet and command completion,
|   information access, and automatic code generation
|  context
|   the evaluation context options for /env /reload and /resetjshell> 

Tab键自动补齐

当我们输入Sy时,按下Tab键,会出现三个候选项
当我们继续输入Sys时,按下Tab键,自动补齐为System
当我们继续输入System.时,按下Tab键,会列出System类型的所有成员(成员变量和成员方法)
当我们继续输入System.o时,按下Tab键,System.out
当我们继续输入System.out.时,按下Tab键,会列出out成员变量下面所有方法
当我们继续输入System.out.p时,按下Tab键,自动补齐为System.out.print
当我们继续输入System.out.printl时,按下Tab键,自动补齐为System.out.println(

(4)退出JShell
输入/exit,回车退出JShell环境。
(1)Windows系统

(2)Linux系统

C:\Users\Administrator>jshell -help
用法:   jshell <选项>... <加载文件>...
其中,可能的选项包括:--class-path <路径>   指定查找用户类文件的位置--module-path <路径>  指定查找应用程序模块的位置--add-modules <模块>(,<模块>)*指定要解析的模块;如果 <模块>为 ALL-MODULE-PATH,则为模块路径中的所有模块--enable-preview      允许代码依赖于此发行版的预览功能--startup <文件>      对启动定义执行单次替换--no-startup          不运行启动定义--feedback <模式>     指定初始反馈模式。该模式可以是预定义的(silent、concise、normal 或 verbose),也可是以前用户定义的-q                    无提示反馈。等同于:--feedback concise-s                    真正无提示反馈。等同于:--feedback silent-v                    详细反馈。等同于:--feedback verbose-J<标记>              直接将 <标记> 传递到运行时系统。为每个运行时标记或标记参数使用一个 -J-R<标记>              将 <标记> 传递到远程运行时系统。为每个远程标记或标记参数使用一个 -R-C<标记>              将 <标记> 传递到编译器。为每个编译器标记或标记参数使用一个 -C--version             输出版本信息并退出--show-version        输出版本信息并继续--help, -?, -h        输出标准选项的此提要并退出--help-extra, -X      输出非标准选项的帮助并退出文件参数可以是文件名,或者是预定义的文件名之一:DEFAULT、
PRINTING 或 JAVASE。
加载文件也可以是 "-",用于指明标准输入,没有交互式 I/O。有关评估上下文选项(--class-path、
--module-path 和 --add-modules)的详细信息,请参见:/help context路径列出要搜索的目录和档案。对于 Windows,请使用
分号 (;) 来分隔路径中的项。在其他平台上,请使用
冒号 (:) 来分隔各项。C:\Users\Administrator>
C:\Users\Administrator>jshell -v
|  欢迎使用 JShell -- 版本 11
|  要大致了解该版本, 请键入: /help introjshell> int i=1
i ==> 1
|  已创建 变量 i : intjshell> i++

Java程序设计(Java9版):第1章 Java开发环境配置 (Set up Java development environment)相关推荐

  1. elementary安装Java,使用U盘安装Linux最美桌面发行版Elementary OS 及常用开发环境配置(JDK,Redis,MySQL,Docker,IDEA,STS)...

    前言 假期在家无聊,刚好把六年前的一台笔记本电脑利用起来,原来电脑虽然说配置说不上古董机器,但是运行win系统感觉还是不流畅,所幸给换成Linux桌面版系统,在网上查阅了很多,Linux桌面系统要么推 ...

  2. 从零开始Android游戏编程(第二版) 第一章 搭建开发环境

    第一章 搭建开发环境 难度:容易 工欲善其技,必先利其器.我们要做的第一件事就是搭建Android开发环境.本文只介绍Windows下的安装方法,Linux下的安装方法请参考官方网站的介绍. 与PC编 ...

  3. Java自动化测试系列[v1.0.0][TestNG测试开发环境配置]

    基于之前写的一篇文章Java自动化测试系列[v1.0.0][Maven开发环境]的基础上,阐述如何配置单元测试框架TestNG的测试开发环境 创建Maven项目 启动IDEA,点击Create New ...

  4. 《python3网络爬虫开发实战》第一章、开发环境配置-问题汇总

    开发环境: VMware虚拟机 Ubuntu18.04 python3.6 (由于对vi操作水平有限,所以大部分都用的gedit进行文件编辑) 换源: 刚装上系统后换了好几个源,就清华源感觉好使点,别 ...

  5. 【Android车载系列】第5章 AOSP开发环境配置

    1 硬件支持 建议空闲内存16G以上,同时硬盘400G以上 内存不够可以使用 Linux 的交换分区 2 VMware Workstation安装 https://download3.vmware.c ...

  6. 【闪电侠学netty】第3章 Netty开发环境配置

    [Netty]读书笔记 - 跟闪电侠学 1. 内容概要 主要是工具的安装和使用(省略) 1 Maven 2 Git 3 IntelliJ IDEA 需要了解的客官请购买书籍,或自行CSDN

  7. Java基础(1):Java简介和开发环境配置

    写在前面: 其实一直都想做一个自己的博客或者说是网站,来记录自己学习的一些心得的一些自己也需要注意的知识点,因为我也总是忘.网上的文章随便一翻都是千篇一律的,可能我的文章也是一样的,我相信很多人做个人 ...

  8. Java开发环境配置/Vscode搭建

    文章目录 JDK简介 Java开发环境配置 Vscode中配置Java开发环境 JDK简介 JDK,全称 Java Development Kit,是整个 Java 的核心,包含 Java 运行环境. ...

  9. java 开发环境配置_Java 开发环境配置

    在本章节中我们将为大家介绍如何搭建Java开发环境.Windows 上安装开发环境 Linux 上安装开发环境 安装 Eclipse 运行 Java window系统安装java 下载JDK 首先我们 ...

最新文章

  1. 2021年大数据ELK(五):Elasticsearch中的核心概念
  2. Java开发面试题,Spring面试题整理(1)
  3. 这 56 个代码注释让我笑吐了
  4. javaCh6课堂测试
  5. Linux链接文件包括,Linux操作系统——系统各目录有什么作用、以及文件链接过程...
  6. python mobilenetssd android_MobileNetV2-SSDLite运行
  7. 配置hadoop 使用fair scheduler调度器
  8. sublime press key “escape” can't type anything
  9. 搭建迁移训练Slim框架环境
  10. Java多线程系列--“JUC原子类”
  11. 在线答题小程序一站式开发(现源码)
  12. HTML中怎么点击超链接让新页面在另一个窗口打开?
  13. 二极管双平衡混频器的原理[ZT]
  14. FTP命令详解(含操作实例)
  15. html如何转换万,如何在excel表格中设置以万为单位
  16. 转贴与JUNSANSI(大小写转换函数Oracle)
  17. HTML+CSS综合实训(二) 仿制视频网
  18. 已知T(n)=2T(n/2)+n,求O(n)?
  19. Oracle数据库update语句用法,多表批量更新对应的字段值
  20. 码农:用git怕丢代码,每次都备份,同事:不学习的人真可怕!

热门文章

  1. 【报告分享】2020年4季度娱乐直播行业观察-易观智库(附下载)
  2. Java8新特性Stream对List的用法
  3. javascript匿名函数的理解
  4. 网络安全实验室基础关第二题
  5. Git和jdk1.8百度云盘分享
  6. 关于scrum的一点思考
  7. sh运行时直接报错了syntax error near unexpected token `$‘\r‘
  8. juc学习笔记二-ReentrantReadWriteLock
  9. 什么是led透明屏? led透明屏显示技术讲解
  10. 快来看看搜索引擎到底是怎么工作的吧!