文章概要

Java 快速学习、入门系列基础教程。这个入门系列基础教程主要跟大家聊聊Java优点、特点,以及Windows开发环境的搭建(IDEA+Maven+Tomcat+JDK8)、IDEA+Maven构建项目,IDEA、Maven使用基本教程、IDEA调试技巧,调试快捷键整理等等。

开篇:Java的优势和特点

一、Java为什么如此火热?

成本

先说说开发者成本:Java的语法简单,没有很多的语法糖。 在语法入门上比较容易,
入门要使用的IDE,免费、小巧(虽然没有Visual Studio强大,但是对于新手入门来说,这个选项很重要),由于开源,社区的活跃度高,资料也多,这样的情况一方面不担心碰到问题无处求解,另一方面也有众多的交流平台
再说说经营者成本:Java可以部署在Linux Server上,Linux Server有免费的发行版。这个对比Windows Server节省一大笔费用。另外Java的黄金搭档MySQL企业版授权费比Oracle、SQL Server等也便宜很多,又生了一大笔费用,省下来的钱只要一小部分,就足以覆盖Linux运维工程师的雇佣成本,怎么算都是划算。

优秀框架的成长土壤

单从web应用开发来说,从最早的SSH(Struts+Spring+Hibernate)到现在的SSM(Spring+Spring MVC+MyBatis)Java平台生长了丰富多样的优秀框架,一方面Java在1.5以后的版本,性能上确实可圈可点。另外Java确实比较Open,虽然Sun公司的种种行为一次次宣告这是Sun的Java,但是Java平台各种标准的制定,可以让社区从各种方面参与完善Java生态。从Java虚拟机到编译器,再到工程构建工具,再到各种框架,以及各种类库等等,所以Java平台才有上好的优秀框架/项目的成长土壤。也诞生了这么多的项目Spring大家庭、Maven、Tomcat 等等,ken这才是Java平台最大的优势

热门效应

Java作为优秀语言&平台自然会受人追捧,Java也就成了受众最多的编程语言。
那么在技术选型的时候Java往往就排的最靠前,毕竟人多,好招聘。Java平台的优秀,加上大家的使用热情,确实会使Java平台越来越热。
就目前来看,Java平台优秀,且没有明显的短板,只要能不断生长出适应互联网技术发展的框架,Java生态还会持续不断的繁荣下去。

二 、Java的特点

简洁的语法

在面向对象的语言中Java的语法缺失比较简洁,没有明显的短板(比如像Python被大家吐槽的缩进机制),没有很多的语法糖。但这可能在一些工程师的眼中是短板,用惯了C#的工程师很可能会觉得Java缺少了很多好用的语法糖,开发效率上来说不够高效,算是有得有失吧。

良好的性能

面向对象的语言中Java的性能算是名列前茅了。比PHP、Python不知道高到哪里去。
这可能要归功于JIT,.NET之所以性能跟Java部分伯仲,相当大的原因就是.NET也有JIT.aspx)编译机制。

配置无处不在

Java的配置风格,深入到了几乎Java所有的框架。从JDK安装后JavaHome的配置。到Maven的配置、Tomcat的配置、IDE的配置,再到使用各种框架时各种xml的配置,可以说配置无处不在。这也是Java平台灵活之处。几乎一切皆可配置。由于一些框架的使用缺少一些缺省到配置,那么在上手的时候就必须了解清楚相关的配置,可能学习曲线会稍陡峭一些。
这也是Java平台最容易被初学者吐槽的地方。比如ken从.NET平台转战Java平台,一开始折腾了好久的配置文件。边吐槽边学习。
还好现在Spring大家族推出了Spring Boot,可以简化相当一部分配置,这是Java开发者的福音,最起码是ken的福音。

三、学习Java要做哪些准备?

Windows下Java开发环境配置(IDEA+Maven+Tomcat)

一、前言

1、Java开发必备工具

  • Java SDK:JDK

百科:JDK是整个Java开发的核心,它包含了JAVA的运行环境JRE(JVM+Java系统类库)和JAVA工具(编译&调试等等)。

javac – 编译器,将源程序转成字节码 jar – 打包工具,将相关的类文件打包成一个文件 javadoc – 文档生成器,从源码注释中提取文档 jdb – debugger,查错工具 java – 运行编译后的java程序(.class后缀的) appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。 Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。 Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。 Jconsole: Java进行系统调试和监控的工具

  • Maven

Maven是项目管理&构建工具。
Maven的诞生主要是由于Java提供基本的代码组织标准、编译工具、核心类库以及运行时。
但是并没有提供良好的项目模板以及管理工具,也没有提供jar包管理工具。
没有项目模板,就缺少了标准的项目结构,这个很不利于代码层面的交流,也不利于团队的管理。对于jar包,如果没有管理工具,那么引用第三方类库的时候就只能一个个添加。
如果别人拷贝了你的项目,没有拷贝你的jar包,那么他可能要一个个下载缺少的jar包了。
ken.io借用某Java工程师的一句话:Maven拯救了这个混沌的世界。

  • Tomcat

Tomcat是目前Java平台最为流行的Web应用服务器,开发、部署JavaWeb应用程序必备。

  • IDE(集成开发环境):IntelliJ IDEA

IDE的好处就是集成了开发所需要的工具,用图形化界面替代繁琐的命令/操作。
选用IntelliJ IDEA是因为ken.io觉得它更好用。

2、本篇开发环境

1、操作系统: Windows 10 X64
2、Java SDK: jdk-8u141
3、Maven:3.5
4、Tomcat:8.5.x
5、IDE:IntelliJ IDEA 2017

二、JDK安装与配置

1、JDK下载与安装

1、最新版本下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2、历史版本下载:http://www.oracle.com/technetwork/cn/java/archive-139210-zhs.html
本次下载版本为:jdk-8u141-windows-x64.exe

  • 1、开始安装

Java 快速入门系列教程 - 图1

  • 2、安装JDK

Java 快速入门系列教程 - 图2

  • 3、安装JRE

Java 快速入门系列教程 - 图3

2、配置环境变量

  • 配置系统环境变量

使用鼠标右击“计算机”->属性->左侧高级系统设置->高级->环境变量

变量名 ken.io的翻译
JAVA_HOME C:\SDK\Java\jdk1.8.0_141 JDK根目录,后续可以将%JAVA_HOME%作为变量使用
CLASSPATH %JAVA_HOME%\lib
Path %JAVA_HOME%\bin; 方便使用java命令&工具

配置环境变量是为了使用命令快捷编译、执行Java程序,使用IDE开发可以不配置。

  • 配置验证

使用命令查看Java版本

  1. java -version
  2. #输出结果
  3. java version "1.8.0_141"
  4. Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
  5. Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)

三、Maven 下载与配置

1、Maven下载

下载地址:http://maven.apache.org/download.cgi
下载Maven最新版本,本次使用版本3.5.0
下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.zip
下载地址将压缩包解压到C:\Apache\Maven\
Maven根目录是:C:\Apache\Maven\Maven-3.5.0
(注意压缩包的目录结构)

2、Maven配置

  • Maven镜像配置

前面讲过Maven的重要作用之一就是管理jar包。但是Maven的官方仓库服务器是在国外
访问很不稳定。需要修改配置文件Maven根目录\conf\settings.xml,或者复制settings.xml文件改名作为自定义的配置文件,以适应不同场景的需要,这里就复制一份并更名为:settings-my.xml
在配置文件settings-my.xml中mirrors节点增加配置:

  1. <mirror>
  2. <id>alimaven</id>
  3. <name>aliyun maven</name>
  4. <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  5. <mirrorOf>central</mirrorOf>
  6. </mirror>

感谢阿里云,没用阿里云镜像之前ken.io下载某些jar包下载完成需要半个小时甚至更长时间。
2、创建本地包仓库文件夹
C:\Apache\Maven\Repository(C盘容量不够的,可以放在其他磁盘。)

四、Tomcat8 安装

1、Tomcat8下载

Tomcat8下载地址:https://tomcat.apache.org/download-80.cgi
Tomcat各版本区别:https://tomcat.apache.org/whichversion.html
本次使用版本下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.16/bin/apache-tomcat-8.5.16.exe

2、开始安装&同意条款

Java 快速入门系列教程 - 图4
Java 快速入门系列教程 - 图5

3、选择安装内容(选择标准安装即可 )

Java 快速入门系列教程 - 图6

4、设置Tomat端口、服务名称、管理账号等

Java 快速入门系列教程 - 图7
本次将管理账号密码均位置为tomcat,其他保留默认值

5、选择JRE

Java 快速入门系列教程 - 图8

6、设置安装目录

Java 快速入门系列教程 - 图9

7、完成安装与验证

  • 完成安装

Java 快速入门系列教程 - 图10

  • 访问验证

服务启动后访问:http://localhost:8080/
Java 快速入门系列教程 - 图11
出现以上页面表示安装成功。

  • Tomcat管理

访问:http://localhost:8080/manager/html
输入安装时填写的账号密码即可管理Tomcat

五、IDE:IntelliJ IDEA 安装&配置

1、IntelliJ IDEA下载

下载地址:https://www.jetbrains.com/idea/download/#section=windows

2、IntelliJ IDEA安装

  • 开始安装

Java 快速入门系列教程 - 图12

  • 选择安装目录(根据自己喜好来)

Java 快速入门系列教程 - 图13

  • 选择桌面图标和关联文件

Java 快速入门系列教程 - 图14

  • 安装完成

Java 快速入门系列教程 - 图15

3、IntelliJ IDEA全局配置

  • 打开IntelliJ IDEA(默认选择不导入配置)

Java 快速入门系列教程 - 图16

  • 选择免费试用30天

Java 快速入门系列教程 - 图17

  • 设置主题&插件(选择跳过所有试用默认设置)

Java 快速入门系列教程 - 图18

  • 配置Maven

configure->settings
Java 快速入门系列教程 - 图19
Java 快速入门系列教程 - 图20
一共设置三项:
Maven Home Directory:C:\Apache\Maven\Maven-3.5.0
User settings file:C:\Apache\Maven\Maven-3.5.0\conf\settings-my.xml
Local repository:C:\Apache\Maven\Repository

4、IntelliJ IDEA项目默认设置

Java 快速入门系列教程 - 图21
项目默认JDK版本设置
Java 快速入门系列教程 - 图22
IntelliJ IDEA 没有检测到JDK。选择新建,然后选中JDK根目录:C:\SDK\Java\jdk1.8.0_141即可
Java 快速入门系列教程 - 图23

六、备注

到这里Windows操作系统下Java的开发环境就部署完成了。
下一篇讲给大家带来如何使用IDEA+Maven 创建、开发、调试 Java项目的讲解。

使用IntelliJ IDEA+Maven 创建、开发、管理项目

一、前言

  • 本篇开发环境
    1、操作系统: Windows 10 X64
    2、Java SDK: jdk-8u141
    3、Maven:3.5
    4、IDE:IntelliJ IDEA 2017

    二、项目创建&运行

    1、使用Maven模板创建项目

  • 打开IDEA,选择Create New Project
    或者通过菜单File->New->Project创建

Java 快速入门系列教程 - 图24

  • 选择Maven,然后选择Maven项目模板maven-archetype-quickstart

Java 快速入门系列教程 - 图25

2、项目命名与Maven配置

  • 项目Maven坐标信息

Java 快速入门系列教程 - 图26
在 POM 中,groupId, artifactId, packaging, version 叫作 maven 坐标,它能唯一的确定一个项目。有了 maven 坐标,我们就可以用它来指定我们的项目所依赖的其他项目,插件,或者父项目。

参数 说明
groupId 代表组织和整个项目的唯一标志。比如说所有的Maven组件的groupId都是org.apache.maven。
artifactId 具体项目的名称,它于groupId共同确定一个项目在maven repo中的位置,例如,groupId=org.codehaus.mojo, artifactId=my-project的项目,在maven repo中的位置为:$M2_REPO/org/codehaus/mojo/my-project
version 用于说明目前项目的版本,在引用依赖的时候确定具体依赖的版本号。
packaging 规定项目的输出格式,包括jar、war、pom、apk等,根据实际需要确定。例如,开发一般的java库,可以使用jar packaging;开发android则是apk packaging。

一般 maven 坐标写成如下的格式:

  1. groupId:artifactId:packaging:version

虽然在不将项目提交到Maven官方仓库的情况下,这不是强制约束,但还是建议不论大小项目一律遵守Maven的命名标准。

  • 选择Maven配置、仓库等。

这个在上一篇中已经配置过。保留默认即可。
Java 快速入门系列教程 - 图27

  • 指定项目名称&项目目录

这里的项目名称只做显示使用。跟Maven坐标无关。
Java 快速入门系列教程 - 图28
如果项目文件夹未创建,会提示帮你创建,选择OK之后。IDEA就会进行项目创建&初始化工作

3、项目预览与启动

  • 阅读IDEA使用tips

Java 快速入门系列教程 - 图29

  • 开启Maven Project自动导入

Java 快速入门系列教程 - 图30
项目创建完成后,IDEA识别到这是一个Maven项目,是否导入到项目的IDEA的配置中。选择开启自动导入即可

  • 启动应用程序

Java 快速入门系列教程 - 图31
双击打开App.java文件。然后对文件编辑区域唤出鼠标右键菜单,选择Run App.main();
或者直接使用快捷键Ctrl+Shift+F10,IDEA会自动帮你创建调试配置并启动应用程序。 运行结果在IDEA底部的console面板。
(当然也可以通过运行AppTest来运行单元测试)
到这里,就完成了使用IntelliJ IDEA+Maven 创建,运行的第一个项目

三、项目结构说明

1、根目录说明

Java 快速入门系列教程 - 图32

目录/文件 说明(ken.io
.idea IDEA配置文件目录
src 源文件文件目录(源代码、静态资源等等)
target 编译输出目录,用于存放编译后的文件(类文件,war包jar包等)。
helloworld.iml IDEA用于记录Module配置的文件
pom.xml Maven Project配置文件
External Libraries 用于查看Project的依赖

在 IntelliJ IDEA 中 Project 是最顶级的级别,次级别是 Module。一个 Project 可以有多个 Module。目前主流的大型项目结构都是类似这种多 Module 结构,比如我们的项目可以划分为helloworld-app,helloworld-utils,helloworld-model等等,Module之前可以互相依赖。而Project是一个抽象个概念,Project由一个或者多个Module组成。Project跟Module之间的关系由pom.xml来配置,Module之间的依赖由Module文件夹中的pom.xml来配置。

2、源文件目录说明

Java 快速入门系列教程 - 图33

目录/文件 说明(ken.io
src/main 项目主目录
src/main/java 项目的源代码所在的目录(Sources Root)
src/main/resources 项目的资源文件所在的目录(Resources Root)
src/main/filters 项目的资源过滤文件所在的目录
src/main/webapp web项目的配置、视图等目录
src/main/java/io.ken.helloworld io.ken.helloworld是module的默认package,Maven的规范
src/test 项目测试目录(Sources Root)
src/test/java 测试代码所在的目录(Resources Root)
src/test/resources 测试相关的资源文件所在的目录
src/test/filters 测试相关的资源过滤文件所在的目录

大多数情况下,一个项目都只有一个Module构成,需要进行分层都会通过package来完成。
例如:
Java 快速入门系列教程 - 图34

3、pom.xml 文件说明

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>io.ken.helloworld</groupId>
  5. <artifactId>helloworld</artifactId>
  6. <version>1.0-SNAPSHOT</version>
  7. <packaging>jar</packaging>
  8. <name>helloworld</name>
  9. <url>http://maven.apache.org</url>
  10. <properties>
  11. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  12. <junit.version>3.8.1</junit.version>
  13. </properties>
  14. <dependencies>
  15. <dependency>
  16. <groupId>junit</groupId>
  17. <artifactId>junit</artifactId>
  18. <version>${junit.version}</version>
  19. <scope>test</scope>
  20. </dependency>
  21. </dependencies>
  22. </project>
参数 说明
modelVersion Maven配置版本
groupId 代表组织和整个项目的唯一标志。比如说所有的Maven组件的groupId都是org.apache.maven。
artifactId 具体项目的名称,它于groupId共同确定一个项目在maven repo中的位置,例如,groupId=org.codehaus.mojo, artifactId=my-project的项目,在maven repo中的位置为:$M2_REPO/org/codehaus/mojo/my-project
version 用于说明目前项目的版本,在引用依赖的时候确定具体依赖的版本号。
packaging 规定项目的输出格式,包括jar、war、pom、apk等,根据实际需要确定。例如,开发一般的java库,可以使用jar packaging;开发android则是apk packaging。
name 项目显示名称
url 项目地址
properties 用于定义变量,可以在当前配置文件pom.xml,以及子Module的pom.xml中引用,引用方式:${propertyname},例如:${junit.version}
dependencies 用户配置Module的依赖

四、备注

IntelliJ IDEA+Maven 创建、开发管理项目,本篇文章就写到这里。
大家实践过程中有问题欢迎加群沟通。

使用IntelliJ IDEA进行Java代码调试的技巧

一、前言

什么是代码调试?

通过调试可以让我们了解代码运行过程中的代码执行信息,比如变量的值等等。
通常调试代码是为了方便我们发现代码中的bug。ken.io觉得熟练代码调试技巧是成为合格程序员的基本要求。

本篇开发环境

1、操作系统: Windows 10 X64
2、Java SDK: jdk-8u141
3、Maven:3.5
4、IDE:IntelliJ IDEA 2017

二、调试技巧

1、设置断点

在代码编辑区域,点击左侧代码行行号的边,即可在该行设置断点
Java 快速入门系列教程 - 图35

2、启动调试

鼠标右键菜单->Run App.main(),或者使用快捷键Shift+F9启动调试
Java 快速入门系列教程 - 图36
启动调试后,程序启动,并会停留在第一个断点这一行。且这行的代码并未执行。
IDEA的底部会出现Debug工作区。所有按钮鼠标移动上去都有tips。本篇只介绍部分常用功能。

3、常用工具栏说明①

上图左侧竖排按钮部分,即红框①

按钮 说明&快捷键(ken.io的翻译)
绿色返回箭头 重新运行程序(Ctrl+F5)
绿色向右箭头 继续执行程序,如果遇到断点则会停留到该断点(F9)
红色方块 停止程序(Ctrl+F2)
双红色小圆圈 查看所有断点信息(Ctrl+Shift+F8)

4、Debug工具栏说明②

上图左侧横排按钮部分,即红框②

按钮 说明&快捷键(ken.io的翻译)
红色箭头+横线 回到当前待执行,调试过程中如果查看引用的方法跳来跳去,可以使用该功能快捷返回。(Alt+F10)
蓝色向下箭头 单步调试:执行一条语句,但是遇到方法调用时不进入,直到方法执行完成后直接继续。(F8)
蓝色向右下箭头 单步调试:执行一条语句,但是遇到系统类库方法调用时不进入,直到方法执行完成后直接继续。如果遇到非系统类库中的方法,则会进入该方法进行调试(F7)
红色向右下箭头 单步调试:执行一条语句,遇到方法调用时会进入方法进行调试(Alt+Shift+F7)
蓝色向右上箭头 执行当前方法并到下一步骤,如果当前方法有断点则会到下一个断点(Shift+F8)
蓝色向右下小箭头+竖线 运行到下一个断点(Alt+F9)

5、Frames区域说明③

该区域主要显示当前的堆栈信息

说明
mian:12 mian方法的第12行
App 当前的类名
io.ken.hello.java package name

6、变量区域说明④

管理当前方法已经声明的变量信息
debug-01-03.png-kbrbs.png

  • 修改变量值

选中要修改变量,使用快捷键F2进入编辑模式
debug-01-04.png-kbrbs.png
回车键保存,然后F8进行单步调试
debug-01-05.png-kbrbs.png
这样,本来运行后result=false,结果由于我们修改了变量的值。让本来会被跳过的if语句块可以被调试。

三、备注

IDEA调试快捷键总结

快捷键 说明(ken.io的翻译)
Shift+F9 启动调试
F9 继续执行程序,如果遇到断点则会停留到该断点
Ctrl+F2 停止程序
Ctrl+Shift+F8 查看所有断点
Alt+F10 回到当前待执行,调试过程中如果查看引用的方法跳来跳去,可以使用该功能快捷返回
F8 单步调试:执行一条语句,但是遇到方法调用时不进入,直到方法执行完成后直接继续。
F7 单步调试:执行一条语句,但是遇到系统类库方法调用时不进入,直到方法执行完成后直接继续。如果遇到非系统类库中的方法,则会进入该方法进行调试
Alt+Shift+F7 单步调试:执行一条语句,遇到方法调用时会进入方法进行调试
Shift+F8 执行当前当前方法并到下一步骤,如果当前方法有断点则会到下一个断点
Alt+F9 运行到下一个断点