Java架构师成长之道之Java概述与开发环境搭建

Posted ittimeline

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java架构师成长之道之Java概述与开发环境搭建相关的知识,希望对你有一定的参考价值。

Java架构师成长之道之Java概述与开发环境搭建

2.1 Java概述

Java自从1995年诞生以来,由于赶上了互联网、移动互联网以及大数据的信息技术发展趋势,逐渐由一门高级编程语言演变成开发平台以及运行平台。

  • 开发平台
    经过20多年(1995年正式对外公开发布)的发展已经逐步建立起自己强大的生态体系,在大型互联网应用开发,移动端android开发以及大数据开发占据了广阔的市场,最典型的就是国内互联网巨头-阿里巴巴在其电商、物流、金融、支付、大数据等业务场景中大量使用了Java及其相关技术栈(Spring Framework/Spring Boot/Spring Cloud,Spark,Flink)。
  • 运行平台
    Java程序是运行在JVM之上的,这就是Java程序跨平台实现的本质原因,而且由于Java的开放性,有越来越多的语言是运行在JVM之上的,例如大数据处理语言Scala,Android开发的Kotlin等等。

2.1.1 Java发展简史

 

技术图片
Java之父 James Golsing

 

  • 起源
    1991年,Sun公司的James Golsing领导的工程师小组想要开发一种用于像有线电视机顶盒这样的消费类电子产品的小型计算机语言,该产品的特点是由于不同的厂商选择不同的CPU和操作系统,因此要求该语言不能和特定的体系结构绑定在一起,也就是跨平台的。最初将这个语言命名为Oak,然后发现已经有一种语言叫这个名字了,然后改为Java。

  • 流行
    20世纪90年代末,Java赶上了互联网发展的潮流,而互联网的特点刚好和消费类嵌入式电子产品类似(不同计算机产商选择不同的CPU和操作系统),得益于Java的跨平台特性,可以制作在支持Java的Web浏览器内的程序(Applet)而逐渐流行起来。

  • 生态
    由于Java开源,也得到了许多大厂(例如Oracle,IBM)的支持,逐步发展成为具有开源、跨平台、高性能、支持多线程、分布式、安全可靠等诸多特性的开发平台和运行平台,而且自JDK1.4以后涌现出许多为了简化企业级开发的开源框架,例如后期会学习的Spring Framework,MyBatis,Netty,Dubbo等等,同时开发者可以通过阅读Java和框架的源码来提高自身的编程功力。

2.1.2 Java技术体系平台

Java自从1998年之后将Java分为三个版本,分别是JavaSE,JavaEE和JavaME,不同的版本你有不同的应用场景。

  • JavaSE(Java Standard Edition):标准版Java,提供了完整的Java核心API,主要用于桌面应用开发。

  • JavaEE(Java Enterprise Edition):企业式Java,主要用于企业级后台服务,分布式应用开发

  • JavaME(Java Micro Edition):嵌入式Java,主要用于开发嵌入式设备的产品,例如塞班手机游戏

由于目前Java主要的擅长领域是企业级后台服务开发、Android移动应用开发以及大数据应用开发,而JavaSE语言是它们的基石,因此无论是从事企业级后台服务开发,还是Android以及大数据应用开发,都要先从JavaSE上手。

2.1.3 Java基础核心技术栈

如下列表所示,展示了JavaSE阶段的核心技术栈,涵盖了Java语言、类库以及常用第三方开源类库、框架的实现。

  • Java基础
    • Java概述与开发环境搭建
    • Java数据存储
    • Java数据运算
    • Java程序流程控制
    • Java数组
    • Java面向对象程序设计(上)
    • Java面向对象程序设计(下)
    • Java开发常用API
    • Apache Commons组件使用
  • Java高级
    • 集合
    • 泛型
    • 异常处理
    • 数据库编程
    • 注解
    • IO
    • NIO
    • AIO
    • AIO网络框架tio设计与实现
    • 多线程
    • 网络编程
    • 反射和动态代理
    • 日志
    • XML
    • 正则表达式
    • Java新特性实战
  • Java进阶
    • 数据结构
    • 算法
    • 设计模式
    • RxJava
    • Google Guava
    • JVM
    • Netty实战与源码分析
    • Java程序性能优化
  • JavaSE项目
    • Java实现 HTTP Server
    • Java实现ORM Framework
    • Java实现 RPC Framework

2.2 Java开发环境搭建

Java开发环境主要是在Windows或者macOS上搭建,通常需要安装JDK,IntelliJ IDEA,Git,Maven以及常用的其他工具,例如Chrome,Navicat,Visual Studio Code,PowerDesigner等工具。
在JavaSE阶段需要熟练掌握JDK,IntelliJ IDEA,Git和Maven的使用。

2.2.1 操作系统

主流的桌面操作系统主要有Windows,macOSss,目前绝大部分台式机和笔记本预装的都是Windows操作系统,其操作界面和常用软件如下图所示
技术图片
目前最新的版本是Windows10 1903,可以使用winver命令查看
技术图片
而苹果电脑预装的都是macOS,其操作界面和常用的软件如下图所示

技术图片
目前最新的版本是macOS 10.1.4.5,可以选择左上角的苹果菜单->关于本机查看
技术图片

2.2.2 开发工具安装

俗话说,工欲善其事必先利其器,掌握一些日常开发中使用的工具、软件能够大大的提高工作效率,工具本身推出的目的也是为了解放生产力。而软件开发是大型团队之间协作,在企业日常开发中,软件的各个版本要跟团队保持一致。避免因为版本不一致导致各种不必要的问题。

Windows上安装的应用程序通常都是.exe或者.msi格式,通常只需要去软件官网下载后双击安装即可。安装时需要注意安装的路径不能包含中文和空格。有些软件安装时会连带安装其他不必要的软件(全家桶套装)。

macOS上的应用程序通常是.dmg格式,下载打开之后通常都是.kpg或者.app,如果是.kpg需要根据提示进行安装,如果是.app格式,直接拖放到"应用程序"文件夹即可。

2.2.2 JDK

2.2.2.1 JDK概述

JDK(Java Development Kit)是Oracle公司推出的包含了开发和运行Java程序的工具集,原SUN公司在2010年被Oracle公司以74亿美金收购,其整体架构如下图所示。
技术图片
这里结合Java架构图理解JDK,JRE和JVM三者之间的关系。
JDK(Java Development Kit)包含了开发和运行Java程序所必备的环境,
JRE(Java Runtime Enviroment)包含了运行Java程序所必备的环境,由JVM和Java核心类库组成
JVM(Java Virtual Machine)负责解释执行JDK编译生成的字节码文件。

2.2.2.2 JDK下载和安装

想要开发程序就必须去官网下载和安装JDK,目前互联网企业中使用最广泛的JDK版本为JDK8,而目前最新的JDK版本为JDK12,其中Oracle官方长期支持的JDK版本为JDK8和JDK11,分别支持到2025年和2026年。而JDK9,10,12都不是官方长期支持的版本,后期的学习中会覆盖所有版本涉及到的新特性。而且JDK是向下兼容,这也就意味着JDK8的特性能在JDK11上运行。

在日常开发学习中可以选择最新的版本(例如JDK12)学习,而在企业开发中,JDK的版本和线上运行的JDK版本保持一致即可。

JDK的下载非常容易,在官网获取地址,然后点击同意Lincese,选择对应的操作系统下载即可,这里以最新的JDK12为例子。
Java之所以能跨平台的本质原因是Oracle公司针对不同的操作系统实现了不同的JDK,而Java程序只需要和JDK交互即可,JDK屏蔽了底层操作系统的差异性。
通常开发Java程序,只要选择下载Windows或者macOS的版本即可。
而测试(集成和压力)以及部署生产环境需要下载Linux版本,因为国内绝大多数的服务器系统都是Linux(Ubuntu Server和CentOS)
技术图片

Oracle官方针对JDK提供了各个平台的安装向导,读者们可以根据自己的操作系统版本查找对应的文档进行安装,这里以JDK12的安装为例,介绍macOS下JDK12的安装过程。

首先下载JDK,Chrome下载软件的默认路径就是下载,如下图所示,然后双击JDK-12.0.1_osx-64_bin.dmg文件
技术图片
会看到JDK 12.0.1.pkg文件
技术图片
然后会正式进入JDK的安装过程,首先是介绍
技术图片
然后选择安装类型,默认是标准安装
技术图片
此过程会提示需要输入密码。
等待片刻之后JDK就会安装成功
技术图片

最后会提示是否删除安装文件,我这里就不删除了。
技术图片

最后需要验证下JDK是否安装成功,打开终端软件iTerm,然后输入命令javac -version 和
java -version,看到如下命令输出即可。
技术图片

macOS版的JDK默认的安装路径是/Library/Java/JavaVirtualMatchines,如下图所示,分别安装了JDK8,JDK11和JDK12,最后安装的是JDK12,所以javac -version和java -version命令输出的都是JDK12的相关信息。
技术图片

如果想要在终端中使用其他的JDK版本,则需要在/etc/profile文件中配置JAVA_HOME和PATH,JAVA_HOME顾名思义指的就是Java的安装家目录,其他Java编写的程序(例如Maven,Tomcat)会依赖这个变量,而PATH是系统路径,它的作用就是系统在执行命令时执行的路径,当我们执行命令时,系统会首先在当前路径下找命令对应的可执行程序,然后去PATH路径下找。

首先打开终端程序iTerm,然后输入命令sudo vim /etc/profile
使用vim修改profile文件
技术图片
此时vim编辑器处于阅读模式,需要输入i进入编辑模式,然后输入如下内容

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.3.jdk/Contents/Home
export PATH=$PATH:$JAVA_HOME$\\bin

 

技术图片
添加JAVA_HOME和PATH配置

最后按esc推出编辑模式,再按wq!保存文件并退出。
可以使用cat命令查看编辑后的profile文件内容

 

liuguangleideMacBook-Pro:~ liuguanglei$ cat /etc/profile
# System-wide .profile for sh(1)

if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi

if [ "$BASH-no" != "no" ]; then
    [ -r /etc/bashrc ] && . /etc/bashrc
fi
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.3.jdk/Contents/Home
export PATH=$PATH:$JAVA_HOME$\\bin

此时的配置修改并没有生效,还需要使用source /etc/profile命令让修改的配置生效。
然后再次使用

liuguangleideMacBook-Pro:~ liuguanglei$ source /etc/profile
l

然后再次运行javac -version和java -version命令,输出的运行结果显示JDK版本已经切换到JDK11

iuguangleideMacBook-Pro:~ liuguanglei$ javac -version
javac 11.0.3
liuguangleideMacBook-Pro:~ liuguanglei$ java -version
java version "11.0.3" 2019-04-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.3+12-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.3+12-LTS, mixed mode)

2.3 Java开发工具

当安装完JDK之后,便可以开发Java程序了,不过JDK并没有提供图形化界面的编辑器或者是集成开发环境。我们可以使用Visual Studio Code编辑器或者是IntelliJ IDEA来编写Java程序。
而在企业日常开发中通常使用IntelliJ IDEA+Git+GitLab+Maven+Jenkins来开发、管理、部署代码。
初学者建议使用Visual Studio Code来编写Java,因为集成开发环境封装了底层细节。

2.4 Java版HelloWorld

HelloWorld作为一门编程语言的入门程序,如果能够编写和运行HelloWorld,表示迈向编程入门的大门了,Java版本的HelloWorld和其他语言的程序一样,都需要经过编写、编译、运行三个步骤。

2.4.1编写Java源程序

为了照顾初学者,这里使用JDK+SVisual Stuido Code来实现编写Java源程序

首先在/Users/liuguanglei/Documents/下创建一个code目录,用来存放Java程序的源文件。

然后去Visual Studio Code的官网下载并安装,官网提供了各个操作系统的版本下载。
技术图片
下载之后将VSCode-darwin-stable.zip包解压后将Visual Studio Code拖放到“应用程序”文件夹即可使用了。

首先启动Visual Studio Code,然后打开/User/liuguanglei/Documents/code文件夹
技术图片

 

技术图片
/User/liuguanglei/Documents/code

然后在code目录下创建源文件HelloWorld.java,Java程序的源文件都是.java结尾。
技术图片
技术图片

 

源文件的代码如下所示

public class HelloWorld
    public static void main(String[]args)
        System.out.println("Hello World With macOS & Visual Studio Code");
    

2.4.2 编译Java源文件

JDK中提供了编译Java源程序的命令javac,由于之前在/etc/profile文件中配置过JAVA_HOME和PATH,因此可以在系统的任意路径下使用javac命令编译java源程序。

首先在终端中使用cd命令切换到/Users/liuguanglei/Documents/code目录,然后使用javac命令编译源文件HelloWorld.java。

liuguangleideMacBook-Pro:~ liuguanglei$ cd Documents/code/
liuguangleideMacBook-Pro:code liuguanglei$ pwd #查看当前路径
/Users/liuguanglei/Documents/code
liuguangleideMacBook-Pro:code liuguanglei$ javac HelloWorld.java

每个Java源文件可以包含多个class,但是只能有一个class使用public修饰,而且public修饰的类名必须和源文件名一致。
针对包含多个class的源文件,javac编译源文件时生成对应数量的class文件,字节码的文件名和源文件中的class类名一致。

2.4.3 运行Java程序

JDK中提供了运行Java程序的命令java,在终端中运行java HelloWorld即可运行java程序,命令如下所示。

liuguangleideMacBook-Pro:code liuguanglei$ java HelloWorld
Hello World With macOS & Visual Studio Code #程序输出结果

如果想要独立运行Java程序,源文件中必须包含固定格式的main方法,main方法是Java程序的执行入口,所有的代码都在这里开始执行,代码片段如下所示

public static void main(String[]args)
    

而如果想要观察程序运行的数据变化,可以使用System.out.println()实现,它能输出传递数据的内容,并换行。如果不想换行,可以使用System.out.print()。

main方法中的每条语句语句以分号结束,例如

System.out.println("HelloWorld");

2.4.4 Visual Studio Code的Java插件使用

每次在Visual Studio Code中编写完Java源程序后还需要打开终端,切换到源程序的路径下,然后使用javac和java命令编译和运行Java程序,此过程是非常繁琐的,Visual Studio Code提供了Java插件,可以让开发者们非常方便的运行和调试Java程序。

首先切换到Visual Studio Code的Extends视图,然后搜索Java Extends Pack,点击安装即可,如下图所示
技术图片
安装完成以后,需要重启Visual Studio Code,然后再次打开HelloWorld.java源文件,便可以看到出现Run和Debug两个按钮,分别用于运行和调试Java程序。
技术图片
运行程序只需要点击Run,然后观察DEBUG CONSOLE的输出结果即可。
技术图片

2.5 Java程序的运行机制

Java源程序首先要经过C语言实现的javac编译器将源文件编译生成和平台无关的字节码文件(.class结尾的文件),如果源文件中有Java语法错误,则会导致无法编译通过
然后经过java解释生成对应的平台机器码后运行。

源程序是需要遵守Java语言规范,字节码文件是需要遵守JVM规范。
如果想要了解Java语言规范和JVM规范,可以拜读官方文档,其官网地址是https://docs.oracle.com/javase/specs/index.html

2.6 注释

注释(Comment)是用于描述程序的文字描述信息
Java中的注释分为如下三种

  • 单行注释:注释一行内容,使用//表示,通常在方法内容使用
  • 多行注释 注释多行内容, 使用/**/表示,通常在方法内部使用,多行注释不能嵌套,否则会发生编译错误
  • 文档注释 用于生成Java API文档,使用/***/表示,通常在类上,属性上和方法上使用,可以使用javadoc -d 文档目录 源文件名生成API文档
lliuguangleideMacBook-Pro:code liuguanglei$ javadoc -d /Users/liuguanglei/Documents/doc/ HelloWorld.java
正在加载源文件HelloWorld.java...
正在构造 Javadoc 信息...
标准 Doclet 版本 11.0.3
正在构建所有程序包和类的树...
正在生成/Users/liuguanglei/Documents/doc/HelloWorld.html...
HelloWorld.java:8: 警告: @param 没有说明
     * @param args
       ^
正在生成/Users/liuguanglei/Documents/doc/package-summary.html...
正在生成/Users/liuguanglei/Documents/doc/package-tree.html...
正在生成/Users/liuguanglei/Documents/doc/constant-values.html...
正在构建所有程序包和类的索引...
正在生成/Users/liuguanglei/Documents/doc/overview-tree.html...
正在生成/Users/liuguanglei/Documents/doc/index-all.html...
正在构建所有类的索引...
正在生成/Users/liuguanglei/Documents/doc/allclasses-index.html...
正在生成/Users/liuguanglei/Documents/doc/allpackages-index.html...
正在生成/Users/liuguanglei/Documents/doc/deprecated-list.html...
正在构建所有类的索引...
正在生成/Users/liuguanglei/Documents/doc/allclasses.html...
正在生成/Users/liuguanglei/Documents/doc/allclasses.html...
正在生成/Users/liuguanglei/Documents/doc/index.html...
正在生成/Users/liuguanglei/Documents/doc/help-doc.html...
1 个警告

然后使用Chrome打开/Users/liuguanglei/Documents/doc/目录下的index.html文件,便会看到如下的JDK API文档信息。
技术图片

JDK中封装了大量开发中常用的API(Application Programming Interface),其文档也是使用javadoc实现的,
JDK12的API文档地址是 https://docs.oracle.com/en/java/javase/12/docs/api/index.html

后期会学习JDK提供的日常开发中常用类,可以使用搜索框搜索指定的类(例如java.lang.String)来查看类提供的方法,成员变量等等信息,如下图所示。
技术图片

如果你有macOS,还可以通过安装应用程序Dash。Dash 是使用与Mac OS平台的软件编程文档管理工具,可以浏览API文档,以及管理代码片段工具。Dash自带了丰富的API文档,涉及各种主流的编程语言和框架。 Dash内置了丰富的API文档,让我们集中管理API文档,包括下载、搜索、查阅并支持集成到XCode、Alfred等软件中,非常的强大!

下载安装Dash后,启动Dash,然后点击Download Docsets
技术图片
在搜索框中搜JavaSE,然后选择对应的版本下载即可。
技术图片
下载完成之后,即使没有网络,也可以在Dash中查阅JDK API文档
技术图片

在日常开发中应该多写注释,便于程序后期维护,而在程序调试的过程中,也可以通过注释部分代码来调试程序,注释的内容在javac编译时都会删除,不会影响程序的运行结果。

源程序HelloWorld.java中添加了三种注释。


/**
 * Java版本HelloWorld
 */
public class HelloWorld
    /**
     * 程序的入口,所有代码从这里开始执行
     * @param args
     */
    public static void main(String[]args)
        //向终端输出Hello World With macOS & Visual Studio Code
        System.out.println("Hello World With macOS & Visual Studio Code");

        /*
         * 学习编程的方法
         * 1. 看视频
         * 2. 敲代码
         * 3.总结文章,发博客
         */
    

再次运行结果时不会影响程序的运行结果
技术图片

以上是关于Java架构师成长之道之Java概述与开发环境搭建的主要内容,如果未能解决你的问题,请参考以下文章

Java架构师成长之道之RabbitMQ开发与运维-基础篇(CSDN版)

Java架构师成长之道之计算机组成原理概述篇

Java架构师成长之道之Java数据存储

Java架构师成长之道之Java数据存储

Java架构师成长之道之程序流程控制

我的全栈之路-Java架构师技术栈