前言
【杏仁】写在前面的话
有缘人:
您好!
首先,请原谅我把模块化思维用到写文章上,前言部分独立抽离出来写了篇文章,这样【杏仁】系列的文章就可以重复引用了。
偷懒,始终是程序员最棒的优点。
偷懒,是一门很高深的艺术,很容易误入歧途,请君三思而行!
我做人
对事也对人
那些曾经伤害过你的
是会跟一辈子的
如果连这都记不住
这辈子活得太冤
可我不会去报复
我会记住
从此
你走你的路
我再也不愿看到你
仅此
也是一种释怀
——杏仁奶昔随笔
我残存的思绪 零落成雨
目录
注:菜单设置有锚点,点击可直达相关内容
正文
一、关于JDK[1]
1、简介
JDK(Java Development Kit) 是oracle(甲骨文)旗下的软件,作为 Java 语言的软件开发工具包(SDK)。
也就是我们常说的JAVA开发环境,无论是线下开发,还是线上部署(线上部署可以只用JRE),只要你是用JAVA语言进行开发,就必须先安装JDK(有些开发软件是内置JDK)。
注:相关知识请点击标蓝文字,不做赘述
2、发展史
Oak:
1995 年 05 月 23 日, java(原名Oak)诞生,并且在SunWorld大会上正式发表了java1.0版本。
JDK1.0:
1996 年 01 月 23 日,JDK1.0发布,Java语言有了第一个正式版本的运行环境。JDK1.0提供了一个纯解释执行的Java虚拟机的实现(Sun class VM)。JDK1.0的代表技术:JVM/Applet/AWT。
JDK1.1:
1997 年 02 月 19 日,新特性:JAR文件格式、JDBC、JavaBean、RMI、内部类(Inner class)、反射(Reflection)
JDK1.2:
1998 年 12 月 04 日,新特性:基础体系拆分:J2SE(面向桌面应用程序开发)、J2EE(面向企业级应用开发程序开发)、J2ME(面向手机等移动终端开发),技术:EJB、Java Plug-in、JavaIDL 、Swing、JIT(Just In Time)编译器。
JDK1.3:
2000年5月8日,使用CORBA IIOP实现RMI的通信协议,改进Java2D,添加JavaSound类库。把Java技术体系拆分为3个方向,J2SE,J2EE,J2ME,并且Java虚拟机第一次内置了JIT。
JDK1.4:
2002 年 02 月 13 日 ,新特性:正则表达式,异常链,NIO,日志类,XML解析器,XLST转换器。
JDK5.0(1.5):
2004 年 09 月 30 日,新特性:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环。在虚拟机和API层面上,这个版本改进了Java的内存模型JMM,提供了java.util.concurrent并发包的部分。
JDK6.0(1.6):
2006年 12 月 11 日,新特性:提供动态语言支持、提供编译API和卫星HTTP服务器API,虚拟机内部做了大量改进,改进JVM的锁,同步垃圾回收,类加载。
JDK7.0(1.7):
2009 年 02 月 19 日,新特性:提供GI收集器、加强对非Java语言的调用支持JSR-292,升级类加载架构。
JDK8.0(1.8):
2014 年 03 月 18 日,新特性:Lambda 表达式、方法引用、默认方法、新工具、Stream API、Date Time API 、Optional 类、Nashorn, JavaScript 引擎。
JDK9.0
2017 年 09 月 21 日,新特性:交互式REPL:JShell、Java模块化系统-Jigsaw、GC的改进、Javadoc搜索、进程API的改进、统一的JVM日志处理、多分辨率图像API–JEP 251。
JDK10.0
2018 年 03 月 14 日,109项新特性,12 个JEP改善提议,73 项新增API,JVM 规范改动,19处Java 语言规范的更改。
JDK11.0
2018 年 09 月 25 日,新特性:17个JEP变更,Nest-Based Access Control(基于嵌套的访问控制)、Dynamic Class-File Constants(动态类文件常量)、Improve Aarch64 Intrinsics(改进 Aarch64 函数)、Epsilon: A No-Op Garbage Collector(Epsilon 一个无操作的垃圾收集器)、Remove the Java EE and CORBA Modules(删除 Java EE 和 CORBA 模块)、HTTP Client (Standard)(标准HTTP客户端)、Local-Variable Syntax for Lambda Parameters(用于 Lambda 参数的局部变量语法)、Key Agreement with Curve25519 and Curve448(Curve25519 和 Curve448 算法的密钥协议)、Unicode 10、Flight Recorder(飞行记录器)、 ChaCha20 and Poly1305 Cryptographic Algorithms(ChaCha20 和 Poly1305 加密算法)、Launch Single-File Source-Code Programs(启动单一文件的源代码程序)、Low-Overhead Heap Profiling(低开销的 Heap Profiling)、Transport Layer Security (TLS) 1.3(支持 TLS 1.3)、ZGC: A Scalable Low-Latency Garbage Collector (可伸缩低延迟垃圾收集器)、Deprecate the Nashorn JavaScript Engine(弃用 Nashorn JavaScript 引擎)、 Deprecate the Pack200 Tools and API(弃用 Pack200 工具和 API)
3、题外话
本篇文章主要是为了服务于其他JAVA开发相关文章,独立抽离,仅供参考。写这篇文章的时候,JDK版本已经出到11.x,但是目前市场上大部分开发团队的项目都是用的1.8.x,预估未来几年内,依旧会有50%以上企业使用1.8.x版本。再者,版本变更,安装方法不会轻易改变,因此本文章可作为通用安装教程留存。
二、准备工作[2]
1、安装包的下载
官方1.8下载地址:点我进入
下载前,请确认自己电脑是几位的系统(32/64位),然后请根据你的系统选择对应的安装包(带x86字眼就是32位系统)。
当然,也有人图方便,自己是64位系统直接下了32位的安装包,讲道理,这也是能用的,但是后期开发的时候,有可能会报错或者警告,何必去作死咧,是这个道理。
注:虽然是官方给出的下载链接,也是有可能失效的,如果失效了,不要慌,稳住,进甲骨文的官网www.oracle.com,再找到相关的下载地址即可。当然,我们还是偷懒一下,直接百度一下JDK,需要注意的是,第三方网站下载的话,请留意版本号,因为1.8.x也是有很多小版本的,有可能在开发时报一些莫名其妙的Bug,建议用官方推荐的版本。别人踩过的坑,我们何必再踩一次呢,请绕行。
三、Windows安装与配置JDK[3]
1、安装
很简单,双击exe安装文件,一直点下一步就行。需要注意的地方:
①安装目录的选择,我个人比较喜欢默认路径,因为重装系统后就全部清空了,省事,而且C盘是固态,运行起来快。其实更好的是装到其他盘,统一管理,比如后面要用到的MAVEN,SVN,TOMCAT等,好处是重装系统后也不用重新装JDK,只需要把环境变量配置上就好,省时。
②Windows版JDK安装会弹出两次安装,一个是jdk,一个是jre。其实1.8.x版本之后,jdk目录下已经包含有jre了,所以又弹出jre单独的安装版有点多余,第二个安装弹窗可以直接关掉,不用点下一步。这一步经常会不小心点到,留意一下弹窗的描述,安装路径就知道是jdk还是jre了。
注:jre是运行环境,JAVA语言开发的游戏大部分都是内置这个jre包的,但是像《我的世界》就需要自己安装jre才能玩。还有一些桌面级别的JAVA开发的软件,打包的时候是可以选择内置jre包的,但是会增加软件包的容量。
小技巧:以下是我安装的JDK,默认路径。其实你可以直接把整个JDK文件夹随意复制移动,或者压缩打包成属于自己用的JDK,想安装的时候,解压出来,再配置环境变量即可。这就说到软件的本质了,我很多软件都是一个文件夹,装完系统直接复制到固态(速度快,运行不卡顿),然后创建桌面图标,就能直接用了,网上很多绿色版无需安装的软件就是这个道理,其实就是安装好后把文件夹打包起来罢了。但是有些软件的配置文件是带有安装目录路径的,这就需要手动去改配置文件了,所以小白还是慎用此操作。
2、配置环境变量
我的系统是最新版的2019LTSC企业版Win10,配置环境变量很简单,请记住原理,不要死记方法。这样其它系统的配置你也能手到擒来。
首先说为什么要配置环境变量,配置这个东西简单的说就是能让系统全局识别你所用的代码,Windows最常用的命令都是在CMD下运行的,为什么你在cmd运行框内输入ipconfig,会给你返回当前系统的IP信息,这些其实也是系统的环境变量,只不过已经内置好了,不用你去配置。如果你没配置JDK环境变量,在cmd运行框输入java -version是会提示不是内部命令...但是其实你现在也是可以运行java命令的,但是要花点功夫,像这样:打开cmd运行框,cd C:\Program Files\Java\jdk1.8.0_201\bin(进入JDK的工具容器目录),再输入java.exe -version,这样才能通过java编辑器命令获取到当前JDK的版本号,而配置了环境变量,你直接在cmd运行框输入java -version,就可以获得JDK版本号了,配置环境变量的作用就体现出来了,全局可用JDK相关命令。到后面的npm,MAVEN,MySQL都是一样的,系统本身是不识别这些命令的,但是你给系统配置上之后,系统就知道要去软件安装目录的bin目录找对应的运行工具执行你输入的代码。
废话不多说,马上开始配置环境变量:
①右键我的电脑——点击—》属性——点击—》高级系统设置——点击—》环境变量——点击—》新建
新建JAVA_HOME(名称可以自定义),内容填入C:\Program Files\Java\jdk1.8.0_201(你的JDK安装目录),
——点击—》确定保存——双击—》Path——点击—》新建
在Path里加两条记录:%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin
这里就很明显了,%JAVA_HOME%是指你前面添加的JDK安装目录,后面加的bin是指JDK工具容器目录,
jre\bin是指运行环境下的工具容器目录。
网上还有很多教程要加ClassPath,%JAVA_HOME%\lib\tools.jar,或者其他的,其实这些也用不到,可自行斟酌加减。
Win7的用户,环境变量配置就没有Win10那么清晰,在Path下新增时,是只有一行的,所以要在末尾(前面也行)加入:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
注意输入时都要是英文字符的,中文的分号是会报错的。
注:JAVA_HOME是下面那个系统变量框的新建,其实在用户变量框也能用,但是你换了用户登录系统就失效了,不推荐。
三个字 三句话 三行情诗 想你了3、测试是否配置成功
前面也说到了,如果正常配置成功了,在cmd运行框下输入:java -version 如果显示当前JDK的一些版本信息,就说明安装配置成功了,记得再输入一个:javac -version,这是检测JRE是不是配置成功的。
当然,你也可以直接输入java,会显示一些常用菜单,还有javac。在大学时还是用的JDK1.6,那个时候就要留意编码的问题,往往安装完成后输入这个会出一堆的乱码,是因为系统的编码问题导致的,现在1.7.x以上版本基本都没有乱码了,可以放心安装。如果你还在搞1.8.x之前的版本,希望你至少要开始用上1.8.x以上,毕竟现在都出到1.11.x了,但是因为很多编程框架还是吃1.8.x的,所以建议先入手1.8.x。
注:好像后面的新版本是可以输入缩写java -v显示版本信息的,但是1.8.x还不行,不要傻愣愣的以为自己配错了。
什么?!CMD运行窗口怎么打开?快捷键win+R打开运行窗口,输入cmd即可!或者在开始菜单,打开Windows系统目录,就能找到命令提示符字样的软件,点击打开就是了
道路千万条,安全第一条,啊呸呸呸...条条通罗马,方法千千万,爱用哪条用哪条。
四、Linux安装与配置JDK[4]
1、安装
我在VMware虚拟机装好了CentOS7系统,就拿这个来演示JDK的安装,毕竟如果你部署项目到线上,一般也是部署到阿里云的CentOS系统上,不过一般都是CentOS6版本的,没关系,懂得前面说的原理,Linux更简单!
安装准备阶段已经下好jdk-8u201-linux-x64.gz安装包,当然,你下rpm包也是可以滴,但是个人还是推荐gz,解压可用,多方便是不是。
怎么传到你的CentOS目录呢,方法很多:
①命令:wget -c 下载链接
wget -c https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.tar.gz?AuthParam=1550676360_e8e4167c466b33aa8357d269b73b0638
注:这个下载链接有可能会失效,参考准备步骤那,弄到下载链接就行了。wget 会将文件下载到你运行语句的目录,建议先cd /usr/local 再执行,-c是指断点续传
Wget常用参数
-b:后台下载,Wget默认的是把文件下载到当前目录
-O:将文件下载到指定的目录中。
-P:保存文件之前先创建指定名称的目录。
-t:尝试连接次数,当Wget无法与服务器建立连接时,尝试连接多少次。
-c:断点续传,如果下载中断,那么连接恢复时会从上次断点开始下载。
-r:使用递归下载
②通过SSH软件MobaXterm传输:
我个人觉得这是一个Windows很好用的SSH软件,不用安装,双击直接运行的,非常小巧,连接CentOS后,对文件的操作就变成和Windows一样了。可以直接把gz包拖进/usr/local,上传成功后,可以看到左边的目录栏有jdk-8u201-linux-x64.gz这个文件。
这里注意一下,官方推荐软件安装在usr/local目录下,相当于Windows的Program Files目录,具体详情可以百度一下,不做赘述。
运行命令:
#进入存放安装包的目录
cd /usr/local
#运行解压
tar zxvf jdk-8u201-linux-x64.gz
我多么期待 遇到一个如你一般的人
注:软件下载链接:稍后放出
当然,还有像scp,winscp等方法将压缩包传到CentOS,就不赘述了。
至此,其实已经安装完成,到环境变量配置阶段。
2、配置环境变量
解压完安装包,就是修改环境变量,原理和Windows是如出一辙的
运行命令
#这里是用vim编辑器进入配置文件
sudo vi /etc/profile
#进入编辑模式
i
#方向键移动到文档最下面,或者按shift+g
#添加环境变量配置内容
export JAVA_HOME=/usr/local/jdk1.8.0_201
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#摁Esc键,输入:wq,回车,保存成功
Esc
:wq
#让配置文件生效
source /etc/profile
可以看到,其实Linux下的JDK配置是基本一样的,
是不是很简单
3、测试是否配置成功
#测试配置是否成功
java -version
javac -version
如果显示对应版本信息,说明配置成功
一段旅程的结束 是另一段旅程的开始
五、相关拓展[5]
1.JVM虚拟机优化(预留链接位置)
注:JRE核心内容就是JVM,对于一些虚拟机的优化在线上部署尤为重要。JDK只是比JRE多了开发工具和第三方类库。
作者 @杏仁奶昔
2019 年 02月 21 日
网友评论