大家好,我是Java!

Posted 小谢backup

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大家好,我是Java!相关的知识,希望对你有一定的参考价值。

 欢迎关注我的技术公众号:小谢backup

 

1995年5月23日,我出生在一家叫做Sun的公司里,当我睁开眼开始了解外面的世界时,发现一切都是那么陌生而熟悉。

早在出生前,我就已经在很多家用电器上生活了,更准确地说,是我的前世Oak(橡木)。最早可以追溯到1990年代初,被一个叫做詹姆斯·高斯林的人在沙丘路旁的一间工作室里创造出来,门外就是一颗大橡树。

在我们程序的世界里,他就是上帝般的存在。

搭上互联网的快车

起初,人们并不知道将我用在哪里,据说我的前世在家用电器上的表现平平,不能给人们带来多少用处。因此,我也对未来非常迷茫。

我和外界的第一次交流是在一个叫做浏览器的应用上,人们让我和浏览器合作,用来提供交互性的动画。但一个来自Adobe公司的Flash小家伙居然表现得比我好,在浏览器上把我比了下去。果然有一个好爹很重要啊。

祸不单行,一家叫做微软的公司也反对我的存在,说将不在它们的浏览器和电脑里安装我。这让我有种被世界遗弃的感觉。

好在,95年之后,有一个叫做互联网的新玩意儿开始普及,它将计算机与计算机连成整体,通过网页的方式对人们提供服务。而互联网的一个特点是服务器——客户端形态的,就是下图的样子。客户端请求服务器,服务器发送文字、图片、文件给客户端展示。

人们把我放到服务器上,由我负责对客户端的请求做处理,逐渐的发现我做的还不错,于是我被放到了更多的服务器上。以至于后来微软也支持让我安装到它们的机器上,越来越多的人知道了我的存在。

我的疯狂成长期

互联网让我开始被人们使用,但广泛的应用还多亏了我的一个特点:跨平台

当我在微软的系统上驻足后,我已经能够同时存在于Linux和Windows上了。这个是我的设计者们乐意看到的,因为我的一个特点便是跨越平台。当时有一个特别流行的口号:Write Once, Run Everywhere!(一次编译,到处运行)。

这就要说到我的组成了,人们从互联网上通过下载JDK来安装我。JDK即Java Development Kit(Java开发套件),由JVM(Java虚拟机)、Java平台核心类和基础Java 平台库组成。

我(Java)是跨平台的,位于系统层次的最顶端,通过虚拟机JVM与操作系统或者硬件(JNI)互动。

JDK不是跨平台的,Linux上的JVM和Windows上的JVM就完全不同。

通过依赖平台的JVM,我得以“一次编译,到处运行”,可以这么说,我站在了巨人的肩膀上。

我在服务器的本领越来越受欢迎,截至1998年2月,我的JDK1.1版本已经被下载超过两百万次。每一天都有新的设备会安装我,我已经开始“无处不在了”。

我是个工作狂

我能没日没夜地工作。

我喜欢喝咖啡,桌上经常放着一杯摩卡。每次有新程序来的时候,就到了我孜孜不倦的时候。

我的工作离不开JVM,所以它的工作过程非常重要。

JVM的工作过程如下:

1)一份Java的源代码经过Linux或者Windows的编译器,会生成一个跨平台的字节码文件.class;

 

 2)字节码文件会被类加载器加载到运行时数据区,包括堆、栈、本地方法栈、程序计数器和方法区;

 

3)运行时数据区的数据通过执行引擎调用执行,或直接调用JNI执行。

 

虽然说class文件是跨平台的,但它的来源不一定是Java文件哦!因为能使用Java虚拟机的编程语言,除了我之外,还有我的兄弟们:

 

 

是不是有种百花齐放的感觉。那如何区分class文件是从谁编译生成的呢?看文件的头四个字节。我的class文件开头便是咖啡宝贝(CAFE BABE),只要看到这个就知道是我啦!

 

颠沛流离的日子

三分天下

后来,由于我成长的很快,实在过于庞大了,我的创造者将我一分为三,分别是标准版(SE)、企业版(EE)和微型版(ME),分别用于不同的场景。

标准版是企业版的基础;企业版用在企业应用的快速开发;而微型版则用于手机上,我就曾被安装到诺基亚的手机中,这让我想起了我的前世Oak。

换金主

有一天,日!这家创造我的公司,被另一家做数据库的O公司收购了,自此,我就开始了寄人篱下的生活,逐渐变成自己曾经最为讨厌的样子。

自打来了这家新公司,我的变化越来越快,从几年一次的更新,到一年一次的更新,再到现在半年一次的更新。很多人开始不再适应我,更多的人还是用的曾经的我。现在,我的最新版本已经是两位数了。

期间还发生了一件糟糕的事情。有个叫安卓的操作系统是基于我开发的,拥有我商标的O公司想从中捞一大笔钱,于是和G公司发起了官司。这场旷日持久的官司让我身心俱疲,很多曾经爱我的人都对我的未来充满了怀疑。

为此,我的一个开源版本兄弟:OpenJDK,诞生了。它在很大程度上继承了我的初衷,越来越多的人喜欢它、使用它,我感到很开心。

大家对我的批评

我的创造者试图通过我来解决软件编写的复杂性,有很多人认为我已经做到了。很多人也不是很喜欢我,对我指指点点,鸡蛋里挑骨头。

不过我也一直在发展,对于好的也逐渐吸收,比如 JDK1.8 引入的lambda就被人们所喜欢。

我的感情

我是1995年出生的,今年已经26岁了,可是还没有找到对象。有人跟我说,你new一个啊!对此我无话可说。

日常打交道中,我遇到较多的是一个叫做javascript的妹子,平时很慵懒。她与我同岁,但命运造人,她只存在于客户端上,而我位于服务器端,两人只能隔着网络聊天。

不过现在她也能以NodeJS的形式存在于服务器端,我们的共同点越来越多了。只是我不知道她对我的感觉如何,而我也不知道自己喜不喜欢她。

但有一个人是我一直心心念念的,就是Python小姐。我有点喜欢她,但是我们交集并不多。

还有温柔的C妹妹,小不点的Shell,高冷的C佳佳,不费脑子的php姑娘。天啊,怎么我都想要,却谁也得不到。想到这里,我默默留下了泪水。

其实,我也觉得自己不好看,甚至有点书呆子,但我不会气馁,会一直继续加油的!

以上是关于大家好,我是Java!的主要内容,如果未能解决你的问题,请参考以下文章

Java对象与Java类

Java对象与Java类

Java集合框架源码详解系列

Java集合框架源码详解系列

我是全网最硬核的Java中间件领域作者,CSDN最值得关注的博主,大家同意吗?(建议收藏)

深入解析java反射