阿里P8大佬带你深入解析JVM与java

什么是Java

经过了多年的发展,Java早已由一门单纯的计算机编程语言,演变为了一套强大的技术体系。是的,什么是Java,我想技术体系四个字应该是最好的概括了吧。Java设计者们将Java划分为3种结构独立但却彼此依赖的技术体系分支,它们分别对应着不同的规范集合和组件:

1、Java SE(标准版),主要活跃在桌面领域,主要包含了Java API组件。

2、Java EE(企业版),活跃在企业级领域,除了包含JavaAPI组件外,还扩充有Web组件、事务组件、分布式组件、EJB组件、消息组件等,综合这些技术,开发人员完全可以构建出一个具备高性能、结构严谨的企业级应用,并且JavaEE也是用于构SOA(面向服务架构)的首选平台。

3、Java ME(精简版),活跃在嵌入式领域,称之为精简版的原因是,它仅保留了Java API中的部分组件,以及适应设备的一些特有组件。上面讲到Java技术体系的分支,那既然Java是一种技术体系,我们来看一下组成这种技术体系的技术:

1、Java编程语言

2、字节码

3、Java API,包括Java API类库和来自商业机构以及开源社区的第三方类库

4、Java虚拟机

很多时候我们只关注了第一点,因为第一点才是和工作切实相关的。Java技术体系所包含的内容实际上Java官方有提供给我们一张图:

Java的优点

Java能获得如此广泛的认可,除了它拥有一门结构严谨、面向对象的编程语言之外,还有许多不可忽视的优点:

1、它摆脱了硬件平台的束缚,实现了“一次编写、到处运行”

2、它提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄露和指针越界问题

3、它实现了热点代码检测和运行时编译及优化,这使得Java应用能随着运行时间的增加而获得更高的性能

4、它有一套完整的应用程序接口,还有无数来自商业机构和开源社区的第三方类库来帮助它实现各种各样的功能

5、它与身俱来对分布式技术的支持就比较完善
**6、最新2020整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,
需要获取这些内容的朋友请加Q君样:756584822**
但是,Java最大的优势和财富还不是以上这些,就像高翔龙老师在《Java虚拟机精讲》中写的,Java真正强大的地方是因为拥有全世界最多的技术拥护者和开源社区支持,他们无时无刻都保持着最充沛的体力与思维,一步一步地驱动着Java技术的走向。

JDK和JRE

两个常见的重要概念。其实上面的图中已经划分出了JDK和JRE的范围了。我们对这张图做一个归纳,用我们的语言简单地总结一下什么是JDK和JRE:

1、JDK(Java Development
Kit),是用于支持Java程序开发的最小环境,基本上Java程序设计语言、Java虚拟机、Java API类库这三部分组成了JDK

2、JRE(Java Runtime Enviroment),是支持Java程序运行的标准环境,Java API类库中的Java SE
API自己和Java虚拟机这两部分组成了JRE

OpenJDK

前面有讲过,“Java真正强大的地方是因为拥有全世界最多的技术拥护者和开源社区支持,他们无时无刻都保持着最充沛的体力与思维,一步一步地驱动着Java技术的走向”。其实JDK在一开始并不是开源的,但是随着开源运动的蓬勃发展,2006年Sun公司宣布将对Java开放源代码,开源的Java平台开发主要集中在OpenJDK项目上。2009年4月15日,Sun公司正式发布OpenJDK,JDK 7则是Java开源后发布的第一个版本,任何组织和个人都可以为Java的发展做出贡献。当然OpenJDK和真正的Oracle JDK(因为Sun公司被Oracle公司在2010年收购了嘛,所以就叫做Oracle JDK了)还是有区别的:

OpenJDK中的代码基本上都来自于Oracle JDK,属于Oracle JDK的一个分支,但是其中去除了一些非开源的组件和代码,替换成了开源的组件和代码,主要是加密和图形的部分。因此用OpenJDK代替Oracle JDK可能会有一些的不兼容。

对于OpenJDK感兴趣的,可以在OpenJDK官网http://download.java.net/openjdk/jdk7/下载OpenJDK的源代码。像Java虚拟机HotSpot、Java编译器Javac、JNI等等,源代码都在里面。

JCP和JSR

JCP(Java Community Process)是一套制定Java技术规范的机制,通过制定和审查JSR(Java Specification Requests)推动Java技术规范的发展。一个已经提交的JSR要想成为最终状态,需要经过正式的公开审查,并由JCP委员会投票决定,最终的JSR会提供一个参考实现,它是免费而且公开源代码的。JSR并非只由Oracle管理,任何个人都可以注册并参与审查JSR,对于Java语言发展动态感兴趣的人来说,跟踪JSR的动态发展是一条不错的学习途径。在JCP官网http://www.jcp.org/中可以查看所有的JSR,下面列举几个大家熟悉的JSR:

1、JSR 14,泛型

2、JSR 51,NIO

3、JSR 175,注解

4、JSR 201,枚举以及自动装箱等

5、JSR 221,JDBC4.0 API

Java虚拟机

最后,轮到这个大哥登场,也是之后文章的主角。为什么Java可以实现所谓的“一次编写,到处运行”,主要是因为虚拟机的存在。Java虚拟机负责Java程序设计语言的安全特性和平台无关性。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java语言编译器只需要生成在Java虚拟机上运行的字节码,就可以在多种平台上不加修改地运行。Java虚拟机使得Java摆脱了具体机器的束缚,使跨越不同平台编写程序成为了可能。

要多提一句,我们现在说的Java虚拟机基本上都是JDK自带的虚拟机HotSpot,这款虚拟机也是目前商用虚拟中市场份额最大的一款虚拟机,可以通过在命令行程序中输入“java -version”来查看:


那其实市面上还有很多别的优秀的虚拟机。Sun公司除了有大名鼎鼎的HotSpot外,还有KVM、Squawk VM、Maxine VM,BEA公司有JRockit VM、IBM公司有J9 VM等等。

*最新2020整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,
需要获取这些内容的朋友请加Q君样:290194256
*

阿里P8大佬带你深入解析JVM与java相关推荐

  1. 对标阿里P8的MyBatis源码解析文档,面试/涨薪两不误,已献出膝盖

    移动互联网的特点是大数据.高并发,对服务器往往要求分布式.高性能.高灵活等,而传统模式的Java数据库编程框架已经不再适用了. 在这样的背景下,一个Java的持久框架MyBatis走入了我们的世界,它 ...

  2. 微软大佬带你深入解析websocket丨tcp自定义协议的设计丨服务器高并发场景的优化

    各个方面都离不开的websocket,只是你没有注意到 1. websocket的应用场景 2. tcp自定义协议的设计 3. 服务器高并发场景的优化 [Linux服务器开发系列]微软大佬带你深入解析 ...

  3. java底层原理书籍_不愧是阿里p8大佬!终于把Java 虚拟机底层原理讲清楚了,请签收...

    概述 JVM 的内存模型和 JVM 的垃圾回收机制一直是 Java 业内从业者绕不开的话题(实际调优.面试)JVM是java中很重要的一块知识,也是面试常问的问题之一,直至今天,仍然还有许多面试者在被 ...

  4. 阿里P8整理总结,入职大厂必备Java核心知识(附加面试题

    前言 今天就给大家分享一波一位小伙伴面试大厂的经历.知识点和面试题分享,主要内容包括:JVM.JAVA集合.JAVA多线程并发.JAVA基础.Spring原理.微服务.Netty与RPC.网络.日志. ...

  5. 阿里 框架 原声Android,阿里P8大佬亲自教你!你所不知道的Android原生开发的现状,含泪整理面经...

    基本情况 先说一下个人基本情况,计算机科学与技术专业.主要学的Android开发,所以投的岗位都是Android开发工程师.投了知乎,内推了阿里蘑菇街腾讯百度网易.腾讯百度都没有收到面试,知乎Skyp ...

  6. 阿里P8大佬亲自讲解!朝阳java培训

    开头 Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶.Spring更是避免了重复造轮子的工作并跟随着互联网行业的发展做出不断的更新,很多研发人员把spring看作 ...

  7. 阿里巴巴整理的python_阿里P8大佬整理的2020年最全99道python面试题,文末附答案...

    前言: 学习python的优点是什么?python语法非常优雅,简单易学 免费开源 跨平台,可以自由移植 可扩展,可嵌入性强 第三方库丰富 python的应用领域在系统编程中应用广泛,比如说shell ...

  8. 阿里P8大佬的860页分布式微服务笔记,改变你对架构的认知

    阿里大佬架构解密:从分布式到微服务,做个火影般的架构师 总览 由于笔记的内容太多,没办法全部展示出来,下面只截取部分内容展示**.完整版笔记的朋友:关注我并帮忙点赞此文后点这里即可获取!** 详细内容 ...

  9. 阿里P8大佬亲自教你!java程序设计第四版pdf

    前言 最近有很多朋友去目前主流的大型互联网公司面试(阿里巴巴.京东.字节跳动.蚂蚁金服.滴滴),面试回来之后会发给我一些面试题.有些朋友轻松过关,拿到offer,但是有一些是来询问我答案的. 我特意整 ...

最新文章

  1. php,http_build_query,乱码
  2. OSPF的基本原理及配置命令
  3. 输入参数的数目不足_sklearn.decomposition.PCA 参数速查手册
  4. c free语言自定义函数,C 语言free函数的工作原理
  5. 青年教师大讲堂 计算机,浙海大青年教师大讲堂之船机学院“知识改变命运”...
  6. 如何定义一个只能在堆上(栈上)生成对象的类?
  7. 【长文详解】从Transformer到BERT模型
  8. 《Android Jetpack》— Android 书籍
  9. 《数字孪生体技术白皮书》重磅发布(附完整版下载)
  10. 个人网站,添加对方为好友,QQ临时对话设置方法
  11. windows10如何设置电脑的固定IP地址
  12. C语言指针用法完善篇
  13. SCIgen与野鸡期刊的梗
  14. 如何系统地学习网络安全
  15. VirtualProtect 3方法 -seh ret-ASLR-dep-Adrenalin Player 2.2.5.3
  16. VNC桌面无法打开终端:Failed to execute default Terminal Emulator. Input/output error.
  17. Android 全景视频播放器(VR视频播放器探索二)
  18. Java虚拟机(三)--------GC算法和收集器
  19. 为什么罗永浩这种人都能做出来锤子手机?
  20. 模式Singleton

热门文章

  1. Hadoop日志详解
  2. 【腾讯精选练习-简单】292. Nim 游戏
  3. OfficeExcel(6)
  4. Pytorch中的学习率调整lr_scheduler,ReduceLROnPlateau
  5. 电脑开机后黑屏解决办法
  6. 牧牛火链,区块链技术将会如何发展
  7. Flutter插件一野狗云身份认证
  8. shell脚本:使用if-then语句和test命令
  9. 免费的ppt模板哪里找?Python教你一键采集海量模板素材
  10. Ubuntu 13.10 64位 ia32-libs未发现软件包 解决办法