全文大约【5000】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!文章带有丰富案例及配图,只为让你更好地理解和运用文中的技术概念,给你带来具有足够的思想启迪......
------------------------------前戏已做完,精彩即开始----------------------------既然各位小伙伴现在已经决定要学习Java了,那首先得对Java有基本的了解吧,所以接下来壹哥先用一篇文章,来给大家介绍一下Java到底是个啥。
友情提示:大家要记住,无论我们学习任何技术,都要知道这个技术是什么、干嘛的、怎么用、为什么这么用,以及使用时出现了问题该怎么解决!一. Java简介1. 起源既然各位打算以后要靠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语言的起源由来,现在你对它的历史知道了吗?。
2. 概念(掌握)通过上面的介绍,相信各位已经对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才会说出这么老古董的话”?3. 技术体系虽然壹哥在上面的小节中已经给大家说过,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哦!。
其实对于初学者来说,你大可不必过于纠结这些没什么实用价值的概念等学到后面,你自然而然就会明白它们之间的具体区别,我们只需对其有个大致的了解,把精力放在最核心的问题上即可4. 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使用情况待议。
2. 版本选择既然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版本比我的版本高,当然是可以直接兼容运行我的案例的,不用担心!
四、今日作业1. 第一题:Java他爹是谁?A|乔布斯 B|勒布朗·詹姆斯 C|詹姆斯·高斯林2. 第二题:Java现在属属于哪个公司?A|乔布斯 B|勒布朗·詹姆斯 C|詹姆斯·高斯林3. 第三题:Java分为哪几个平台体系?有什么区别?请在评论区写出你的答案哦!
3. 第四题:目前Java的长期维护版本有哪些?请在评论区写出你的答案,并说出你希望学习的JDK版本吧【下篇预告】熟悉Java的运行机制和JVM虚拟机工作原理,搭建出学习Java时的必备环境---《JDK安装及环境变量配置》。
亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。