Java跨平台机制 + 环境搭建

Java跨平台机制  + 环境搭建

知识回顾

 

  上一节课讲的知识其实都是些历史的背景,它对后面的开发没有什么太大的影响。作为知识的完整性,建议大家还是把这一块看一下。当然了,如果你不愿意在这里看,你也可以去网上查一下,了解几个点就可以了,所以大家简单的看一下。

  对于整个的历史呢,我们需要了解的第一个就是这个Java语言的创始人,如果你连这个人都不了解,我们就别谈如何学习这门Java语言了,所以这个创始人呢叫做James-Gosling。James-Gosling他是一个加拿大出生的人,1955年到现在应该60几岁了,大概这样的一个人。

  那么第二个呢你需要了解一下这个Java语言创始的公司,最早的公司呢它是叫SUN公司,注意一下这个SUN的由来,很多人将SUN翻译成太阳,也有人用中文翻译成“孙”,那肯定就不对了。那么SUN的全称是Standford  University Network,SUN就是这三个词的缩写。但是到后来注册的时候,那个公司的商标叫做SUN Microsystems,这是公司后来的名字。所以注意一下他公司名字的缩写和由来就可以了。

  第三个呢我们需要了解一下Java语言的一些重大的事件,只要记几个时间点或记几个事情就可以了,这里也只是简单的记录了一下,如果上网的话可以查到更多的资料。首先1995年的时候,Java语言就正式发布了,这是它的一个起始时间;那么在1996年的时候,才真正的提出了一个Java开发的一个工具包,正式的发布了一个可以下载的JDK工具包,这个工具包是JDK1.0版本。JDK这三个字母的全称是Java Development Kit,回头再了解什么是JDK,如何使用JDK安装包。96年的时候才真正供大家下载,所以这个时候标志着Java语言成为一门独立的语言可以供大家去使用了。再往后,97年的时候就开始更新了,97年的时候是JDK1.1,到1999年的时候,这是一个重要的时间,99年的 时候他发布了叫第二代的Java平台,并且在这个时候,细化了三个不同的版本,所以他的第二个平台简称为Java2,细化的这三个版本就是我们后来熟知的那三个,一个我们叫做基本版,或标准版,Standard Edition,简写成J2SE;第二个叫企业版,Enterprise Edition ,简写成J2EE;第三个叫微型版,Micro Edition,简写成J2ME;再往下,2000年到2002年这三年之间相继更新了JAVA   JDK1.3版本和1.4版本,可能在中间提升了很多性能上的东西,在往下有一个很重要的时间点,是2004年的时候,04年的时候出现了一个JDK1.5版本,这个版本他在中间添加了很多新的特性,这些特性我们现在都还在用,比如说泛型、枚举、增强for循环等等。为了表示这是一个里程碑式的革新,以及这个版本的重要性,所以当时这个JDK更新了一个名字,改成叫Java5。即1.5变成5.0现在是。在2005年的时候,他发布了一个Java6版本的,Java6版本的我们认为是执行最长一段时间的,最经典的,保留得也最久,所以这个版本连续用了得有4~5年的时间,因为它很稳定,那个时候Java也很经典。再往下,出现了一个重要的时间,就是2009年的时候,09年的时候,出现了一个新的公司,是Oracle公司,Oracle公司它以74亿¥将SUN公司并购了,所以从这往后开始呢,Java语言的归属呢就不是SUN公司所有了,它变成了Oracle公司,再往后的话,基本上每隔3年的时间才更新一个版本,2011年的时候更新到1.7,2014年的时候更新到1.8,这些可以上官网去看,当然这几个年代其实大家也不必太细的去记,有这样一个印象就可以了,要知道这整个发展的由来,以及跟它的几个重要的事件就行。

  最后还需了解一下这个Java语言的特点,因为,我们说到,在这整个历史的环境之下,我们知道Java语言在不断的更新,它自己慢慢的强大,但之所以现在这么火爆,这么多人去学习Java,而且很多大量的公司的开发都用到了Java,这是为什么?不仅仅是它这个公司整个的历史背景,包括Oracle公司是世界第二大互联网公司,而且Oracle公司首席执行官拉里.埃里森大家都可以去了解一下。其实这些历史背景呢可以印证这个语言的发展,当然它不足以成为这个语言现在是 世界上排行榜上最好的第一位的,因为它自己还有很多的特性。由于这些特点,这个语言才变得这么的强大,然后很多人去用它,所以最后需要了解一下Java语言的特点。

  它的特点我们总结了几个,首先第一个我们叫跨平台性,Java语言最早的时候是用来做移动端方面的,智能家居什么的,芯片里边的东西,所以那个时候的平台指的是不同厂商生成出来的芯片;但后来他们没有想到的是,这个语言它竟然在企业级的开发当中用得更多一点,所以J2ME微型版现在并不怎么用了,更重要的是企业级的开发,所以现在我们用Java做的都是互联网相关的开发,所以它的这个平台就不是指芯片层面的了,现在的这个平台应该指的是操作系统,能够一套Java语言在不同的操作系统上使用。第二个特性叫做面向对象的编程思想,编程思想跟写法是没什么关系的,这个思想的养成是需要循循渐进的,才能完成,需要讲到类和对象的时候才能细致的去了解。但你要知道Java语言他是第一个提出叫做完全面向对象编程的,所以它的任何一个元素都可以当作一个对象来看待。第三个特性叫简单性,这个简单性并不是说Java代码的简单,不是指写法层面上的简单,它指的是特性层面上的,比如之前说的Java沿用了C++当中的很多优秀的语法结构,摒弃了C++当中很多不好的冗余的东西。然后还有一个我们叫健壮性也叫鲁棒性,这个指的是Java语言当中有很多机制可以帮助我们控制程序执行得过程。比如程序写对了好用,但出了一点点小错误后面马上就不能执行了,不会影响后续的开发。所以在这一块有两个机制很重要,一个叫垃圾回收机制,还有一个叫异常处理机制,有了很多这样的机制它就可以帮你处理很多小的问题,不会因为你这一行代码产生了异常影响后续的开发。就这个道理。再往下,我们说Java语言它是一个多线程并发的这样一个效果,多线程有了以后呢,可以同一个时间多个线程并发的去完成事情,所以它提高了性能,当然它也降低了很多安全的问题,所以在操作多线程的时候,会了解到多线程安全性的问题。最后一个Java在14年15年的时候又走了一个比较快速的发展时期,这个时期跟大数据开发相关了,java跟大数据底层是有很多交互的。

 



 

Java跨平台机制  + 环境搭建

 

  上一节我们讲到Java语言有很多特性,Java语言有一个特性,叫跨平台性,它很重要,这个特性是怎么实现的呢?在讲它之前,我们先不着急讲知识,先来感受一下现实生活中的例子。如果我们这个东西本来没见过,我拿一个没见过的东西,再跟你说一个你不懂的东西,你就很难理解了,所以在讲这个知识点之前,可以运用现实生活中的例子帮助大家来理解这个事情,我觉得大家更容易理解。所以我们先说一个现实生活中的小例子,说完之后我们在回来印证跨平台机制,看看跨平台机制是不是跟我们说的小例子差不多。

  我们说Java语言它是一个叫做高级计算机编程语言,那么如果大家想想,什么是语言啊?这个语言我觉得它应该就是平时交流或者沟通的一种方式呗,一种规范,一种定义好的一个规范,比如老师讲课,拿什么跟学生交流啊?母语吧,我们都是中国人,我们之间的交流肯定是母语吧,中文,所以我说的话你们都能听懂,关键是中文的话,我们从小到大学习语言的规则都是一样的,我们写几个字,这个字代表什么意思,那个字代表什么意思,所以不光是计算机有语言,我们正常的交流,说的中文、英文都是语言。那么大家想想,中文并不是全球通用的,我们之间的交流那肯定没有问题,但有没有可能会产生这样一种情况呢?比如你跟老外进行交流。假如我今天写完这篇文章之后想去旅游,写文章很辛苦然后我想去旅行,去旅行去哪儿呢?我是中国人,只会说中文,但我去旅行,那就指不定在哪儿呢,比如说我想去一个稍微远点的地方,出个国,假如我想去日本,这离得比较近,可以去看看樱花、看看富士山、去北海道找个小酒馆喝点清酒,想想都很浪漫,去东京,大都市。可关键问题是,我是个中国人,我说的是中文,我去日本,人家国家的语言叫日语,这样的话就产生一个问题,去旅行的话,抱团就没意思,我想自己去,那语言上还不通,但我当然还是想一个人去,自己背个包,放飞梦想嘛,然后就带来一个问题,我想去日本,到这儿了,发现语言不通,这怎么交流啊?怎么办呢?两种不同的语言代表两种不同的规范,那我统一一下规范怎么样,比如我学日语行不行?可以吧,我可以学习外语,然后出去。但是想想,我 今天写完文章,明天我就想去旅行,然后我想学日语,达到能够交流的程度,我觉得这个是短时间内做不到的吧,假如像我们从小就学习英文,学到大学毕业,到工作当中还在用,可是真正能够做到跟说母语一样的,很少,都是需要很长一段时间的锻炼才可以达到这样的要求。当然了,我明天就去完,今天现学那肯定来不及了,所以我学习日语那不行了。那同样的道理,我们让日本人学习中文是不是也不太好?而且,我去日本看樱花,看富士山,去北海道,很多地方,总不能让每个地方的所有日本人都学习中文吧,而且说的跟我一样溜。我觉得这些东西不是做不到,它能做到,只是它需要耗费很长的时间和精力,所以我觉得这个过程太麻烦了。有没有什么好办法?那当然我可以拿出手机,打开有道词典进行翻译嘛,当然我用手机的同时,也可以找一个翻译呀,所以我觉得交流最快的方式应该是找一个翻译,这个翻译需要会什么呢?这个翻译她需要会中文,会日语。这样找个翻译跟我一起随行就可以了,这样我就去日本玩了一段时间,很开心,但我不能总玩吧,旅游完回来之后得工作吧,所以我又回来了。回来之后我又写了一个星期的文章,然后感觉不行,受不了这种世俗的工作,我需要陶冶情操,放飞一下我的梦想,这次我想去一个远一点的地方,比如,我这次去美国,同样的道理,美国人说什么呢?他们也有自己的语言,他们说美式英语,同样遇到一样的问题,我独自一个人去玩,就不行,没办法沟通交流。那怎么办呢?那很容易嘛,可以找个美女翻译,让美女跟着我随行,这个翻译她只要会中文,会英文就可以了。然后就可以去看看金门大桥,去看看自由女神像,看看白宫长什么样子。总之呢,不管是去日本还是去美国,看了很多个地方,就是需要这么一个翻译。当然,同样的,我玩了一段时间,不能总玩吧,得回来写文章吧,所以我又写了三天文章,上回写了一个星期就累了,这回写了三天就不行了,受不了这种世俗的工作,我又想去旅行,这次去哪儿呢?去印度尼西亚,这个地方好,因为它是这个,我们都知道Java语言的名字就是从印度尼西亚的爪哇岛由来的。所以这次我专门去印度尼西亚的爪哇岛看看,去看看那个麝香猫到底长什么样子,看看猫屎咖啡到底有多贵,喝着纯正的猫屎咖啡,躺在海边上,吹着海风,晒晒太阳,看着海边的帅哥美女,想想都美。然后大家想想,印尼这个地方的人说什么呢?他们官方语言叫印尼语,所以一样的道理,去印尼当地,当地人说的话我也不懂啊,所以我得找一个翻译,这个翻译需要会中文,印尼语。于是我又玩了一个月,很开心,回来以后,又写了一天的文章,哎呀!受不了这种世俗的工作,我还要去放飞自己的梦想,我想去旅行。

  就这样,用了生活中的一个小例子,大概的意思就是这样,讲一个中国人,他要去旅行,去到不同的三个国家,当然,到了三个国家但是语言又不通,所以可能需要三个不同的翻译。也就是说,我就会中文,但我好像能够跟其他三个不同国家的人进行交流,这就很牛了,我只会一门语言就可以跟他们三个国家的人交流,什么原因呢?是我中文很牛吗?不是,大家知道,其实是中间有不同的人在替我做翻译的过程,所以中间的这个人很牛。然后我们可以这么理解,可以理解为我们现在学习的Java语言就是中文,现在我们只会这个。我们说Java语言很强大,但它自己不行,它是怎么跟其他交互的呢?我们可以认为中文这个语言是Java,其他三个语言是不同版本的操作系统,比如说,日语可以认为是Windows操作系统,英语可以认为是Linux操作系统,印尼语可以认为是MacOS操作系统。所以可以想想,我们学的语言就java这一个,但是这个语言的话,它怎么强大到可以跟不同的版本进行交互呢?跨平台就这么来的,中间有一个翻译嘛。所以跨平台,跨的是操作系统。它真的是Java语言这么牛嘛?不是它很牛,是中间这个翻译很牛。那么翻译很牛,那这个翻译到底是谁呢?这个翻译能不能跨平台呢?看起来就不行了。所以跟大家讲,这个翻译是谁呢?这个翻译他是JVM(Java虚拟机)。所以Java虚拟机呢就可以理解为中间的这个翻译,它可以帮我们将Java的源文件翻译成计算机认识的字节码文件,这么一个过程。那么翻译它能不能跨平台呢?翻译有三个,所以看起来它是不跨平台的,所以翻译就需要找到你当前电脑的对应的那个版本才可以。JVM(Java虚拟机)全称是这样来的 ,叫Java  Virtual Machine;Java虚拟机它会做什么呢?它会在内存中开辟一块空间,帮我们将源文件编译成计算机能识别的字节码文件。

  然后我问一下,我们这个Java他是一种计算机高级的编程语言,我们首先说了这个语言是一种规范,是一种交流沟通的方式,然后大家想,什么是计算机语言呢?就是我们不是人和人说的话。是我们人和计算机交流的一种方式,然后这种方式呢定义好了规范,我们这么写,计算机这么读,它就认识了,所以不论学Java也好,c++也好,PHP也好,等等的,所有的语言里边都有一种编程的规范,那个规范是固定的,关键字这么写它就认识。那么编程语言什么叫高级的呢?这个高级又是什么呢?大家想,有高级那是不得就有低级的,那么这个高和低是怎么分的呢?关键是,所以需要解释一下,大家想想,我们写的这些文字计算机到底认不认识呢?你看我这篇文章,写了这么多字儿,计算机它认识吗?你会发现,它不认识,它很傻,计算机它只认识两个数,0和1,所以计算机不认识2,为什么没有2呢?规定好的,谁规定好的呢?设计计算机的人规定好的,那他为什么是0和1没有2呢?我们想,计算机它是怎么运行的呢?比如我们买的笔记本电脑,它就是一个能看能摸到的东西,有的人感兴趣就喜欢拆电脑,拆电脑就会发现计算机里边有很多的硬件,所以计算机能运行的最根本的原因是那些个硬件设备的组成。如果是硬件的组成的话,那么那个电路板它是怎么工作的呀?就两种情况,一种是通电,一种是不通电。没有了,没有通一半电的形式。所以计算机工作就是利用了这种通电和不通电的这种组合方式来表示含义的,有很多通电和不通电的规则来表示含义的。这种方式就很像我们古代的那种猿人,在山洞里面,那个时候没有文字,古代的猿人只能通过系绳子的方式记录每天发生的事情。再比如电视剧里的摩斯密码。所以很多东西不一定得通过文字来表示,而计算机也是一样的道理,它最后工作的是个硬件,硬件的电路板只能依靠通电或不通电的方式,但是它有很多通电或不通电的规则来记录着一些信息的。这样的话,计算机记录的,我们人如果规定好了,这样的话,两端不就认识了吗?计算机用很多个0和1来记录这样的信息,计算机它认识的语言就是0和1,而我们写的一个英文单词它是不认识的,大家想想,编程语言写出来的一些东西不就是一些英文单词吗?我们写的这些英文计算机不认识,计算机写的那一串串的数,程序也不认识。所以高级跟低级就是这么分的,就是越贴近我们能识别的语言越高级。也许你会说,你英语也不好,英文你也看不懂,但英语再怎么看不懂,总比给你一串数要强吧?一串数代表什么你还得跟人解释,很麻烦,所以,越贴近我们能识别的语言越高级。越贴近计算机认识的底层的0和1越低级。当然了,计算机是老外开发的,所以编程语言是英文,如果是中国人开发的,也许编程语言就变成中文的了呢,当然现在也可能有。接下来,我们要了解我们编写的程序是存储在哪里的?程序存储在哪里呢?程序呢说白了就是一堆英文,一堆的public,一堆的for,一堆的class,关键是,这些英文存在哪儿啊?你往哪里写啊?我们想想,我们写的英文,这些英文其实是程序,但是这个英文呢,它需要存储在一个地方,这个地方是在哪儿呢?肯定是电脑里存着吧?是文件。所以我们写完的这个程序呢它其实本质上是一个文件,文件打开了它里面的内容是一堆的英文字,这堆字电脑一读它就懂了。接下来问题又来了。我们写完的程序计算机不认识,它不认识怎么办?所以我们中间需要一个编译的过程,编译是谁帮你完成的呢?JVM(Java虚拟机)。所以虚拟机很重要,虚拟机充当一个翻译的过程。它会将我们写好的源文件编译成计算机能够识别的字节码文件。最终有两个文件,一个叫源文件一个叫字节码文件。那问题来了,这两个文件又存在哪儿?文件在哪?在电脑上?那就地方多了。所以需要了解一下计算机的硬件组成。计算机的组成有什么呢?首先要知道什么是硬件,简单理解,计算机由硬件和软件组成,硬件和软件其实很容易区分,能摸得到的东西就是硬件,摸不到的东西就是软件,操作系统是摸不到的,所以操作系统是软件,它是系统级别的软件,我们开发的软件是放在系统之上使用的,叫应用软件。说到计算机的硬件组成,有很多,首先是主板,其次还有CPU、声卡、显卡、网卡、内存、硬盘、电源。但显示器、鼠标、键盘这些不算,这些属于外部设备。这么多硬件,但这里主要讲的是内存和硬盘。内存跟硬盘它们是干嘛的呢?他们俩看起来都是存储的,他们俩有本质的区别,硬盘存储量很大,内存的存储量很小,内存是条形的,硬盘是矩形的,内存只有4G/8G/16G比较小,是属于芯片;而硬盘有1T的,比较大,是通过扇区运行的。内存是临时执行使用的,而硬盘是永久性保存的。所以内存和硬盘有一个最主要的地方,是永久和临时的问题。首先我们写的这个语言,写出来都是英文,这个英文存储需要创建一个源文件,将英文写在一个文件里,然后这个文件是存在硬盘上的,永久性保存起来的。而源文件计算机还不认识,所以需要一个Java虚拟机帮我们翻译,将我们写的这个源文件翻译成一个字节码 文件,而这两个文件都是文件,并不会丢掉,所以这两个文件都存在硬盘上,硬盘上有一个文件叫字节码文件,是计算机可以识别的,那么计算机想要运行这个字节码文件在哪里运行呢?在内存里。所以为什么虚拟机可以帮我们开辟内存呢?开辟内存是为了执行的时候用的,当然了,虚拟机开辟了内存之后呢,得先将源文件编译成字节码文件,然后将字节码文件拿过来才可以用。所以虚拟机很重要。

  虚拟机充当一个翻译以后,将一个源文件翻译成一个字节码文件。这两个文件都在硬盘上,文件想要运行必须要放在内存里运行。硬盘上的存储元素都叫文件,字节码文件是文件,源文件是文件,记事本也是文件,那么在硬盘上的文件是不是有不同的格式?如:.txt  .doc  .ppt  .xls  .mp4  .mp3  .exe .rar。所以在硬盘上,所有的元素都是以文件的形式存在的,但是由于文件不同的格式,所以它采用了不同的后缀名来区分不同的格式。而我们的源文件和字节吗文件的后缀名肯定不是上面列举的这些。我们写完的java源文件的后缀名是.java的,翻译出来的字节码文件是.class的。问题来了,假如我有这两个文件,源文件是我自己写出来的,字节码文件是翻译出来的,字节码文件是给计算机去读取的,假如我用优盘拷贝一份字节码文件给你,你可以打开吗?假如你刚买了一台全新的电脑,我用优盘拷贝一份.mp3文件在你的新电脑上,你可以打开吗?不能,因为你的文件需要不同形态的运行环境。打开MP4文件不是随便可以打开的,你要下载一个音乐播放器才能打开。电脑中文件的每一种不同的格式有了区分之后,打开的方式就不一样了,所以每个格式的文件都要有一个运行环境的支持才能打开。我们写的代码也不例外,那么我们写的源码用什么来支持呢?我们写的源码用文本文档打开就可以了,但字节码文件就不行了,字节码文件不是给我们看的,是给计算机看的,当然,给计算机看的也同样需要一个运行环境才可以。源文件通过虚拟机额翻译成字节码文件,字节码文件出来了,但是要打开字节码文件需要一个运行环境的支持才可以打开。所以仅仅只有一个虚拟机是不够的,它还需要一个运行环境的支持。那么字节码文件的运行环境是什么呢?它叫JRE。JRE全称是Java  Runtime  Environment 运行环境,运行环境就好比要运行.MP3需要一个音乐播放器是一样的道理。有了运行环境之后,这个字节码文件才可以真正放在内存里头去运行它。否则的话根本打不开。现在出现了两个J开头的东西,一个是JVM一个是JRE,这两个东西有什么关系没有?他们俩是包含关系, JRE里边包含JVM。然后,我们就会想,既然JRE里面包含JVM,那么我们在电脑里装JRE就可以了,因为它里面有JVM了嘛。

  那么再想想,我的电脑里有了运行环境,我就可以运行别人写好的程序了。但是问题又来了,我们是学习Java,是开发人员,不是软件的使用者,是开发者。我们不是去运行别人写好的程序,而是从无到有的去创造,交给别人去使用。所以我们还需要一个东西,它叫做JDK。所以JDK就是这么来的,JDK全称是Java Development  Kit 开发工具包。既然是开发工具包就包含了许多开发时需要用到的工具。JDK出来了之后,想想JDK和JRE又是什么关系呢?包含关系。JDK里面是包含JRE的,JRE里面包含JVM。所以我们做开发第一件事是什么?那就是在我们当前电脑上搭建开发环境,搭建环境指的是安装JDK。因为有了这个工具,我们就可以进行开发了。

  想要做Java开发,需要搭建环境,搭建环境就是在我们的电脑中安装JDK。安装JDK就需要JDK的安装包,安装程序去哪里下载呢?去官网(https://www.oracle.com/java/technologies/javase-downloads.html),要正版。下载之后就开始安装JDK,没装好,则可以卸载,卸载的时候一定要卸载干净,一般在控制面板中的程序中卸载,或下载QQ管家等工具进行卸载。

 

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » Java跨平台机制 + 环境搭建