Java从0到全栈-Java语言概述与开发环境搭建

Posted ittimeline

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java从0到全栈-Java语言概述与开发环境搭建相关的知识,希望对你有一定的参考价值。

Java从0到全栈-Java语言概述与开发环境搭建

Java语言概述

Java发展历史

 

Java之父-James Golsing
Java之父-James Golsing

 

  • 起源
    1991年,SUN(Standford University Network)公司的James Golsing领导的工程师小组想要开发一种用于像电视机、微波炉、电话这样的消费类电子产品的小型计算机语言,该产品的特点是由于不同的厂商选择不同的CPU和操作系统,因此要求该语言不能和特定的体系结构绑定在一起,也就是跨平台的。最初将这个语言命名为Oak,但是发现已经有一种语言叫这个名字,后来改为Java(来源于印尼爪哇岛的咖啡)。

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

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

  • 开发平台
    经过20多年(1995年正式对外公开发布)的发展已经逐步建立起自己强大的生态体系,在大型互联网分布式应用开发,移动端android开发以及大数据开发占据了广阔的市场,最典型的就是国内互联网巨头-阿里巴巴在其电商、物流、金融、支付、大数据、云计算等业务场景中大量使用了Java及其相关技术栈(MyBatis,Spring Framework/Spring Boot/Spring Cloud/Spring Cloud Alibaba,Hadoop,Spark,Flink)。

  • 运行平台
    Java程序是运行在JVM(Java Virtual Machine)之上的,这就是Java程序跨平台实现的本质原因,而且由于Java的开放性,有越来越多的语言是运行在JVM之上的,例如大数据处理语言Scala,Android开发的Kotlin以及Clojure,Groovy等等。

而作为一个Java开发者而言,了解Java语言的历史就要了解JDK(Java Development Kit)的发展历史,以及当前企业开发时选用的JDK版本和目前最新的JDK版本。

  • 1995年 5月23日Java语言诞生
  • 1996年SUN公司对外发布了JDK1.0
  • 1998年SUN公司发布了JDK1.2,将Java分成了J2SE,J2EE,J2ME
  • 2004年SUN公司发布了JDK1.5,也被称为JDK5.0,同时J2SE,J2EE,J2ME分别更名为JavaSE,JavaEE,JavaME
  • 2006年12月SUN公司发布了JDK1.6
  • 2011年Oracle公司发布了JDK1.7,也被称为JDK7.0
  • 2014年Oracle公司发布了JDK8.0
  • 2017年Oracle公司发布了JDK9.0
  • 2018年3月Oracle公司发布了JDK10.0,版本号也被称为18.3
  • 2018年9月Oracle公司发布了JDK11.0,版本号也被称为18.9
  • 2019年3月Oracle公司发布了JDK12.0,版本号也被称为19.3
  • 2019年9月Oracle公司发布了JDK13.0,版本号也被称为19.9
  • 2020年3月Oracle公司发布JDK14.0,版本号也被称为20.3

JDK5.0是JDK发展史上具有里程碑意义的版本,具有许多新特性,例如可变参数、自动拆装箱,泛型、注解、枚举等等。

JDK7.0是Oracle公司09年收购SUN公司之后发布的第一个版本,也就意味着自JDK7.0以后下载JDK需要去Oracle官网下载。

JDK8.0是国内互联网公司使用的主流JDK版本,许多Java的开源框架(例如SpringBoot2.x,Spring Cloud)都是基于该版本开发,也是Oracle公司长期支持的JDK版本。

JDK9.0以后Oracle公司将JDK的发布周期改为半年发布一个大的版本,而在企业项目开发时应该选择互联网大厂广泛使用,并且是官方长期维护的版本,而不是最新的版本。Oracle官方长期支持的JDK版本为JDK8和JDK11,分别支持到2025年和2026年。而JDK9,JDK10,JDK12,JDK13,JDK14都不是官方长期支持的版本。

Java从0到全栈系列首先会基于JDK11开始学习,然后逐渐会覆盖最新版本JDK涉及到的新特性。JDK是向下兼容,这也就意味着JDK8的特性能在JDK11上运行。

关于JDK版本的选择
在学习Java时可以选择当前最新的JDK版本,而在企业应用开发中,JDK的版本和线上环境运行的JDK版本保持一致即可

Java的特点

Java是基于 C/C++基础之上发展而来,但是不同于C/C++的是Java是纯粹的面向对象(一切皆对象)语言,舍弃了C语言中容易引起错误的指针,并引入了垃圾回收机制避免了绝大多数内存泄露问题。
相对于C/C++而言,Java更加简单易用、安全、健壮,同时开发效率更高(拥有大量的开源组件、框架),运行效率低于C/C++,而且支持跨平台(一次编写,到处运行),体系结构中立,也支持分布式应用开发和高并发、高可用、高性能等应用场景。

Java程序之所以能够跨平台,是因为Java程序运行在JVM之上,没有和特定的平台绑定,Java程序不需要关注底层操作系统的差异性,而Oracle公司针对主流的操作系统提供了不同的JVM实现,从而屏蔽了底层操作系统的差异。

体系结构中立指的是JVM的实现可以是符合JVM规范的实现,例如Oracle公司的HotSpot,而且只要程序编译生成字节码文件,都可以在JVM上运行,例如Scala,Groovy都可以在HotSpot虚拟机上运行。

Java的技术体系

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

JavaSE(Java Standard Edition):标准版Java,提供了完整的Java核心API,主要用于桌面应用开发,例如Apache开源的性能测试工具JMeter就是使用JavaSE开发的。

JavaEE(Java Enterprise Edition):企业式Java,主要用于企业级后台服务,大型分布式互联网应用开发,例如电商、物流、支付、金融、在线教育等等。

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

目前Java主要被应用在企业级应用开发,大数据应用开发和Android应用开发,如果想要往这三个方向发展的同学,都必须要熟练掌握Java基础篇、Java新特性篇、Java进阶篇和Java开源组件篇的相关技术及其应用。Java进阶篇建议在有项目开发经验后再学习。

  • Java基础篇

    • Java概述与开发环境搭建
    • Java变量和数据类型
    • Java运算符
    • Java程序流程控制
    • Java数组
    • Java集成开发工具IntelliJ IDEA的使用
    • Java面向对象之类和对象
    • Java面向对象之类的五大成员
    • Java面向对象之抽象类和接口
    • Java面向对象之继承和多态
    • Java面向对象之内部类
    • Java日常开发常用类
    • Java异常机制
    • Java集合
    • Java5新特性之注解
    • Java5新特性之泛型
    • Java5新特性之枚举
    • Java IO 编程
    • Java NIO编程
    • Java AIO编程
    • Java 网络编程基础
    • Java 并发编程基础
    • Java JDBC编程与mysql基础
    • Java反射与动态代理
    • Java处理XML
    • Java 日志
    • Java测试与断言
    • Java与正则表达式
  • Java新特性篇

    • Java5新特性
    • Java7新特性
    • Java8新特性
    • Java9新特性
    • Java10新特性
    • Java11新特性
    • Java12新特性
    • Java13新特性
    • Java14新特性
  • Java进阶篇

    • Java数据结构与算法
    • Java设计模式以及JDK源码分析
    • Java并发编程进阶
    • Java虚拟机设计与实现
  • Java开源组件篇

    • Google Guava
    • Apache Commons
    • Akka
    • Disruptor
    • Netty
    • tio
    • RxJava

Windows DOS命令行基本使用

目前使用的主流操作系统有Windows,macOS,Linux(Ubuntu),而早期的Windows不是图形界面,需要使用DOS命令来使用操作系统。

使用DOS命令之前首先需要使用快捷键windows+r打开运行窗口
运行
然后在运行窗口中输入cmd后回车便可以启动DOS窗口,
输入cmd
cmd
即基于命令交互的方式使用操作系统的相关功能。
DOS窗口的C:\\Users\\ittim> 表示路径,即所有的操作都在C:\\Users\\ittim路径下进行。

如果想要切换盘符(例如D盘),只要输入D:然后回车即可切换到D盘
D盘

如果想要查看D盘的文件、目录列表,可以使用dir命令
D盘目录

图形界面下查看D盘的文件目录
D盘目录

如果想要进入某个目录,可以使用cd 加上路径名即可。例如cd workspace,然后再次使用dir查看文件目录列表
cd切换路径

如果想要一次进入多级目录,只需要使用反斜杠\\隔开文件夹即可。
cd多级目录

如果想要返回上一级目录,可以使用cd ..
cd ..

如果想要退回到根目录,可以使用cd \\,需要注意的是cd命令只能在当前盘符(例如这里的D盘)下切换路径
切换到根目录

如果想要退出DOS窗口,可以使用exit命令退出,还可以使用cls清除窗口的内容,使用Tab补全路径。

Java语言运行机制

由于高级编程语言和计算机底层语言是互不相通的,计算机最底层只能识别01010这种二进制的机器指令,因此需要使用工具进行语言之间的转换。这个就是程序编译或者解释的由来。

为了理解程序编译和程序解释,这里引入两种语言,分别是高级计算机语言L1,以及低级计算机语言L0。

  • 程序编译
    开发人员使用高级编程语言L1编写的应用程序通过编译器生成成计算机底层能够识别的低级语言L0,L0就是计算机实际执行的语言,而编译器生成的计算机底层识别的二进制机器指令过程就是程序编译。常见的编译型语言有C/C++/Objective-C/Go

  • 程序解释
    首先使用L0语言实现另外一个程序,也就是解释器,然后将开发人员使用高级语言L1编写的应用程序作为输入,每一句L1编写的程序都会在L0中作为等价的转换然后执行,解释的过程就是由L0编写的解释器去解释L1程序。常见的解释型语言有php,Python,javascript

Java源程序首先要经过C语言实现的javac编译器将源文件(例如HelloWorld.java)编译生成和平台无关的字节码文件(例如HelloWorld.class),如果源文件中有Java语法错误,则会导致无法编译通过。
然后在运行时将字节码给JRE的类装载器装载,并且由字节码校验器校验后通过解释器转换为真正的机器码。

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

Java开发环境搭建

Java开发环境搭建要求

Java从0到全栈系列的同学电脑硬件配置不低于i7 CPU、16G内存(32G内存更佳)、512G固态硬盘。操作系统Windows10,macOS10.14+都可以,不过必须是64位系统。
因为Java从0到全栈系列会涵盖Java的企业级应用开发,大数据应用开发和Android应用开发,
后面会安装和运行大量的系统软件以及应用软件,
例如Chrome,IntelliJ IDEA,WebStorm,Postman,MySQL,Wireshark,Navicat,SecureCRT,VMWareWorkStation,CentOS7等等。
如果是Windows10系统的电脑可以安装鲁大师来查看详细的硬件配置,鲁大师用完之后就可以删除,Windows系统不建议安装任何杀毒软件。
计算机硬件配置
如果是macOS系统的电脑可以通过左上角的苹果菜单->关于查看硬件配置
macBookPro配置

JDK11介绍

目前演示的环境是在Windows10下介绍JDK11的下载、安装和配置

如果想要开发Java程序,首先需要去Oracle官网下载、安装和配置JDK。
JDK(Java Development Kit)是开发Java程序的工具包,包含开发和运行Java程序所必备的环境。
JDK架构
而JRE(Java Runtime Enviroment)只包含了运行Java程序所需要的环境(核心API和JVM),JDK包含了JRE。

JDK11下载

JDK 下载地址:https://www.oracle.com/java/technologies/javase-downloads.html
JDK11下载地址:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html

首先去Oracle官网下载JDK11
JDK11官网
官网提供了各个主流操作系统(Windows,Linux,macOS等等)的JDK8版本下载,如果你的电脑是Windows 64位系统,可以下载文件jdk-11.0.6_windows-x64_bin.exe。
如果你的电脑是macOS系统,那么可以下载jdk-11.0.6_osx-x64_bin.dmg。

 

JDK11的版本
JDK11的版本

 

当点击下载的文件时,页面会弹出必须同意Oracle Technology Network License Agreement for Oracle Java SE
同意License
然后登录Oracle账户信息
登录Oracle

登录成功之后浏览器会自动开始下载JDK11
下载JDK11

JDK11安装

Windows下的JDK11安装和普通的应用软件安装几乎没有区别,不过需要注意的是安装路径不要有中文和空格,否则使用时会出现问题。

开始安装
JDK11安装

选择安装路径
安装路径

安装中
安装中

安装完成
安装完成

JDK11.0.6的安装目录
JDK11.0.6的安装目录

JDK11 配置

在正式使用JDK编译和运行Java程序之前,还需要配置PATH环境变量,因为使用JDK编译和运行Java程序是需要C:\\Program Files\\Java\\jdk-11.0.6\\bin目录下的javac.exe和java.exe两个程序在DOS命令行窗口来编译和运行Java程序。
javac和java
而为了在DOS命令行窗口的任意路径下使用javac.exe编译和java.exe解释运行Java程序,需要在系统的PATH环境变量中配置JDK11安装目录的bin目录。

首先打开文件资源管理器(快捷键Windows+E),然后找到此电脑->属性
此电脑-属性
然后找到高级系统设置
高级系统设置

然后找到环境变量
环境变量

然后在系统变量中新增JAVA_HOME,指向JDK11的安装目录
JAVA_HOME

并且在PATH环境变量中引用%JAVA_HOME%\\bin目录
PATH环境变量
PATH

配置完成以后点击各个窗口的确定按钮,然后打开DOS命令行窗口,分别输入javac -versionjava -version查看Java编译器和Java解释器的版本信息。
查看java版本

然后就可以在DOS命令行的任意路径下使用javac.exe和java.exe来编译和运行java程序。因为系统会从PATH环境变量配置的路径查找这两个程序。

如果想要切换版本,只需要修改JAVA_HOME变量的值即可。

JDK 编译、运行Java程序

本次演示在macOS10.1.5.3上使用JDK11.0.6来编译运行Java程序

首先使用文本编辑器(例如VS Code或者Atom)编写一段Java程序,程序的文件后缀名必须是.java,例如HelloWorld.java

此段程序的功能是向终端输出macOS10.15.3 & Visual Studio Code 1.43.0 Hello World With Java11然后并换行

public class HelloWorld{
    public static void main(String[] args) {
        System.out.println("macOS10.15.3 & Visual Studio Code 1.43.0 Hello World With Java11");
    }
}

在使用JDK编译、运行Java程序前,必须安装、配置JDK,然后在终端上使用javac -versionjava -version两个命令来查看安装的JDK版本信息。
java -version

然后使用命令cd Document/workspace/java/ittimeline切换到源文件HelloWorld.java所在的目录,如果想要在终端上查看HelloWorld.java的内容,可以使用cat HelloWorld.java
cat
接下来编译Java源程序,使用javac HelloWorld.java命令,编译会生成字节码文件HelloWorld.class,可以使用ls命令来查看编译生成的文件目录,注意该文件不是文本文件,无法使用cat命令查看。
javac编译程序
编译成功之后,就可以使用命令java HelloWorld来执行HelloWorld程序了。
java运行程序

如果想要获取系统信息,可以尝试编译和运行程序ShowProperties.java

public class ShowProperties{
  public static void main(String[]args){
    System.getProperties().list(System.out);
  }
}

 

程序运行结果
程序运行结果

 

如果想要体验Java的跨平台,可以将HelloWorld.java和ShowProperties.java拿到任何安装了Java虚拟机的操作系统上运行

VS Code 介绍、下载和安装

VS Code介绍

 

VS Code官网
VS Code官网

Visual Studio Code是一个轻量级但功能强大的源代码编辑器,可在您的桌面上运行,并且可用于Windows,macOS和Linux。它具有对JavaScript,TypeScript和Node.js的内置支持,并具有丰富的其他语言(例如C ++,C#,Java,Python,PHP,Go)和运行时(例如.NET和Unity)扩展的生态系统。

 

VS Code官网也提供了文档,可以阅读文档来获取其使用方法。
VS Code官方文档

VS Code 下载

当使用Chrome浏览器访问Visual Studio Code的官网首页时,浏览器会自动检测系统的版本(Windows,Linux,macOS),然后显示和系统对应的Visual Studio Code版本下载。
如果电脑是Windows系统,点击Download for Windows即可,目前(2020/03/17)最新的版本是1.43
VS Code下载我的全栈之路-C语言基础之C语言概述与开发环境搭建

Java核心技术之Java概述与开发环境搭建

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

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

前端采用vue+webpack后端采用java全栈开发,怎么实现自动部署

1_java语言概述-开发环境搭建