标签:JRE Java 语言 JDK Sun ...... 基础知识 JVM
1. 学习前的准备
-
一个好的学习方法(如何更高效学习):
-
成为一名合格的程序员,需要具备两个关键能力:
- 指法速度:高效的代码输入速度。
- 编程思想:能够用编程的方式解决现实问题的能力。
-
指法速度:
- 正确的手势:左手放在
asdf
,右手放在jkl;
,确保每根手指的位置正确。如果你目前使用错误的指法,从现在开始纠正。刚开始时可能不如二指打字快,但随着练习,速度会大幅提升。坚持下去,并确保自己在一开始就强迫自己盲打(不要看键盘)。 - 工具练习:可以安装像金山打字通这类软件来提升打字速度,也可以在敲代码过程中自然地进行练习,最终目标是形成肌肉记忆。
-
编程思想的形成:
- 编程思想指的是通过逻辑思维解决问题的能力。很多初学者会发现,虽然听课能听懂,但面对实际问题却无从下手。这种困惑源于编程思路尚未完全形成。
- 不要照抄代码:除了
HelloWorld
,因为这个程序是用来测试本地开发环境的,不需要理解其含义。其余的代码都要理解后自己动手编写,照抄只能让人失去学习兴趣。
-
一个好用的截图工具:
- Snipaste:一个非常好用的截图工具,适合在编程过程中快速捕捉代码片段或其他重要信息。
-
一台好一点的电脑:
- 建议配置:酷睿i7九代及以上,至少16G内存。现代开发环境复杂,尤其是涉及虚拟机、数据库服务、开发工具等,内存和处理器要求较高。此外,电子产品更新快,稍高的配置可以延长设备使用寿命并提升开发效率。
2. 开启你的学习之旅
-
JavaSE:
- 这是Java开发的基础,还是要打牢。基础语法、面向对象编程、常用类库(集合、异常、IO等)仍然是学习的核心。
-
数据库:
- MySQL仍然是主流,但可以考虑学习更加现代的NoSQL数据库,如MongoDB,特别是在涉及高并发和大数据量的应用中会非常有用。
- JDBC部分可以简化,更多地将精力放在使用ORM框架(如MyBatis、Hibernate)上,这样可以更高效地处理数据库交互。
-
前端框架(Vue.js):
- 传统的HTML、CSS、JavaScript仍是基础,但现在主流的前端开发已经过渡到现代的JavaScript框架。
- Vue.js 是非常受欢迎的轻量级框架,学习它能让你更高效地构建复杂的前端界面。
- 学习Vue CLI、Vue Router、Vuex等工具,掌握单页应用的开发流程。
- 可以额外了解ES6标准,学习更现代的JavaScript语法和功能。
- 其他可选框架:还可以选择学习React或Angular,这两个也是非常流行的前端框架,尤其在大型企业项目中使用较多。
-
后端框架(Spring Boot + Spring Cloud):
- 传统的Servlet + JSP逐渐被现代框架取代。建议直接学习Spring Boot,它是目前企业中Java后端开发的主流框架。
- Spring Boot简化了Spring的配置流程,开发效率大大提高。学习内容包括:
- RESTful API开发
- 与数据库交互(JPA或MyBatis)
- Spring Security(用于用户认证与授权)
- Spring Cloud用于微服务架构的开发,企业级项目中广泛应用。学习Spring Cloud后,能掌握微服务、分布式系统的开发技巧。
-
前端进阶:
- 可以跳过传统的AJAX,直接学习Axios(一个基于Promise的HTTP库,代替原生的XMLHttpRequest),它与Vue.js结合非常好。
- jQuery已经逐渐淡出主流开发,可以不再作为重点。
-
项目实战(Vue.js + Spring Boot):
- 实战项目可以使用Vue.js + Spring Boot + MySQL的组合,完成一个完整的前后端分离项目。通过这个项目,你将学会:
- 使用Vue.js构建响应式前端界面
- 使用Spring Boot提供后端服务和RESTful API
- 使用MySQL存储和管理数据
- 使用JWT(JSON Web Token)实现用户登录和身份验证
-
分布式技术与微服务:
- 学习Docker,用来创建轻量级的容器,以便开发、测试、部署分布式应用。
- Spring Cloud作为微服务架构的核心,掌握其相关组件,如:Eureka(服务注册与发现)、Feign(声明式HTTP客户端)、Ribbon(负载均衡)、Hystrix(熔断器)。
- 掌握消息中间件,如RabbitMQ或Kafka,它们用于处理分布式系统中的异步通信。
- Redis作为缓存技术,仍然是分布式系统中的重要组件。
-
前后端分离项目实战:
- 最终实战项目可以结合前后端分离的架构,使用Vue.js作为前端,Spring Boot + Spring Cloud作为后端,构建一个具有微服务架构的实际应用。
- 在项目中实现服务拆分、负载均衡、分布式缓存等技术,进一步提升对现代开发流程的掌握。
补充学习建议
- DevOps:在学习开发的同时,可以了解一下DevOps工具,如Jenkins、Kubernetes、CI/CD等,用于持续集成和部署。
- 云技术:现代开发环境中,云技术广泛应用。可以学习AWS、Azure或阿里云的相关服务,比如云服务器、对象存储、负载均衡等。
当然,后面这些技术只是给大家做一个前瞻,我们慢慢来!!!
本博客采用JDK13进行讲解
1. 第一章 Java 开发环境搭建
1.1 章节目标与知识框架
1.1.1 章节目标
掌握
Java
的开发环境搭建,会编写
HelloWorld
程序,并能够准确的进行编译和运行;理
解
path
和
classpath
环境变量并可以自行配置。
1.1.2 知识框架
1.2 Java 语言概述(了解)
Java
编程语言是
Sun Microsystems
公司的
James Gosling
在
1990
年创建的,于
1995
年公布
于世(一般说
Java
诞生于
1995
年)。
Java
是一门面向对象的编程语言,不仅吸收了
C++
语言
的各种优点,还摒弃了
C++
里难以理解的多继承、指针等概念,因此
Java
语言具有功能强大
和简单易用两个特征。
Java
语言作为面向对象编程语言的代表,极好地实现了面向对象理论,
允许程序员以优雅的思维方式进行复杂的编程。
目前在世界各地都有
Java
程序员的存在,你走到哪里也不再孤单,因为有你的
Java
编程
小 伙 伴 在 陪 伴 着 你 。 我 们 一 起 来 看 看 世 界 编 程 语 言 排 行 榜
TIOBE
(
https://www.tiobe.com/tiobe-index/
)给出的统计数据。
图
1-1
:
2018
年
5
月编程语言排行榜
上图是
TIOBE
排行榜给出的
2018
年
5
月份的编程语言排行榜的统计数据,如果你一直在
关注编程语言排行榜,那么你应该很容易发现
Java
的排名多年以来一直在前两名徘徊,并且
多数情况下都是以排名第一的形式存在。
1.3 Java 语言发展史(了解)
1990
年末,
Sun
公司准备为下一代智能家电(电视机,微波炉,电话)编写一个通用的控
制系统。该团队最初考虑使用
C++
语言,很多成员包括
Sun
公司的首席科学家
Bill Joy
,发现
C++
语言在某些方面复杂,系统资源极其有限,缺少垃圾回收系统等,于是
Bill Joy
决定开发
一种新的语言:
Oak
。
1992
年夏天,
Green
计划已经完成新平台的部分功能,包括
Green
操作系统,
Oak
的程序
设计语言、类库等。同年
11
月,
Green
计划被转成“
FirstPerson
有限公司”,一个
Sun
公司的
全资子公司。该团队致力于创建一种高度互动的设备。
1994
年夏天,互联网和浏览器的出现不仅给广大互联网的用户带来了福音,也给
Oak
语
言带来了新的生机。
James Gosling
(
Java
之父)立即意识到,这是一个机会,于是对
Oak
进行
了小规模的改造。
1994
年秋,小组中的
Naughton
和
Jonathan payne
完成了第一个
Java
语言的网页浏览器:
WebRunner
。
Sun
公司实验室主任
Bert Sutherland
和技术总监
Eric Schmidt
观看了该网页的演
示并给予了高度的评价。当时
Oak
这个商标已经被注册了,于是将
Oak
改名为
Java
。
1995
年初,
Sun
公司发布
Java
语言,
Sun
公司直接把
Java
放到互联网上,免费给大家使
用,甚至连源代码也不保密,也放在互联网公开。几个月后,
Java
成了互联网上最热门的宝贝。
各种各样的小程序层出不穷,
Java
终于扬眉吐气,成为了一种广为人知的编程语言。
1996
年底,
Flash
问世了,这是一种更加简单的动画设计软件:使用
Flash
几乎无须任何编
程语言知识,就可以做出丰富多彩的动画。
Flash
逐渐蚕食了
Java
在网页上的应用。
1997
年
2
月
18
日,
Sun
公司发布了
JDK1.1
,增加了即时编译器
JIT
。
1995
年
Java
诞生到
1998
年底,
Java
语言虽然成为了互联网上广泛使用的编程语言,但它
没有找到一个准确的定位。
1998
年
12
月,
Sun
发布了
Java
历史上最重要的
JDK
版本:
JDK1.2
。并将
Java
分成了
J2EE
(提供了企业应用开发相关的完整解决方案)、
J2SE
(整个
Java
技术的核心和基础)、
J2ME
(主要用于控制移动设备和信息家电等有限存储的设备)三个版本。
2002
年
2
月,
Sun
发布了
JDK
历史上最为成熟的版本,
JDK1.4
。
2004
年
10
月,
Sun
发布了万众期待的
JDK1.5
。
JDK1.5
增加了诸如泛型、增强的
for
语句、
可变数量的形参、注释、自动拆箱和装箱等。
2005
年,
Java
诞生十周年,
J2SE/J2EE/J2ME
分别改名为:
JavaSE/JavaEE/JavaME
。
2006
年
12
月,
Sun
发布了
JDK1.6
。
2009
年
4
月
20
日,
Oracle
甲骨文公司宣布将以每股
9.5
美元的价格收购
Sun
。
Oracle
通过
收购
Sun
获得了两项资产:
Java
和
Solaris
。
2007
年
11
月,
Google
宣布推出一款基于
Linux
平台的开源手机操作系统:
Android
。
Android
使用
Java
语言来开发应用程序。
Android
平台的流行,让
Java
语言获得了在客户端程序上大
展拳脚的机会。
2011
年
7
月
28
日,
Oracle
发布了
Java SE7
,这次版本升级耗时将近
5
年时间。引入二进
制整数、支持字符串的
switch
语句等。
2014
年
3
月
18
日,
Oracle
发布了
Java SE 8
。
2017
年
7
月,
Oracle
发布了
JavaSE 9
。
2018
年
3
月
20
日,
Oracle
发布了正式版
JavaSE 10
。同一年
9
月
25
日发布了
Java11
。
2019
年
3
月
19
日,
Oracle
发布了
Java12
。
以上的描述就是
Java
一路走来的发展历程,我们只能说:
Java
,你好坚挺啊!在这个发展
的过程中一代语言的兴起又衰败,又兴起又衰败,但
Java
这
24
年来一直立于不败之地。并且
渗透到每个行业,已然根深蒂固
在以上的描述中,我们提到了
Java
包括三大块,分别是
JavaSE
、
JavaEE
、
JavaME
,这三
者之间存在什么样的关系呢?请看下图你就明白了:
图
1-2
:
JavaSE
、
JavaEE
、
JavaME
三者关系
如上图所示,
JavaEE
和
JavaME
都包含
JavaSE
。实际上,这三大块就是
Java
的三大版本,
JavaSE
是
Java
的标准版,是学习
JavaEE
和
JavaME
的基础,
JavaEE
是企业版,
JavaME
是微
型版。
Java SE
(
Java Platform
,
Standard Edition
)。
Java SE
以前称为
J2SE
。它允许开发和部署
在桌面、服务器、嵌入式环境和实时环境中使用的
Java
应用程序。
Java SE
包含了支持
Java Web
服务开发的类,并为
Java Platform
,
Enterprise Edition
(
Java EE
)提供基础。
Java EE
(
Java Platform
,
Enterprise Edition
)。这个版本以前称为
J2EE
。企业版本帮助开
发和部署可移植、健壮、可伸缩且安全的服务器端
Java
应用程序。
Java EE
是在
Java SE
的基
础上构建的,它提供
Web
服务、组件模型、管理和通信
API
,可以用来实现企业级的面向服
务体系结构(
service-oriented architecture
,
SOA
)和
Web 2.0
应用程序。
Java ME
(
Java Platform
,
Micro Edition
)。这个版本以前称为
J2ME
。
Java ME
为在移动设
备和嵌入式设备(比如手机、
PDA
、电视机顶盒和打印机)上运行的应用程序提供一个健壮且
灵活的环境。
Java ME
包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可
以动态下载的连网和离线应用程序的丰富支持。基于
Java ME
规范的应用程序只需编写一次,
就可以用于许多设备,而且可以利用每个设备的本机功能。
综上所述,我们用几句话简单概括一下它们之间的区别。
Java
标准版,主要做一般的
Java
应用,比如应用软件
/ QQ
之类的通信软件等等。
Java
企业版,主要做企业应用,比如公司网
站,企业解决方案等。
Java
微型版,主要面向嵌入式等设备应用的开发,比如手机游戏等。
1.4 Java 语言特性(了解)
sun
公司对
Java
的描述:
"Java is a simple
,
object-oriented, distributed, interpreted, robust,
secure, architecture neutral, portable, high-performance, multihreaded, and dynamic language"
。翻译
起来就是
:
“
Java
是一门简单的,面向对象,分布式,解释性,健壮的,安全的,结构中立的,便
捷的,高性能的,多线程的,动态的语言”。那么,在学习
Java
编程语言之前,让我们一起
来看一看它有哪些特性吧?
① 简单性:
Java
语言底层采用
C++
语言实现,相对于
C++
来说,
Java
是简单的,在
Java
语言中程序员不需要再操作复杂的指针(指针的操作是很复杂的),继承方面也是只支持单继
承(
C++
语言是一种半面向对象的编程语言,支持多继承,多继承会导致关系很复杂),在很
多方面进行了简化。
② 面向对象:
Java
中提供了封装、继承、多态等面向对象的机制。
③
健壮性
:在
C++
程序当中的无用数据
/
垃圾数据需要编程人员手动释放,当忘记释放内
存的时候,会导致内存使用率降低,影响程序的执行;在
Java
语言当中这种问题得到了解决,
因为
Java
语言引入了自动垃圾回收机制(
GC
机制),
Java
程序启动了一个单独的垃圾回收线
程,时刻监测内存使用情况,在特定时机会回收
/
释放垃圾数据,这样会让内存时刻处于最好
的状态。
④ 多线程:
Java
语言支持多个线程同时并发执行,同时也提供了多线程环境下的安全机
制。
⑤
可移植性
/
跨平台
:可移植性
/
跨平台表示
Java
语言只需要编写
/
编译一次,即可处处运
行。
Java
代码既可以运行在
windows
的环境下,又可以运行在
Linux
的环境下,而不需要修改
Java
源程序,那么它是怎么做到的呢?功劳全在于“
Java
虚拟机(
Java Virtual Machine
,简称
JVM
)”这种机制,实际上
Java
程序运行的时候并不是直接运行在操作系统上面的,而是在
操作系统上先安装了一个
JVM
,把
Java
程序放到了
JVM
当中运行,
JVM
屏蔽了各操作系统
之间的差异,这样就完成了跨平台。但是,
JVM
的出现虽然搞定了跨平台,同时也带来了一
些问题,比如要想运行
Java
程序就必须先安装
JVM
,没有
JVM
,
Java
程序是运行不了的,就
像你要在网页上看视频,结果浏览器却提示你需要安装
Flash
插件,这一点你是不是感觉非常
不爽呀!那么
Java
程序、
Java
虚拟机、操作系统之间是怎样的关系呢?请看下图
通过上图我们可以看到不同的操作系统中安装的
JVM
肯定也是不同的,
windows
操作系
统则必须安装
windows
版本的
JVM
,
Linux
操作系统则必须安装
Linux
版本的
JVM
。这是因
为
JVM
是和操作系统直接打交道的,
windows
和
Linux
操作系统本身的执行原理不同,所以
JVM
肯定也必须是定制的,不能通用。但是
Java
程序放到
windows
的
JVM
上和放到
Linux
的
JVM
上最终执行效果是完全相同的。这是因为:虽然
JVM
版本不同,但是所有版本的
JVM
的实现都是遵守
sun
制定的
JVM
规范的,这样就可以达到编写一次到处运行的效果,有没有
感觉很神奇呀!
当然,
Java
语言除了以上的特性之外还有很多其它的特性,我在这里就不再一一赘述了,
大家对以上的特性来说重点知道
Java
的跨平台性以及垃圾回收机制即可,其它的作为了解。
1.5 JDK、JRE、JVM 三者关系(理解)
在学习
Java
之前,我们需要对一些专业术语有一定的了解,在
Java
中常见的专业术语包
括:
JDK
、
JRE
、
JVM
等,它们分别是什么,它们之间的关系又是怎样的呢,请看下图:
从上图中我们可以看到,
JDK
、
JRE
、
JVM
之间存在这样的包含关系:
JDK
包含
JRE
,
JRE
又包含
JVM
。换句话说,只要安装了
JDK
,
JRE
和
JVM
则自动就安装了。那么它们分别代表
什么呢:
①
JDK
:
JDK
(
Java Development Kit
) 是
Java
语言的软件开发工具包(
SDK
)。它是
每一个
Java
软件开发人员必须安装的。
JDK
安装之后,它会自带一个
JRE
,因为软件开发人
员编写完代码之后总是要运行的。注意:如果只是在这台机器上运行
Java
程序,则不需要安
装
JDK
,只需要安装
JRE
即可(
JRE
是有独立安装包的,这个大家可以从
Oracle
官网上找一
下)。
②
JRE
:
JRE
(
Java Runtime Environment
,
Java
运行环境),运行
JAVA
程序所必须的环
境的集合,包含
JVM
标准实现及
Java
核心类库。
③
JVM
:
JVM
是
Java Virtual Machine
(
Java
虚拟机)的缩写,
JVM
是一种用于计算设备
的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实
现的。
JVM
是实现
Java
语言跨平台的法宝。
在这里我需要重点强调一下,不同的操作系统需要安装不同版本的
JDK
,有专门的
windows
版
JDK
,
Linux
版
JDK
,
Mac
版
JDK
等,当然不同版本的
JDK
安装之后会对应不同版本的
JRE
和
JVM
。
1.6 初步了解 Java 的加载与执行(了解)
在编写第一个
Java
程序之前,我们应当对
Java
的加载与执行提前有一个简单的了解,请
看下图
通过上图,我们可以看到
Java
程序从开发到最终运行是这样进行的:
第一步(写代码):在任意位置创建一个
.java
结尾的文件,程序员在该文件中编写符合
Java
语法的源代码,这个文件被称为
Java
源文件。
第二步(编译):使用“
javac
”命令对
java
源文件进行编译,如果
Java
源文件符合
Java
语法规则,则编译生成
1
个或者多个以“
.class
”结尾的文件。“
.class
”结尾的文件我们称之
为字节码文件,注意字节码文件不是普通文本文件,使用记事本等文本编辑器是无法打开的,
但该文件内容也不是二进制,如果是二进制形式的话,操作系统是可以直接执行的,这个文件
的内容我们称之为字节码。注意:这里有一个“类名”的概念,假设生成的文件是
A.class
,
则表示类名为
A
,
B.class
则表示类名为
B
。
第三步(运行):使用“
java
”命令运行已编译的
Java
程序,假设编译之后的字节码文件
是
A.class
,则在
dos
命令窗口中执行
java A
命令,这个时候
Java
虚拟机(
JVM
)就启动了,
Java
虚拟机通过“类装载器
ClassLoader
”从硬盘中找到
A.class
文件并装载,字节码文件被装
载到
Java
虚拟机之后,
Java
虚拟机解释器对字节码进行解释,最终解释为二进制码,然后操
作系统通过执行二进制指令来和硬件平台完成交互。
以上则是
Java
程序加载与执行的过程,接下来我给大家总结
7
条规则,大家可以理解并记
忆一下:
①
Java
程序从开发到运行包括编译和运行两个阶段,这两个阶段可以在不同的操作系统
中完成,例如在
windows
环境下进行编译,在
Linux
环境下运行,这是因为有
JVM
机制的存
在,做到了一次编译到处运行(跨平台
/
可移植)。
② 编译阶段需要使用
javac.exe
(安装
JDK
之后该命令就存在了)命令,运行阶段需要使
用
java.exe
(安装
JRE
之后该命令就存在了)命令。
③ 一个
Java
源文件可能会编译生成多个
class
文件。
④
Java
源文件中的源代码如果不符合
Java
的语法机制则编译时编译器会提示错误信息,
并且无法生成
class
文件。反之则生成
class
文件,而
class
文件才是最终要执行的程序,此时
将
Java
源文件删除是不会影响
Java
程序运行的(当然,我们也不必删除
java
源文件,因为在
运行
class
文件之后,如果没有达到预期的运行效果,这个时候还需要将
Java
源代码修改,重
新编译,以达到最终的运行效果)。
⑤ 若生成的字节码文件名为
A.class
,那么我们称
A
为一个类的名字(这个先记住就行,
后面的内容会讲)。
⑥ 当编译阶段完成之后,我们可以使用
JRE
中的
java.exe
命令运行程序,例如执行命令
“
java A
”,该命令执行后会启动类加载器,类加载器去硬盘上搜索
A.class
文件,找到该字节
码文件之后,将其加载到
JVM
当中,
JVM
中的解释器会将
A.class
字节码文件解释为操作系
统可以执行的二进制码,然后操作系统通过执行二进制码和硬件平台交互。
⑦ 运行
Java
程序的前提是当前操作系统上已经安装了对应版本的
JVM
(
JVM
不是单独
安装的,安装
JRE
即可,不同的操作系统需要安装不同版本的
JRE
,不同版本的
JRE
对应不
同版本的
JVM
)。
在了解了
Java
程序的加载与执行之后,我们开始动手实现第一个
Java
程序吧!
1.7 开发前的准备工作(掌握)
1.7.1 windows 显示文件扩展名
Java
源文件要求文件扩展名必须为
.java
,不能使用其他扩展名,有些操作系统默认不显示
文件扩展名,大家可按照以下步骤,将文件的扩展名显示出来(以
win7
系统为例),请看以
下步骤:
第一步:打开电脑桌面上的“计算机”,在菜单栏上找“工具”。
第二步:点击“工具”,下拉列表中点击“文件夹选项
(O)…
”。
第三步:在弹出的“文件夹选项”对话框中点击“查看”选项卡,在列表中找到“隐藏已
知文件类型的扩展名”项,将该项前的“对勾”去掉,最后点击“应用”,点击“确定”即可。
以上是
win7
操作系统显示文件扩展名的步骤,其它
windows
系列版本的系统和以上操作
类似,大家可以自己找一下,并设置好
1.7.2 windows 系统的常用 DOS 命令
初次学习
Java
编程最好不要一上来就使用集成开发环境
IDE
,不利于代码的掌握,建议使
用文本编辑器,甚至可以使用记事本编写。在这种情况下,我们就需要熟悉一些
dos
命令,接
下来我们来看几个常见的
dos
命令吧:
打开
DOS
命令窗口,使用快捷键:
win + r
,输入
cmd
,回车。
回车之后就可以输入一些命令
Windows系统常用操作命令大全_win常用命令大全-CSDN博客文章浏览阅读1.1k次,点赞20次,收藏12次。这些命令和示例涵盖了大部分 Windows 操作需求。_win常用命令大全https://blog.csdn.net/m0_61840987/article/details/142819342
1.8 开发第一个 Java 程序(掌握)
1.8.1 JDK 的下载与安装
Java
语言由
Sun
(
Sun Microsystems
)公司开发,
2009
年被
Oracle
(甲骨文)公司收购,
所以目前
JDK
需要从
Oracle
下载,
Oracle
官网地址是
https://www.oracle.com
下载教程
2024最新版JDK安装-CSDN博客文章浏览阅读3.4k次,点赞33次,收藏38次。安装JDK以及配置环境变量,检查是否安装成功_jdkhttps://blog.csdn.net/m0_61840987/article/details/140116454
标签:JRE,
Java,
语言,
JDK,
Sun,
......,
基础知识,
JVM
From: https://blog.csdn.net/m0_61840987/article/details/143167911