文章概要
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要做哪些准备?
基础的编程经验(.NET、PHP、Python等)
如果你是.NET工程师,建议先阅读下Java跟.NET的对比:https://ken.io/note/java-vs-dotnet
Windows / Mac 作为开发环境
建议Windows,因为ken的开发环境是Windows,环境不同,操作会有差异
IDE:IntelliJ IDEA
- Linux 基本使用(推荐 CentOS、Ubuntu)
虚拟机安装教程:https://ken.io/serie/hyper-v-courses CentOS快速上手:https://ken.io/serie/centos7-quickstart Ubuntu快速上手:https://ken.io/serie/ubuntu-quickstart 如果实在不具备搭建Linux环境的条件,Windows也可以,但是不推荐
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、开始安装
- 2、安装JDK
- 3、安装JRE
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版本
java -version
#输出结果
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
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节点增加配置:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</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、开始安装&同意条款
3、选择安装内容(选择标准安装即可 )
4、设置Tomat端口、服务名称、管理账号等
5、选择JRE
6、设置安装目录
7、完成安装与验证
- 完成安装
- 访问验证
服务启动后访问:http://localhost:8080/
出现以上页面表示安装成功。
- Tomcat管理
访问:http://localhost:8080/manager/html
输入安装时填写的账号密码即可管理Tomcat
五、IDE:IntelliJ IDEA 安装&配置
1、IntelliJ IDEA下载
下载地址:https://www.jetbrains.com/idea/download/#section=windows
2、IntelliJ IDEA安装
- 开始安装
- 选择安装目录(根据自己喜好来)
- 选择桌面图标和关联文件
- 安装完成
3、IntelliJ IDEA全局配置
- 打开IntelliJ IDEA(默认选择不导入配置)
- 选择免费试用30天
- 设置主题&插件(选择跳过所有试用默认设置)
- 配置Maven
configure->settings
一共设置三项:
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项目默认设置
项目默认JDK版本设置
IntelliJ IDEA 没有检测到JDK。选择新建,然后选中JDK根目录:C:\SDK\Java\jdk1.8.0_141即可
六、备注
到这里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创建
- 选择Maven,然后选择Maven项目模板maven-archetype-quickstart
2、项目命名与Maven配置
- 项目Maven坐标信息
在 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 坐标写成如下的格式:
groupId:artifactId:packaging:version
虽然在不将项目提交到Maven官方仓库的情况下,这不是强制约束,但还是建议不论大小项目一律遵守Maven的命名标准。
- 选择Maven配置、仓库等。
这个在上一篇中已经配置过。保留默认即可。
- 指定项目名称&项目目录
这里的项目名称只做显示使用。跟Maven坐标无关。
如果项目文件夹未创建,会提示帮你创建,选择OK之后。IDEA就会进行项目创建&初始化工作
3、项目预览与启动
- 阅读IDEA使用tips
- 开启Maven Project自动导入
项目创建完成后,IDEA识别到这是一个Maven项目,是否导入到项目的IDEA的配置中。选择开启自动导入即可
- 启动应用程序
双击打开App.java文件。然后对文件编辑区域唤出鼠标右键菜单,选择Run App.main();
或者直接使用快捷键Ctrl+Shift+F10,IDEA会自动帮你创建调试配置并启动应用程序。 运行结果在IDEA底部的console面板。
(当然也可以通过运行AppTest来运行单元测试)
到这里,就完成了使用IntelliJ IDEA+Maven 创建,运行的第一个项目
三、项目结构说明
1、根目录说明
目录/文件 | 说明(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、源文件目录说明
目录/文件 | 说明(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来完成。
例如:
3、pom.xml 文件说明
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.ken.helloworld</groupId>
<artifactId>helloworld</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>helloworld</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>3.8.1</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</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、设置断点
2、启动调试
鼠标右键菜单->Run App.main(),或者使用快捷键Shift+F9启动调试
启动调试后,程序启动,并会停留在第一个断点这一行。且这行的代码并未执行。
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、变量区域说明④
管理当前方法已经声明的变量信息
- 修改变量值
选中要修改变量,使用快捷键F2进入编辑模式
回车键保存,然后F8进行单步调试
这样,本来运行后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 | 运行到下一个断点 |