Day07 回退初始
回退
对于Java,其实我并不了解发展史之类的,我是从JDK开始了解的,并搞定安装什么等等。随着近几天的学习,尤其是面向对象与面向过程的思考与求知,我逐渐开始感叹Java的神秘,毕竟对于一个几乎没有学过任何计算机语言的人来说,这确实很神秘而有趣。
一. Java的诞生
我从我的口吻来复述,毕竟那些知识在网上一搜都会出来,而我自己的快速记忆与通俗理解是我个人的。
-
c语言在1972年就诞生了,c语言更加贴近硬件、运行快、效率高,所以多为开发系统级的软件等,但是有点令人头大的是c语言的指针和内存管理
-
c++语言在1982年出现了,可以说更加复杂,因c语言是面向过程的,所以相比c语言,c++有了面向对象的特性,它兼容c语言。多在图形啊,游戏啊等领域
-
鉴于c语言的问题,于是出现一批人想建立一种不要内存管理,并能够真的实现移植,也就是编写一次,在任何地方都能运行的语言。然后JAVA就诞生了。
-
JAVA诞生之初,群体并不大,为了扩大JAVA的影响力,分了三大块进军不同领域:
J2SE:标准版
J2ME:嵌入式(据说凉凉了)
J2EE:企业级
-
三高:高可用,搞性能,高并发
构建工具:Maven,Ant等
应用服务器:Tomcat,weblogic等
web开发:Spring,myBatis等
开发工具:如Eclipse,intellij IDEA等
···· -
2006年进入大数据:Hadoop
-
2008进入手机:Android
二. Java的特性
- 相比较C语言的复杂,什么内存,什么指针,JAVA不需要这些,是纯净简化的C,简单性
- JAVA是面向对象的
- 一次编写,任何地方运行。移植性使得JAVA不需要考虑不同设备的性能等,只要有JAVA的虚拟机,就可以运行
- 高性能
- 分布式
- 动态性。反射
- 多线程
- 安全性
- 健壮性
三. 安装前需要知道的
- JDK:Java Development Kit
- JRE:Java Runtime Environment
- JVM:Java Virtual Machine
可说三者关系就是JDK包含JRE包含JVM。
JVM是JAVA虚拟机,这是跨平台的核心所在。JRE是运行JAVA的环境。JDK是开发者工具。
四. 安装JDK
2021.4.5 我这里遇到一些还模棱两可的问题,因为我下载的是JDK15了,不是更早的老版本,下面我会说到
-
当然是去官网下载JDK了,我下的最新的
-
安装,路径没有中文。鉴于这类东西的习惯,我已经不会再在这类文件路径里加入中文了,省得以后出毛病
-
接下来是安装intellij IDEA,一样去官网下载,安装
-
至于IDEA的设置什么的不说了,轻易能搜到
-
cmd里输入 java -version 会发现已经能查到了,但是此时并没有去手动配置环境变量,并且IDEA也是可以跑JAVA程序的
-
配置环境变量,先说手动配置的步骤:
①我是win10,鼠标右键 此电脑>属性>高级系统设置>环境变量
②上面是用户,下面是系统,我们在系统变量里新建:
变量名:JAVA_HOME
变量值:你刚刚安装JDK的文件路径
③在系统变量里找到“path”,双击打开
④在path里添加两个东西:
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
到这里会奇怪,因为文件里没有 jre文件,所以压根没有 jre目录下的bin文件。早期的版本里是会有的,但是在我下的这个版本里,当前最新的,是没有 jre的。所以需要将jre给弄出来啊。
①通过Dos指令,win+r进入cmd命令框,通过 cd\d 指令到你JDK的文件里。
②然后输入 bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre 这时回到文件里就可以看到jre已经出来了
-
这时该弄得都弄了,我却开始疑惑了。为什么我没有配置之前也是可以运行的,不是不配置环境不能运行吗?那我这能运行是什么意思?配置环境变量是必须的吗?我是不是多此一举了?
带着这个疑问,我在一个群里请教了别人,给我的解释是 jdk8 版本之后,会自动在windows下拷贝一份,类似于linuxd建立软链接。我是没有搞懂啊,因为我此时没用过linux,不明白这个类比是什么意思。
我在path里找到一个这个:
这或许就是刚刚给我的解析吧。但是我其实很奇怪,既然我有没有手动配置这个环境变量,都能运行,都能跑JAVA,那这个步骤的存在意义是什么呢,一定要有吗?后面别人告诉我,tomcat以及eclipse是要有这个配置的
六. 集成开发环境IDE
-
安装intelliJ IDEA,这个安装整个下来还是简单的。
-
在src下新建Java Class类
-
IDEA里的快捷方式真的很方便,像psvm就能直接public static void main(String[ ] args){ },不需要一个个打出来