既然各位小伙伴当初曾经决定要学习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版本比我的版本高,当然是能够间接兼容运行我的案例的,不必放心!