深入理解Java虚拟机-走近Java

请举手回答,LDO和DC-DC有什么不同? 文章目录1 LDO是什么2 LDO典型电路3 DC-DC是什么4 DC-DC典型电路5 LDO和DC-DC区别10.2.6 小结一下 大家好,我是记得诚。 DC-DC和LDO都是电源芯片,两者差异很大,用法也不同,这篇博客讲述LDO和DC-DC的一些差异,帮助更好的认识LDO和DC-DC并进行选型。 1 LDO是什么 LDO是low dropout regulator的简称,即低压差线性稳压器,这是相对于传统的线性稳压器来说的,传统的稳压器,输入比输出要高出很多,否则无法工作,LDO可能输入比输出高1~2V 阅读详情

本博客主要参考周志明老师的《深入理解Java虚拟机》第二版

读书是一种跟大神的交流。阅读《深入理解Java虚拟机》受益匪浅,对Java虚拟机有初步的认识。这里写博客主要出于以下三个目的:一方面是记录,方便日后阅读;一方面是加深对内容的理解;一方面是分享给大家,希望对大家有帮助。

《深入理解Java虚拟机》全书总结如下:

序号内容链接地址
1深入理解Java虚拟机-走近Javahttps://blog.youkuaiyun.com/ThinkWon/article/details/103804387
2深入理解Java虚拟机-Java内存区域与内存溢出异常https://blog.youkuaiyun.com/ThinkWon/article/details/103827387
3深入理解Java虚拟机-垃圾回收器与内存分配策略https://blog.youkuaiyun.com/ThinkWon/article/details/103831676
4深入理解Java虚拟机-虚拟机执行子系统https://blog.youkuaiyun.com/ThinkWon/article/details/103835168
5深入理解Java虚拟机-程序编译与代码优化https://blog.youkuaiyun.com/ThinkWon/article/details/103835883
6深入理解Java虚拟机-高效并发https://blog.youkuaiyun.com/ThinkWon/article/details/103836167

在这里插入图片描述

世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的程。

概述

Java不仅仅是一门编程语言,还是一个由一系列计算机软件和规范形成的技术体系,这 个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合,如图1-1所示。时至今日,Java技术体系已 经吸引了900多万软件开发者,这是全球最大的软件开发团队。使用Java的设备多达几十亿 台,其中包括11亿多台个人计算机、30亿部移动电话及其他手持设备、数量众多的智能卡, 以及大量机顶盒、导航系统和其他设备。

在这里插入图片描述

Java能获得如此广泛的认可,除了它拥有一门结构严谨、面向对象的编程语言之外,还 有许多不可忽视的优点:它摆脱了硬件平台的束缚,实现了"一次编写 ,到处运行"的理想;它提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄露和指针越界问 题;它实现了热点代码检测和运行时编译及优化,这使得Java应用能随着运行时间的增加而 获得更高的性能;它有一套完善的应用程序接口,还有无数来自商业机构和开源社区的第三 方类库来帮助它实现各种各样的功能……Java所带来的这些好处使程序的开发效率得到了很 大的提升。作为一名Java程序员,在编写程序时除了尽情发挥Java的各种优势外,还应该去了解和思考一下Java技术体系中这些技术特性是如何实现的。认识这些技术运作的本质,是 自己思考"程序这样写好不好"的基础和前提。当我们在使用一种技术时,如果不再依赖书本和他人就能得到这些问题的答案,那才算上升到了"不惑"的境界。

本书将与读者一起分析Java技术中最重要的那些特性的实现原理。在本章中,我们将重点介绍Java技术体系内容以及Java的历史、现在和未来的发展趋势。

Java技术体系

从广义上讲,Clojure、JRuby、Groovy等运行于Java虚拟机上的语言及其相关的程序都 属于Java技术体系中的一员。如果仅从传统意义上来看,Sun官方所定义的Java技术体系包括以下几个组成部分:

  • Java程序设计语言
  • 各种硬件平台上的Java虚拟机
  • Class文件格式
  • Java API类库
  • 来自商业机构和开源社区的第三方Java类库

图1-2展示了Java技术体系所包含的内容,以及JDK和JRE所涵盖的范围。

在这里插入图片描述

以上是根据各个组成部分的功能来进行划分的,如果按照技术所服务的领域来划分,或者说按照Java技术关注的重点业务领域来划分,Java技术体系可以分为4个平台,分别为:

  • Java Card : 支持一些Java小程序( Applets ) 运行在小内存设备(如智能卡)上的平台。
  • Java ME ( Micro Edition ) : 支持Java程序运行在移动终端(手机、 PDA ) 上的平台,对 Java API有所精简,并加入了针对移动终端的支持,这个版本以前称为J2ME。
  • Java SE ( Standard E d i t i o n ) : 支持面向桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API,这个版本以前称为J2SE。
  • Java EE ( Enterprise Edition): 支持使用多层架构的企业应用(如ERP、CRM应用)的 Java平台,除了提供Java SE API外 ,还对其做了大量的扩充- 并提供了相关的部署支持,这 个版本以前称为J2EE。

Java发展史

从第一个Java版本诞生到现在已经有18年的时间里。沧海桑田一瞬间,转眼18年过去了,在图1-3所展示的时间线中,我们看到JDK已经发展到了1.7版。在这18年里还诞生了无数和Java相关的产品、技术和标准。现在让我们走入时间隧道,从孕育Java语言的时代开始,再来回顾一下Java的发展轨迹和历史变迁。

在这里插入图片描述

具体可以参考我的这篇博客Java发展历程

Java虚拟机发展史

上一节我们从整个Java技术的角度观察了Java技术的发展,许多Java程序员都会潜意识地把它与Sun公司的HotSpot虚拟机等同看待,也许还有一些程序员会注意到BEA JRockit和 IBM J9 ,但对JVM的认识不仅仅只有这些。

从1996年初Sun公司发布的JDK 1.0中所包含的Sun Classic VM到今天,曾经涌现、浬灭过许多或经典或优秀或有特色的虚拟机实现,在这一节中,我们先暂且把代码与技术放下,一 起来回顾一下Java虚拟机家族的发展轨迹和历史变迁。

  1. Sun Classic / Exact VM
  2. Sun HotSpot VM
  3. Sun Mobile-Embedded VM / Meta-Circular VM
  4. BEA JRockit / IBM J9 VM
  5. Azul VM / BEA Liquid VM
  6. Apache Harmony / Google Android Dalvik VM
  7. Microsoft JVM 及其他

展望Java技术的未来

在2005年,Java语言诞生10周年的SunOne技术大会上,Java语言之父James Gosling做了一场题为"Java技术下一个十年"的演讲。笔者不具备James Gosling博士那样高屋建瓴的视角 ,这里仅从Java平台中几个新生的但已经开始展现出蓬勃之势的技术发展点来看一下后续 1〜2个JDK版本内的一些很有希望的技术重点。

  1. 模块化,模块化是解决应用系统与技术平台越来越复杂,越来越庞大而产生的一系列问题的一个重要途径。最近几年OSGI技术的迅速发展正说明了通过模块化实现按需部署,降低复杂性和维护成本的需求是相当迫切的。
  2. 混合语言,今年原来越多语言运行在Java这个平台上,例如Groovy,JRuby,Clojure等。试想一下,在一个项目中,并行处理使用Clojure语言编写,展示层使用Jruby或Rails,中间层则是Java,每个应用层将使用不同的语言来完成,而且,接口对每一层的开发都是透明的,各种语言之间的交互不存在任何困难,因为它们最终都运行在一个虚拟机上。
  3. 多核并行,引入java.util.concurren包,能够轻松地利用多个CPU核心提供的计算资源完成一个复杂的计算任务。
  4. 进一步丰富语法,JDK不断升级改进语法。
  5. 随着主流的CPU开始支持64位架构,JAVA虚拟机也在很早之前就推出了支持64位系统的版本。

实战:自己编译JDK

想要一探 JDK 内部的实现机制,最便捷的路径之一就是自己编译一套 JDK 。通过阅读和跟踪调试 JDK 源码去了解 Java 技术体系的原理,虽然门槛会高一些,但肯定会比阅读各种文章、书籍更加容易切近本质。另外,JDK 中的很多底层方法都是 Native 的,当需要跟踪这些方法的运作或对 JDK 进行 Hack 的时候,都需要编译一套自己的 JDK 。

本章小结

本章介绍了 Java 技术体系的过去、现在和未来的发展趋势,并通过实践的方式介绍了如何自己来独立编译一个 OpenJDK 7。

【用ArcGIS制作一张好看的中国月度气温图 要最后选中那个事先调整好的那个数据框,这样其他两个数据框才能和其大小一致。 阅读详情

相关推荐

K8s入门教程(一)

本教程提供了Kubernetes(K8s)的入门指南,涵盖了从基础概念到实战操作的全面内容。首先介绍了Kubernetes的定义和核心功能,如自动化部署、弹性伸缩、自我修复等。接着,详细讲解了如何在macOS上安装Minikube和kubectl工具,以及如何使用这些工具创建和管理Pod、Deployment和Service等核心资源。教程还包括了实战案例,如部署Nginx应用,并介绍了高级特性如滚动更新和自动伸缩。最后,提供了常见问题的解决方案,帮助用户快速上手和解决实际使用中的问题。

2401_82505179的博客 1689

深入理解JVM虚拟机(JVM内存模型、性能监控、虚拟机原理)一期

深入理解JVM虚拟机(JVM内存模型、性能监控、虚拟机原理)一期 可惜

PubMedBERT:生物医学NLP中的垂直领域预训练实践与性能突破

本文深入探讨了PubMedBERT在生物医学NLP领域的应用与性能突破。作为专为生物医学文本设计的预训练模型,PubMedBERT通过全词掩码策略和BLURB基准测试,显著提升了命名实体识别、关系抽取等任务的准确率。文章还提供了PubMedBERT的实战应用案例和代码示例,展示了其在医学文献检索和电子病历结构化中的卓越表现。

kite3的博客 284

《深入理解java虚拟机》读书笔记

1. 运行时数据区域 1.1 程序技术器 可以看作是当前线程所执行的字节码的行号指示器,通过它来取下一条需要执行的指令。 线程私有内存。Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)都只会执行一条线程中的指令。 因此,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线

啊哈的博客 1504

向量乘法器设计

同样基于Wallace树乘法器,我们来构造向量乘法器。 在一些矩阵运算中经常用到向量的相乘运算,本例以4维向量为例子介绍向量乘法器的verilog HDL设计。 设向量a = (a1, a2, a3, a4), b = (b1, b2, b3, b4)。 则a 与 b的点乘为:a * b = a1 b1 + a2 b2 + a3 b3 + a4 b4, 即向量对应位置的值相乘,再相加...

Reborn Lee 2969

抖音直播参数逆向实战:手把手教你用Python获取ttwid和x-bogus(附完整代码)

本文深入解析抖音直播接口的反爬机制,重点剖析核心防护参数ttwid和x-bogus的生成原理与作用。通过Python实战,手把手教你逆向获取ttwid、webid等关键参数,并构建稳定的数据采集方案,为开发者提供企业级数据获取能力。

weixin_29196891的博客 1044

深入理解Java虚拟机

JVM(Java Virtual Machine,Java 虚拟机)顾名思义就是用来执行 Java 程序的“虚拟主机”,实际的工作是将编译生成的.class 文件(字节码)翻译成底层操作系统可以运行的机器码并且进行调用执行,这也是 Java 程序能够跨平台(“一次编写,到处运行”)的原因(因为它会根据特定的操作系统生成对应的操作指令),Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。

故不积跬步无以至千里 5853

RK3568驱动 SPI主/从 配置

RK3568 SPI 配置指南 内核配置:启用用户空间驱动(主)和从模式协议支持。 主模式:设备树设置status="okay"、max-freq及引脚复用,子节点compatible="rockchip,spidev"。 从模式:需添加spi-slave属性,子节点命名以slave@X开头。 编译烧写:修改设备树后编译内核或全量镜像,验证/dev/spidevX.Y节点。 测试:使用spidev_test工具,主模式可环回测试,从模式需与主设备通信。 (关键:从模式强制spi-slave和命名规则,频率匹

文石_2009的博客 1144

Java虚拟机

实现通过类的权限限定名获取该类的二进制字节流的代码块叫做类加载器。启动类加载器(BootstrapClassLoader),使用C++语言编写,用来加载Java核心类库,它无法被应用程序直接使用。扩展类加载器(ExtensionClassLoader),使用Java编写,且父类加载器是Bootstrap,用来加载扩展库里面的类。系统类加载器(ApplicationClassLoader),根据Java的类路径(CLASSPATH)来加载Java类,参考JVMhttphttps。...

zhangzhang_one的博客 2454

【AI编程】Qoder AI 编程工具从部署到深度使用实战详解

Qoder AI 编程工具从部署到深度使用实战详解

congge 8339

s8654

The official Snapdragon Ride SX 4.0 development board provides standardized hardware support for the secondary development and functional verification of the s8654 platform.

qq_39257814的博客 6828

009_Java 虚拟机

在不同操作系统上安装与之对应的JDK后所虚拟出的一台计算机,该计算机上可以运行任意Java字节码文件,这也是Java实现跨平台的原因

李大能 2517

Python 爬虫实战:爬取微博热搜与用户评论数据

本文系统讲解微博热搜榜单与用户评论数据的爬取技术方案。针对微博热搜榜采用Requests+BeautifulSoup解析静态HTML结构,实现高效爬取;对于动态加载的评论数据,使用Selenium模拟浏览器行为规避反爬机制。详细阐述技术选型、反爬策略、数据清洗及存储方法,提供完整代码实现和输出示例。同时强调合规要求,提示开发者需在遵守平台规则的前提下进行数据采集。该方案为舆情分析和热点研究提供了可落地的技术实现路径。

2503_91057718的博客 1715

《深入理解java虚拟机》第1章 走近Java

1.5 展望Java技术的未来 在2005年,Java 语言诞生10周年的SunOne技术大会上,Java语言之父James Gosling做了一场题为“Java技术下一个十年”的演讲。笔者不具备James Gosling 博士那样高屋建瓴的视角,这里仅从Java平台中几个新生的但已经开始展现出蓬勃之势的技术发展点来看- -下后续1 ~ 2个JDK版本内的- -些很有希望的技术重点。 1....

ywl470812087的博客 13万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

深入理解 Java 虚拟机(一)走近 Java

1.1 - 概述Java 总述:Java 不仅是一门编程语言,还是一个由一系列 计算机软件 和 规范 形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统。 移动终端 。 企业服务器 。 大型机等各种场合。 特点:Java 能获得如此广泛的认可,除了它拥有一门 结构严谨、面向对象 的编程语言之外,还有须有不可忽视的有点,主要有如下几点��。它...

qq_38992877的博客 1385

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java虚拟机_深入理解Java虚拟机走近Java

世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的程。概述Java不仅仅是一门编程语言,还是一个由一系列计算机软件和规范形成的技术体系,这 个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合,如图1-1所示。时至今日,Java技术体系已 经吸引了900多万软件开发者,这是全球最大的软件开...

weixin_39945816的博客 295

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

深入理解Java虚拟机之走近Java

概述 Java不仅仅是一门语言,还是一个由一系列计算机软件和规范形成的技术体系,被广泛的应用于嵌入式系统、移动终端、企业服务器等各种场合。java能获得如此广泛的认可,除了它拥有一门结构严谨、面向对象的编程语言之外,还有许多不可忽视的优点: 它摆脱了硬件平台的束缚,实现“一次编写,到处运行”的理想; 它提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄露和

jinrall的专栏 744

深入理解Java虚拟机 - 走近Java

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33709609的博客 364

深入理解 Java 虚拟机 ,让我们走近 Java

从今天开始读《深入理解 Java 虚拟机》一书,并开设了同名专题 深入理解 Java 虚拟机。计划在 2 周内将全书内容概览一遍,并会每天更新我的读书笔记。今天的内容是本书的第一章,主要内容是 Java 语言 和 Java 虚拟机的历史,因为这部分内容我个人没有太多的了解,也就没法加入太多个人写作的内容。 Java 总述:Java 不仅是一门编程语言,还是一个由一系列

AIGeorge的博客 286

深入理解Java虚拟机(学习JVM)第一部分 走近java

深入理解Java虚拟机(第3版)第一部分 走近java,学习笔记。本部分介绍了Java技术体系的过去、现在和未来的发展趋势,并在实践中介绍了如何自己编译一个 OpenJDK 12

weixin_47460834的博客 991

深入理解java虚拟机第一章:走近java

本章主要讲的是java语言的发展历程...

爱摆摊的码农的博客 493

《深入理解java虚拟机》——走近java

一次编写,到处运行 java的技术体系: java程序设计语言 java虚拟机 class文件格式 java API类库 来自第三方Java类库 其中java程序设计语言、java虚拟机、javaAPI类库这三部分统称为JDK,JDK是用于支持Java程序开发的最小环境。 另外,JavaAPI类库中的java SE API子集和java虚拟机统称为JRE,JRE是支持java程序运行的标准环境...

weixin_43991053的博客 512

深入理解Java虚拟机 第一章:走近Java

世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程 ​ 把周志明老师的《深入理解Java虚拟机_JVM高级特性与最佳实践》书中的知识点大概记录下来,方便自己以后的重读。 一、概述 ​ Java不仅仅是一门编程语言,还是一个由一系列软件和规范形成的技术体系,这个体系提供了完整的的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器等...

weixin_30430169的博客 297

深入理解 Java 虚拟机——走近 Java

1.1 - 概述 Java 总述:Java 不仅是一门编程语言,还是一个由一系列 计算机软件 和 规范 形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统。移动终端 。企业服务器 。大型机等各种场合。特点:Java 能获得如此广泛的认可,除了它拥有一门 结构严谨、面向对象 的编程语言之外,还有须有不可忽视的有点,主要有如下几点。它摆脱了硬件平台的束缚...

weixin_34242819的博客 203

深入理解Java虚拟机第三版 第一部分 走近Java

第一章 走近Java 1.2 Java技术体系 JDK:Java程序设计语言、Java虚拟机、Java类库 JRE:Java类库API中的Java SE API子集、Java虚拟机

逐鹿人生的博客 399
上一篇: Spring Cloud入门-汇总篇(Hoxton版本)
下一篇: 深入理解Java虚拟机-Java内存区域与内存溢出异常
RyanJohnson
RyanJohnson 优质创作者: Java技术领域 优质创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 30万+粉丝 285原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值