导语

在非黑即白的静态编译语言和动态脚本语言的分类方法中,java的立场显得很尴尬。首先java是静态强类型语言,所以java源代码是需要编译的。但是javac编译后的产出物并不是和传统的编译语言一样的可以在特定OS上无依赖运行机器码。而是一种介于java源码和硬件机器码之间且运行需要依赖JVM抽象层的中间格式,也就是本文讨论的中心:jvm字节码。注意用词,字节码是属于JVM的,是面向JVM的字节码。

JVM生态分为如下3个部分:java原生语法和与之配套的源码编译器,jvm字节码规范,jvm实现规范。字节码是一套协议或者中间抽象层,是被编译器和虚拟机共同遵守的协议。编译器将源码解析处理成规范的字节码,jvm读取字节码文件magic,装载解析字节码。jvm语言生态如此蓬勃:kotlin,groovy等,都是因为有了字节码这层抽象。不管你定义什么样或现代或简洁的新的语言语法,只要你能配套的实现与之相关的编译器,能够将源码处理成规范的字节码,那么你就能在jvm上运行。字节码的来源对于jvm来说是透明的,jvm才不知道你是java还是kotlin编译来的呢。它只对字节码规范和jvm规范负责。
综上,JVM生态中,无论是上层语言语法层次,还是底层JVM装载运行层次,都只用分别对JVM字节码规范负责。JVM字节码规范的重要性不言而喻。这也是本文讨论的重点。
注意:JVM语言百花齐放的本质原因就是因为JVM没有和Java的语言语法特性绑定,而是和中间字节码绑定,这应该是每一个java开发同学的常识

字节码初探

转载于:https://www.cnblogs.com/jialin16/p/8661772.html

深入解析Java字节码和字节码操作类库ASM源码解析相关推荐

  1. 字节跳动Android三面视频解析:framework+MVP架构+HashMap原理+性能优化+Flutter+源码分析等

    前言 对于字节跳动的二面三面而言,Framework+MVP架构+HashMap原理+性能优化+Flutter+源码分析等问题都成高频问点!然而很多的朋友在面试时却答不上或者答不全!今天在这分享下这些 ...

  2. 面试官系统精讲Java源码及大厂真题 - 20 SynchronousQueue 源码解析

    20 SynchronousQueue 源码解析 更新时间:2019-10-15 11:19:50 只有在那崎岖的小路上不畏艰险奋勇攀登的人,才有希望达到光辉的顶点. --马克思 引导语 Synchr ...

  3. 查看Hotspot源码,查看java各个版本源码的网站,如何查看jdk源码

    java开发必知必会之看源码,而看源码的第一步则是找到源码

  4. java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

    好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...

  5. 基于tutk方案的p2p源码_基于JAVA的局域网文件共享平台P2P实训项目源码(毕业设计 课程设计)...

    [实例简介] 基于JAVA的局域网文件共享平台P2P实训项目源码(毕业设计 课程设计). 可直接运行.做毕业设计.课程设计或者想研究下技术的可以下载学习.需要更多资源的可以关注我. [实例截图] [核 ...

  6. java计算机毕业设计钢材出入库管理系统(附源码、数据库)

    java计算机毕业设计钢材出入库管理系统(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe ...

  7. Java毕设项目城市公交系统计算机(附源码+系统+数据库+LW)

    Java毕设项目城市公交系统计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ecli ...

  8. JAVA毕业设计江西婺源旅游文化推广系统计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计江西婺源旅游文化推广系统计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计江西婺源旅游文化推广系统计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B ...

  9. 基于Java毕业设计校园社团管理平台演示录像2021源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计校园社团管理平台演示录像2021源码+系统+mysql+lw文档+部署软件 基于Java毕业设计校园社团管理平台演示录像2021源码+系统+mysql+lw文档+部署软件 本源码技 ...

最新文章

  1. 【嵌入式开发】 ARM 汇编 (指令分类 | 伪指令 | 协处理器访问指令)
  2. 什么是百度竞价创意断句符
  3. 【风控场景】互利网上数字金融典型场景: 消费金融
  4. ANDROID L日志系统——JAVAAPI与LIBLOG
  5. [Golang]slice的用法以及和数组的区别
  6. 《深入理解 Spring Cloud 与微服务构建》第一章 微服务简介
  7. 64位Eclipse运行时提示“Failed to load the JNI shared library \Java\jre6\bin\client\jvm.dll”的一个解决方案
  8. group by 按什么区别_失业补助金和失业保险金有什么区别,按什么标准领?不知道亏大了...
  9. python之路 -- 并发编程之进程
  10. Flutter实战之顶部导航栏以及ListView简单应用
  11. Rust:字符串数组的拼接、与 String 、 str的选择
  12. angularJs模版注入的两种方式
  13. 【GPU结构与CUDA系列2】GPU硬件结构及架构分析:流多处理器SM,流处理器SP,示例架构分析
  14. SlideLive:支持图表类PPT模板下载
  15. Google ptorobuf相关知识
  16. 各大IT公司技术架构一览
  17. 雅诗兰黛公司宣布品牌集群领导层更新
  18. 冒死推荐一些值得推荐的 Java 练手项目
  19. 解决java报错class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.Comparable
  20. C语言——PAT 乙级(1002.读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。)

热门文章

  1. Token 认证的来龙去脉
  2. Hadoop HDFS概念学习系列之shell命令使用HDFS的一些其他命令(十九)
  3. Blend4Web —— 开源的 WebGL 框架
  4. Linux常用命令--文件(夹)查找之find命令
  5. 贪吃蛇系列之一——引入
  6. 收藏老外的jquery web 按钮插件
  7. 从表现现象查找电脑问题的根源
  8. Spring quartz 并发性研究
  9. html中嵌入iframe进行父子页面参数传递
  10. 点击按钮显示div并向div中传递参数