前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java发展史及虚拟机历史

java发展史及虚拟机历史

作者头像
逍遥壮士
发布2021-02-03 16:26:33
5710
发布2021-02-03 16:26:33
举报
文章被收录于专栏:技术趋势技术趋势

java发展史

java已经有20多年的历史了,我将2021算上已经有26年了,按照成年人的年纪来算,算是已经毕业可以出来赚钱准备养家的路上了,虽然说现在java很火特别最近几年的微服务盛行,导致一种现象,高新技术层出不穷,大家都疲于学习新技术,而对于最基本的底层其实了解很陌生或者说基本不了解,当然我也了解不是很深哈~~~。学习jvm呢,主要是让基础底层更加扎实深入,了解相关的实现原理,当然好处就是面试和写出更优代码~,掌握相关原理,其实上层的东西都差不多,而不至于出一个新的技术马上扎头就去学习表面的api,没啥太大作用~~~。

有些同学说java已经过时了,其实建议查看这个网站:https://www.tiobe.com/tiobe-index/

上面罗列当今热门语言的排行版,java其实一些是前5的。

版本历史:

1995年5月23日,Java语言诞生

1996年1月,第一个JDK-JDK1.0诞生

1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术

1996年9月,约8.3万个网页应用了JAVA技术来制作

1997年2月18日,JDK1.1发布

1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录

1997年9月,JavaDeveloperConnection社区成员超过十万

1998年2月,JDK1.1被下载超过2,000,000次

1998年12月8日,JAVA2企业平台J2EE发布

1999年6月,SUN公司发布Java的三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME)

2000年5月8日,JDK1.3发布

2000年5月29日,JDK1.4发布

2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机

2001年9月24日,J2EE1.3发布

2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升

2004年9月30日18:00PM,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5更名为Java SE 5.0

2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名,以取消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME

2006年12月,SUN公司发布JRE6.0

2009年12月,SUN公司发布Java EE 6

2010年11月,由于Oracle公司对于Java社区的不友善,因此Apache扬言将退出JCP[14]

2011年7月28日,Oracle公司发布Java SE 7

2014年3月18日,Oracle公司发表Java SE 8

2017年9月21日,Oracle公司发表Java SE 9

2018年3月21日,Oracle公司发表Java SE 10

2018年9月25日,Java SE 11发布

参考:https://zh.wikipedia.org/wiki/Java

上面的图是基于 《深入理解JAVA虚拟机》罗列出来的~

1997年,当JDK 1.1发布时,虚拟机没有改变,并且Sun Classic VM仍然被用作默认虚拟机。

1998,当发布JDK 1.2时,提供了在Solaris平台上运行的精确VM虚拟机,但Sun经典VM仍然被用作默认Java虚拟机。

2000年,发布了JDK 1.3。默认的Java虚拟机从Sun经典VM更改为Sun HooSopt VM,而Sun经典VM被用作备用虚拟机。

2002年,发布了JDK 1.4。Sun Classic VM退出商业虚拟机阶段,并直接使用Sun HotSpot VM作为默认虚拟机。

Sun Classic VM

世界上第一款商用的java虚拟机。jdk1.4时候被淘汰。

只提供了解释器,性能差。

相关概念

Java编译器是什么?

将.java文件编译成中间字节码.class文件,该文件为JVM所以阅读的的语言,跟平台(window/linux/其他)无关,这也是实现java跨平台的核心,直接将该.class文件放到任何有装jvm平台都可以执行起来。

Java解释器是什么?

用来解释执行java编译器后的文件,把字节码转化成JVM平台可以看得懂的机器语言并且运行。解释器是一行一行的翻译并运行,所以比较慢。

JIT是什么?

JIT叫即时编译器Just In Time Compiler,当代码反复被执行,被称为热点代码。热点代码被编译成本地机器指令就不用每次都去解释,就是由JIT实现。JIT可能提升程序效率,但是导致每一个方法、每一行代码进行编译就会影响性能。

注意:JIT和解释器不能协同工作。

JIT与解释器的区别?

JIT类需要先编译再执行,而解释器则是立即运行不需要再编译。

个人理解:

比如你想去北京八达岭长城:

解释器就类似于立即出发;

JIT:类似坐飞机需要等待;

Exact VM

jdk1.2发布;

两级即时编译器、编译器和解释器混合工作模式等;

最后被HotSpot VM取代;

Sun HotSpot VM

“Longview Technologies”公司开发,是被sum公司收购。该虚拟机一开始并非为java设计;

通过“热点代码探测技术”解决了Sun Classic VM外挂JIT导致解释器不起作用的原因;

是目前使用范围最广的java虚拟机;

什么是热点代码探测技术?

热点代码探测分为:基于采样的热点探测、基于计数器的热点探测;

采样的热点探测:周期性检查各个线程的栈顶,如果发现某个方法经常出现在栈顶,就判定该方法为热点方法。

计数器的热点探测:通过执行计数器找出最具有编译价值的代码,然后通知JIT编译器以方法为单位进行编译;

Sun Mobile-Embedded VM

面向移动端,安卓、ios等智能手机开发的一个移动端虚拟机;

BEA/JRockit/IBM J9 VM

JRockit是BEA System公司开发的虚拟机,被Oracle收购,后来就没有再发展;

J9是IBM公司开发,全称:Technology for Java Virtual Machine,号称天下最快的虚拟机(有广告嫌疑),后来捐给Eclipse开源基金会,更名为OpenJ9;

Liquid

是BEA System公司开发的虚拟机,主要是针对特定硬件平台(深度定制),后来也被sum收购然后停止。

Apache Harmony

由IBM和Intel联合开发虚拟机,由于sun坚决不让Harmony获得JCP认证,最终2011退役。

Microsoft JVM

微软开发的一个虚拟机,主要在IE3浏览器上使用java apples,后来被sun以侵权商标告了,在windows xp sp3抹掉了(这里sun有一个很操蛋的故事,可以自行百度!)

Taobao jvm

属于国内通过open jdk深度定制的一款虚拟机,主要还是用于阿里的相关虚拟主机上;

特点:将垃圾移到堆外,降低垃圾回收频率,提升效率!

缺点就是严重依赖intel的cpu,损失了兼容性,但是提高了性能;

Graal VM

oracle Labs 在2018年公开了Graal VM,号称 "Run Programs Faster Anywhere",勃勃野心。主要想实现全栈。

有希望取代HotSpot可能就是Graal VM。

其他

.....

最后

在国内大部分都是基于jdk1.8开发,java表层貌似没什么变化,但是jvm真的已经更新速让我们望尘莫及,快到我们都不知道底层的复杂度具体多深,只看表现差不多。或许就是因为国情原因吧....

参考:

https://www.jianshu.com/p/6da233604056

https://leezw.net/posts/java-history

https://blog.csdn.net/weixin_45267102/article/details/108522647

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 技术趋势 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门开源软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档