幸有一事,生死可许

第一章: Hello World(1)


每一次对未知的开拓,都那么让人心潮澎湃,这轻轻的一句话,是冲锋的号角,又是胜利的宣告,那么深情,又那么骄傲:嗨,我来了......


情怀篇


有人说,做编程的第一个程序都在写Hello World,也不过是一种国际惯例,我倒有些不以为然。

编程的出现,可以说推开了一个新的空间之门,这简单的话语像极了充满魔力的咒语,哪怕轻吟低颂,都动荡着那个未知的次元,这开辟鸿蒙的魔咒,又岂是那般刻板,这般枯燥。

我喜欢长久的重复着这最初的声音,却百思不得其解,如何它沦落至斯,一次次诵出,却被一次次遗忘,思量许久,终究还是没有定论,大抵是我们习惯了这全新规则和秩序的存在,反而少了那份对未知的渴求和敬畏,亦或许只是我们太轻佻,迷离的双眼尚未看清这山,却说逛遍了天下。

其实像大多数程序员一样,我早已记不清第一个程序运行时的感受了,想来不是兴奋和激动,大概也是解脱般的舒畅。

只是每每想起来,总感觉有些真的不得不说。

我总能轻车熟路的敲写代码,顺畅的几若思路在指尖跳跃,像精灵轻舞出的美妙音符,却在搭建框架时屡屡受挫,究竟如何做,又究竟为何做。

总记得那儿美,却无奈总是找不到归去的路,那感觉,涩的很。

许是量变引起质变的缘故,也可能只是我关注的比较多,慢慢的我倒真懂了些,那么丁点,可那么充实。


技术篇


我们先来回忆下,写一个最原始的java程序的基本步骤:

第一步:下载安装JDK;

第二步:配置环境变量;

第三步:测试环境变量是否配置成功;

第四步:编写java源代码;

第五步:运行java程序;

第六步:查看运行结果;

其实脉络也算是清晰,几遍下来估计都能有模有样,倒是有几个疑问觉得颇有意思。这里来简单罗列下:

1、在安装JDK的同时为什么会同时安装了JRE?

2、为什么要配置环境变量,又为什么如此配置?

3、java程序运行的原理究竟是什么呢?

其实这应该算是一个问题吧,就是这一章的核心问题,也是最后一个问题:一个java程序运行的原理究竟是什么?至于这样分成三个问题来思考,只是感觉会比较条理些吧,而且事实上可能还有更多的问题应该来思考:

比如在解答第一个问题之前肯定要弄明白:JDK/JRE/JVM分别是什么?

又比如解答第二个问题之前也肯定要搞清楚:java究竟是什么类型的编程语言?它又是怎么编译的,怎么解释的呢?

第一个问题:关于JDK/JRE/JVM

这个问题要从几个概念说起:JDK/JRE/JVM。

JDK全称Java Development Kit,翻译过来便是java的开发工具包;JRE全称Java Runtime Environment,也就是java程序的运行时环境;而JVM则是Java Virtual Machine,在前面还没有提到过,却必须要引起重视的java虚拟机,在这里把它顺便加入进来,是为了更具有对比性。

没办法,官方语言总是那么严谨又那么枯燥,其实已经尽力的形象了,只是接受起来还略有些障碍。我特别喜欢臧萌(《JAVA入门1.2.3-一个老鸟的java心得》的作者)曾经对这些名词的解释:JDK是鲁滨逊漂流到的荒岛,一个他可以生存的世界,哪怕只有他一个人,仍然有着他可以存活的外界条件:水、阳光、食物等等、但是他没有相应的对JRE进行类比,我就简单描绘下自己的理解:

其实JDK可以说是这个地球,而JRE才是这个孤立的荒岛,荒岛虽然孤立,但是仍然在世界中,是这个世界造就了它的存在,如果没有外部的大世界,是不会存在这个岛的,甚至空气和水都是外界提供给它的,而JRE则是他当前正在赖以生存的环境,也就是这个岛了,而且如果他想要生活,不仅需要外界提供的阳光和水,这个岛上必须有他可以吃的,可以遮风挡雨之类等足够让他存活的事物,也就是说荒岛也有着自己的一些条件。这样进行对比的话感觉更好理解一些,而说到这里的时候第一个问题是不是也就迎刃而解了呢:地球>孤岛,也可以简单理解为JDK是大于JRE的,JRE存在于JDK之中,而实际上我们在安装完JDK之后,打开JDK文件夹后是可以看到一个JRE文件夹的。

至于JVM,在android开发中可能会理解的更加直观,android开发中的虚拟机就是一个模拟的手机,直接可以看到,而对于java虚拟机,我们则可以想象一台组装的台式机,我们的主机和显示器是分离的,而JVM则就是一台虚拟的主机,显示器则还是包含在我们的显示器中,而相应的JRE则大致可以理解为尚未拆包装的电脑,有着说明书和主机等等,至于JDK这种情况下只能说是现实中的整个科技领域了额,平台嘛,实在想不出更好的类比了。

当然JVM也可以类比成android中的app,而我们的JDK在这里就像是安装好的电脑系统(所以在下载JDK的时候,记得要下载符合电脑相应系统的版本),至于JRE,想必用过电脑应用的人大都知道,每个应用在使用之前都要进行安装,而安装后的程序在卸载的时候常会有卸载不干净的情况,这其实跟JRE和JVM很类似了吧,JVM就是应用程序,卸载的时候只卸载了这些应用,而JRE不仅包含应用程序,同时还包含着这些没法简单卸载的乱七八糟,没有这些只有那些应用还是没法进行使用的。

是不是有些晕,那还是不要想了,经过长久的编程后,相信会有一天仿佛醍醐灌顶,天眼顿开,透心的凉,而现在只要简单知道那些层递关系就好:JDK>JRE>JVM,而JDK文件夹中有JRE,我们在JRE文件夹中可以看到的bin,我们倒不妨可以理解为JVM。


---等下一篇继续记录剩下的两个问题




评论
热度 ( 23 )

© 炮炮屋 | Powered by LOFTER