共计 6295 个字符,预计需要花费 16 分钟才能阅读完成。
既然各位小伙伴当初曾经决定要学习 Java 了,那首先得对 Java 有根本的理解吧,所以接下来先用一篇文章,来给大家介绍一下 Java 到底是个啥。
情谊提醒:大家要记住,无论咱们学习任何技术,都要晓得这个技术是什么、干嘛的、怎么用、为什么这么用,以及应用时呈现了问题该怎么解决!
一. Java 简介
起源既然各位打算当前要靠 Java 来养家糊口了,那对 Java 的理解是不是应该更多一些呢?比方 Java 这个技术是怎么产生的?接下来给大家讲个小故事,让咱们一起来看看 Java 的起源吧。20 世纪 90 年代,经济高速倒退,大家有钱了就想谋求更高的生活品质。
过后创造了很多稀奇古怪的电子产品,比方有钱人必备的“大哥大”、BB 机、电视机顶盒、烤箱等。咱们晓得,硬件产品必须要有软件系统进行撑持能力运行,就好比人必须有灵魂能力称之为人。所以过后为了配合硬件的倒退,研发出了驰名的单片机零碎,这就大幅晋升了电子产品的智能化水平。过后有一个叫做“Sun”(不是 Son 哦)的公司,眼光很敏锐。
为了抢占宽广的生产电子产品市场,在 1991 年成立了一个名为“Green”的项目组,由詹姆斯·高斯林(高司令)、帕特里克等几个工程师一起负责研发新技术,专攻家电产品里的嵌入式应用开发。一开始 Green 项目组打算用 C ++ 进行嵌入式开发,但因为 C ++ 写进去的程序特地简单和宏大,不适宜在嵌入式的环境中运行。而且不同厂家生产的电子产品,其底层所应用的硬件零碎也各有不同,C++ 写进去的货色无奈实现“一次编码,处处运行”的跨平台需要。
所以为了解决以上这些问题,Green 项目组依据嵌入式的特点,对 C ++ 进行了革新,去除了 C ++ 中不太实用及影响平安的局部,并针对实时性要求,开发出一种称为 Oak(橡树)的面向对象语言。但此时 Oak 除了比 C ++ 更简略之外,其实也没有太大的区别,所以过后的硬件厂商对 Oak 没有太大的激情。
而 Oak 也就因为不足硬件的反对无奈进入市场,从而被搁置了下来。到了 1994 年 6、7 月间,Green 团队决定扭转接下来的倒退指标。因为 Oak 自身是一种精简的语言,程序十分小,很适宜在网络上传输,所以他们决定把 Oak 用在万维网上。
到了 1995 年,Sun 公司正式决定启用 Oak,并推出了能够伴随网页在网络上传输的 Applet 技术。后果就在此时,Sun 公司发现 Oak 这个商标被别的公司给提前抢注了。所以没方法,只能将 Oak 从新改名!大家都晓得,取名字是一个很令人抓狂的事,大家一时都找不到适合的名字来重新命名。在“百思不得其解”之际,过后正在喝 82 年爪哇岛咖啡的詹姆斯·高斯林眉头一皱; 计上心来,罗唆就把 Oak 改名叫“Java”得了。
于是,从此 Oak 更名为 Java,所以高斯林也就成了公认的“Java 他爹”!幸好高斯林过后不是在蹲坑,要不然,em……. 到了 1996 年 1 月,Sun 公司公布了 Java 的第一个开发工具包 (JDK 1.0),这也是 Java 倒退历程中的重要里程碑,标记着 Java 真正成为了一种独立的开发工具。以上就是 Java 语言的起源由来,当初你对它的历史晓得了吗?
概念 (把握) 通过下面的介绍,置信各位曾经对 Java 有所理解了,但实际上 Java 到底是个什么鬼,有些敌人可能还是没有搞清楚。别急,再给大家把 Java 的外围概念提炼一下。
Java 是已经赫赫有名的 Sun 公司,在 1995 年 5 月正式推出的一种面向对象的程序设计语言。Java 一开始是 Sun 公司的产品,但起初 Sun 被 Oracle(甲骨文)给收买了,所以当初 Java 属于 Oracle 公司。Java 语言是由 James Gosling(詹姆斯·高斯林,“高司令”)和共事们独特研发的,通常咱们认为高斯林是“Java 之父”。Java 是一种介于编译型和解释型之间的编程语言,但更偏差于解释型。
编译型语言写出的代码会依据 CPU 类型的不同,编译成不同的机器码执行,工作原理相似于“翻译书籍”,如 C、C++ 等;解释型语言能够由解释器间接加载源码运行,工作原理相似于“同声传译”,但运行效率较低,如 JavaScript、Python、Ruby 等。为了使得定位更清晰,Sun 公司将 Java 分成了三个技术体系:JavaSE(J2SE):Java 2 Platform Standard Edition,Java 平台标准版,蕴含规范的 JVM 和规范库;JavaEE(J2EE):Java 2 Platform,Enterprise Edition,Java 平台企业版,在 JavaSE 的根底上减少了大量的 API 和库,用于企业级我的项目开发;JavaME(J2ME):Java 2 Platform Micro Edition,Java 平台微型版,次要针对挪动平台开发。
2005 年 6 月,JavaOne 大会召开,公布 Java SE 6 版本,并正式将 Java 版本名称中的数字“2”勾销。从此 J2EE 更名为 Java EE,J2SE 更名为 Java SE,J2ME 更名为 Java ME。所以如果有谁再跟你说什么“J2SE、J2EE、J2ME”,你就送他一个黑人问号脸,“你到底是有多 out 才会说出这么老古董的话”?
技术体系尽管在下面的大节中曾经给大家说过,Sun 把 Java 分成了 JavaSE、JavaEE、JavaME 共 3 个平台体系,但我还是想把这个知识点再跟大家强调一下,因为有太多的小白已经问过我:我到底是要学 JavaSE,还是 JavaEE?JavaSE 和 JavaEE 到底是什么关系?…….“所以在咱们正式开始学习 Java 之前,还是心愿可能把各位心中的这些纳闷都给你解决掉。
为了搞清楚 JavaSE、JavaEE、JavaME 之间的关系,给大家绘制了上面这张图片
从上图中你应该能够看进去,JavaEE 的“范畴是最大的“,这示意什么意思呢?这其实次要是说,JavaEE 这个分类里蕴含的 API(利用程序接口,咱们能够临时了解为 Java 提供的各种”工具“)最多,而 JavaSE 则齐全蕴含在 JavaEE 外面,JavaME 中有一小部分的 API 和 JavaSE 是重合的。
由此咱们能够得出一个论断,作为初学者,咱们须要先学习 JavaSE 里提供的各种罕用 API,等把 JavaSE 学完了就有”资格“去学习 JavaEE 或 JavaME 了!也就是说,JavaSE 是 Java 的必备入门根底,初学者必定要先学习 JavaSE。这就好比你要学习西医技术,有针灸、推拿、中药等几个方向能够供你抉择。但无论你要抉择哪个方向,你都得先学习《西医基础理论》这门课,学完了这个能力有资格去学习其余具体的某个方向。
当初你晓得 JavaSE 与 JavaEE 的关系了吗?但有的小伙伴还会好奇,要不要学习 JavaME 呢?通知你,这个就算了!JavaME 原本是 Sun 用于开发手机等设施的技术平台,但起初 Android、iOS 的异军突起,当初简直就没人应用 JavaME 了,所以大家晓得有这么一个货色就能够了。咱们学习完 JavaSE 之后,还不具备企业级开发的能力,接下来要学习 JavaEE 里的各种 API。所以咱们学习 Java 的正确路线,就是先学 JavaSE,再学 JavaEE,而的《从零开始学 Java》系列文章,次要就是解说 JavaSE 哦!其实对于初学者来说,你大可不必过于纠结这些没什么实用价值的概念。等学到前面,你自然而然就会明确它们之间的具体区别,咱们只需对其有个大抵的理解,把精力放在最外围的问题上即可。
Java 个性对于 Java,咱们还须要理解一下 Java 的一些劣势和个性,有时候面试官会贱兮兮的问你:你对 Java 理解多少?你为什么学习 Java 而不是其余语言?Java 有哪些劣势 …… 针对这样的问题,咱们就简略答复一下 Java 的外围个性即可。应用简略:Java 的语法与 C 和 C ++ 很靠近,能够不便大量 C 系程序员疾速转向 Java。但又抛弃了 C ++ 中那些特地简单难用的个性,如操作符重载、多继承、主动强制类型转换等。
另外 Java 不反对指针,而是反对援用,并提供了主动调配和 GC 垃圾回收机制,程序员不用关怀内存治理。面向对象:Java 提供了类、接口和单继承等面向对象的个性,并反对类与接口之间的实现机制,全面反对动静绑定。能够说,Java 语言是第一个十分纯正的面向对象的程序设计语言。强壮平安:Java 具备强类型机制、异样解决、GC 垃圾主动收集、安全检查机制、抛弃指针等个性,保障了 Java 程序的健壮性。并且 Java 提供了平安机制来避免恶意代码的攻打,能够通过 ClassLoader 加载器进行字节代码查看,通过 SecurityManager 平安管理机制设置平安哨兵,保障了 Java 程序的安全性。
跨平台 / 可移植性:Java 基于 JVM 虚拟机机制,.java 文件会被 JVM 编译成适宜不同平台的.class 字节码文件,实现了”一次编写,处处运行“的跨平台个性。正因为这个个性,也使得 Java 代码能够轻松实现不同平台间的移植。开源 / 收费:在 2006 年的 JavaOne 大会上,Sun 公司发表要将 Java 开源,之后陆续将 JDK 的各个局部在 GPL v2(GNU General Public License v2)协定下公开了源码(即 OpenJDK)。除了极少量的产权代码外,OpenJDK 简直包含了 Sun JDK 的全副代码,两者的代码基本上齐全一样。目前 JDK 8 及以前的版本都是完全免费的,JDK 9 之后 Oracle 发表会对企业进行免费,然而企业能够收费应用 Open JDK。高性能:Java 是介于编译型与解释型之间的语言,但更偏差于解释型,执行性能比 C 语言更高效。而且当初 Java 的编译器不断更新,性能曾经与 C ++ 相似了。
反对网络和多线程:Java 反对 Internet 网络开发,提供了用于网络编程的类库,比方 URL、URLConnection、Socket、ServerSocket、RMI(近程办法激活)等,并且反对多线程和并发同步机制。二. Java 发展史对一个行将开始学习 Java 的小白来说,咱们还是有必要适当地理解一下 Java 的发展史的,看看这些年 Java 都经验了哪些历史改革吧。1995 年 5 月 23 日,Java 诞生;1996 年 1 月,JDK 1.0 诞生;1997 年 4 月 2 日,Java One 会议召开,参与者超过万人,突破过后寰球同类会议规模纪录;1997 年 9 月,Java Developer Connection 社区成员超十万人;1998 年 2 月,JDK 1.1 被下载超过 2,000,000 次;1998 年 12 月 8 日,JAVA2 企业平台 J2EE 公布;1999 年 6 月,SUN 公布 Java 的三个版本:JavaSE、JavaEE、JavaME;2000 年 5 月 8 日,JDK 1.3 公布;2000 年 5 月 29 日,JDK 1.4 公布;2001 年 6 月 5 日,NOKIA 发表到 2003 年将会发售超 1 亿部反对 Java 的手机;2002 年 2 月 26 日,J2SE 1.4 公布,Java 计算能力有了大幅晋升;2004 年 9 月 30 日,J2SE 1.5 公布,成为 Java 语言发展史上的又一里程碑。为了示意该版本的重要性,J2SE 1.5 更名为 Java SE 5.0;2005 年 6 月,Java One 大会召开,Sun 公司公布 Java SE 6。此时 Java 各种版本曾经全副更名,勾销了其中的数字 “2”:J2EE 更名为 Java EE,J2SE 更名为 Java SE,J2ME 更名为 Java ME;2006 年 12 月,Sun 公司公布 JRE 6.0;2009 年 04 月 20 日,甲骨文以 74 亿美元收买 Sun,获得了 Java 版权;2011 年 7 月 28 日,Oracle 公布 Java 7.0 正式版;2014 年 3 月 18 日,Oracle 公布 Java SE 8.0(目前最支流版本);2017 年 9 月 21 日,Oracle 公布 Java SE 9.0;2018 年 3 月 21 日,Oracle 公布 Java SE 10.0;2018 年 9 月 25 日,Oracle 公布 Java SE 11;2019 年 3 月 20 日,Oracle 公布 Java SE 12;2019 年 9 月,Oracle 公布 Java SE 13;2020 年 3 月,Oracle 公布 Java SE 14;2020 年 9 月,Oracle 公布 Java SE 14;2021 年 3 月,Oracle 公布 Java SE 16;2021 年 9 月,Oracle 公布 Java SE 17;2022 年 3 月,Oracle 公布 Java SE 18;2022 年 9 月,Oracle 公布 Java SE 19;……Java 持续在大步后退 …… 当然,对于以上历史,大家理解即可,不必去记这些货色。三. Java 版本 (重点) 在下面的章节介绍中,给大家提到了 Java 的很多版本,并且这些不同的版本所具备的性能也不尽相同。所以就有小白来问了,咱们学习 Java 时到底该抉择哪个版本呢?是越新越好吗?认为很有必要就这个问题给大家解释一下。在 Java 的倒退过程中,有很多不同的表述形式,有时候会给初学者造成一些误会。但请你记住,所谓的 Java 版本,其实就是指 JDK 的版本,两者是一回事!1. JDK 版本 Oracle 把 JDK 分成了两种保护状况,即短期反对版本和长期反对版本,咱们先来看
看 Oracle 官网公布的 JDK 路线图:
对于短期反对版本 (non-LTS) 而言,Oracle 只会提供 6 个月的反对保护;而对于长期反对版本(LTS),则提供 8 年的反对保护。所以依据这一布局,Oracle 每隔 6 个月,就会公布一个大版本,每个季度则公布一个两头个性版本。
另外 Oracle 还承诺,新的 JDK 公布周期会严格遵循工夫点,将于每年的 3 月份和 9 月份公布,两头不会跳票。当初失常状况下,每隔 6 个月就会有一个短期保护版本 (non-LTS) 公布进去,比方 JDK 9、10、12、13、14、15、16;而后每隔 3 年,就会公布一款失去 8 年长期反对保护的 JDK 版本,比方 JDK 8、11、17。所以小伙伴们,其实你没必要下载应用 JDK9/10/12 等 non-LTS 版本,应该应用 JDK 8、11、17 这样的 LTS 版本。但目前绝大多数支流企业应用的版本是 JKD 8,但不会应用最新的版本,而且 Oracle 发表从 JDK 9.0 之后开始针对企业免费,所以最新版的 JDK 应用状况待议。
版本抉择既然 JDK 版本有这么多,作为小白,你到底该抉择哪个版本的 JDK 呢?是间接学习 JDK 18 还是 19?或者等几个月学习 JDK 21?通知你,如果你是一个老手小白,其实没必要谋求学习最新的 JDK!首先每一个 JDK 版本推出时,都存在着很多未知的 bug,所以企业在开发时,都会抉择最稳固的版本!当初支流的企业级利用都在应用 JDK 8.0 正式版,并且 JDK 8.0 及之前版本都是收费的,而 JDK 9.0 当前则开始免费(针对企业免费,非集体)。
所以公司思考到稳定性和费用等问题,都在应用 JDK 8.0,这才是支流!另外对初学者来说,JDK 的新个性其实对小白来说意义并不大。这些新个性个别是针对性能有较大晋升,但你作为一个小白,连最根本的用法都不会呢,当初去谋求这些新个性没必要。
等你把 JavaSE 学完之后,当前本人再针对性地晋升即可。请先把精力放在最外围的中央,要不然根底还没搞扎实,却二心贪多求快,很容易呈现”海市蜃楼“的情况。另外有些培训机构,声称会重点解说 JDK 12、JDK 10、JDK 9 等版本的内容,不过是哗众取宠。这些版本官网都进行保护和下载了,你讲这些有啥用。所以,为了贴合最支流的企业要求,的本套教程案例都是基于 JDK 8 来进行解说的!如果你的 JDK 版本比我的版本高,当然是能够间接兼容运行我的案例的,不必放心!