【学习笔记】深入理解Java虚拟机学习笔记——第10章 前端编译与优化

第10章 前端编译与优化

10.1 概述

1>前端编译器:Javac命令。 【.java文件->.class文件】
2>即时编译器:Hotspot.C1.C2 【.class文件->机器码】
3>提前编译器:JDK的Jaotc等【.java->机器码】

10.2 Javac 编译器

10.2.1 Javac的源码与调试

1>初始化插入式注解处理器
2>解析与填充符号表过程
3>插入式注解处理器,注解处理过程
4>分析与字节码生成

10.2.2 解析与填充符号表

1>词法分析、语法分析
词法:字符流=>标记
语法:标记=>抽象语法树
2>填充符号表
登记信息

10.2.3 注解处理器

lombook通过注解处理器影响了编译器的结果,在字节码中生成了代码

10.2.4 语义分析与字节码生成

1>标注检查
检查变量使用前是否已声明、数据类型匹配等
2>数据及控制流分析
局部变量赋值、方法路径等检查
3>解语法糖
方便于程序员开发的语法,如:泛型、自动装箱等都由在编译期还原为原始基础语法结构

10.3 Java语法糖的味道

10.3.1 泛型

1>Java与C#的泛型
Java:擦除式,字节码中会替换为裸类型,不可进行类型判断、创建对象及数组
c#:具现化式
2>泛型的历史背景
Java向后二进制兼容:JDK1.2的字节码能运行在1.2之后的全部JVM上
3>类型擦除
缺陷:
1.强制类型转换
2.无法使用原生类型作为泛型,不断装、开箱
3.无法获得泛型类型
List< String>与List< Integer>对于JVM来说是相同的
4>值类型与未来的泛型

10.3.2 自动装箱、拆箱、与遍历循环

10.3.3 条件编译

条件编译只能在if(常量)下成立,会自动消除无法达到的语句。

10.4 实战:插入式注解处理器

10.4.1 实战目标

10.4.2 代码实现

可以通过AbstractProcessor相关API,对抽象语法树进行修改,以重新生成词、语法并生成字节码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/84838.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/84838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 区块链与Web3开发指南

https://www.python.org/static/community_logos/python-logo-master-v3-TM.png 区块链基础概念 区块链核心特性 python 复制 下载 class Block:def __init__(self, index, timestamp, data, previous_hash):self.index indexself.timestamp timestampself.data datas…

工业智能体调参闭环:从物料感知到智慧工艺的落地路径

用户定义目标&#xff1a;智能工艺的起点不是机器&#xff0c;而是人 在智能制造系统中&#xff0c;工艺调优的第一步并非直接依赖AI或自动化设备&#xff0c;而是始于用户的明确输入。用户需要在系统中定义产品的工艺要求&#xff0c;包括目标尺寸与规格&#xff08;如长宽高…

【Linux学习笔记】进程间通信之共享内存

【Linux学习笔记】进程间通信之共享内存 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;Linux学习笔记 文章目录 【Linux学习笔记】进程间通信之共享内存前言一. system V共享内存1.1 共享内存数据结构1.2 共享内存函数1.3 共享内存实现通信…

郭碧婷闯入女团赛道 与刘忻张予曦蔡诗芸组成ROLLING SISTERS

近日&#xff0c;郭碧婷与刘忻、张予曦、蔡诗芸组成的女团ROLLING SISTERS正式官宣&#xff0c;并发布《Rolling Life》《Alpha》两首单曲&#xff01; 此次几位姐姐的组合让大家眼前一亮&#xff0c;尤其是郭碧婷造型颠覆以往。银灰色挑染短发搭配棱角分明的黑色烟熏妆&#x…

2025再升级:医疗数智立体化体系V2.0架构简介

在医疗数智立体化体系第一版基础上,融入量子物理的第一性原理计算、人工智能(AI)、高性能云计算(HPC)和标准化机器人自动化整合成“医疗数智立体化体系2.0”,代表了医疗研发未来的重要发展方向。这个体系的核心在于深度融合物理世界规律、智能计算与自动化执行,为医疗AI…

Day40 训练和测试的规范写法

目录 一、彩色和灰度图片测试和训练的规范写法&#xff1a;封装在函数中 单通道图片的规范写法 彩色图片的规范写法 二、展平操作&#xff1a;除第一个维度batchsize外全部展平 图像任务中的张量形状 NLP任务中的张量形状 1. Flatten操作 2. view/reshape操作 总结 三…

Linux 文件 I/O 与标准 I/O 缓冲机制详解

一、什么是标准 I/O&#xff1f;&#xff08;FILE* 接口&#xff09; 标准 I/O 是 C 标准库为我们提供的一套高级文件操作接口&#xff0c;核心基于结构体 FILE&#xff0c;常见函数如&#xff1a; fopen() / fclose() fread() / fwrite() fprintf() / fscanf() fflush() /…

C++的前世今生-C++11

C98&#xff08;ISO/IEC 14882:1998&#xff09; C98 是 C 的第一个标准化版本&#xff08;ISO/IEC 14882:1998&#xff09;&#xff0c;它正式确立了 C 的核心语言特性和标准库。以下是 C98 的主要特性总结&#xff1a; 一、核心语言特性** 模板&#xff08;Templates&…

词编码模型怎么进行训练的,输出输入是什么,标签是什么

词编码模型怎么进行训练的,输出输入是什么,标签是什么 词编码模型的训练本质是通过数据驱动的方式,将离散的文本符号映射为连续的语义向量。 一、训练机制:从符号到向量的映射逻辑 1. 核心目标 将单词/子词(Token)映射为低维向量,使语义相关的词在向量空间中距离更近…

【Linux指南】文件管理高级操作(复制、移动、查找)

引言 在Linux系统管理中&#xff0c;文件的复制、移动与查找是比基础操作更进阶的核心技能&#xff0c;它们构成了高效管理文件系统的"三驾马车"。当我们需要备份重要数据、重构目录结构或在庞大的文件系统中定位目标文件时&#xff0c;cp、mv、find等命令将成为最得…

【栈】-----【小C的记事本】

小C的记事本 题目描述 小C最近学会了 Java 小程序的开发&#xff0c;他很开心&#xff0c;于是想做一个简单的记事本程序练练手。 他希望他的记事本包含以下功能&#xff1a; append(str)&#xff1a;向记事本插入字符串 str&#xff08;英文字符&#xff09;。delete(k)&am…

技能系统详解(2)——特效表现

特效会有个EffectManager用于统一管理所有特效&#xff0c;技能特效只是各类特效中的一种 EffectManager需要提供特效的创建&#xff0c;返回被封装为EffectHandle 每类特效都有各种不同的配置参数&#xff0c;这些配置参数会传递给EffectManager用于生成EffectHandler 为支…

12.OpenCV—基础入门

01读取图像 02创建空白图像 03保存图像 04更改图像亮度 05更改图像对比度 06灰度直方图均衡 07彩色直方图均衡 08五种滤波方式 09形态学操作 10仿射变换 11角度缩放仿射变换 12透视变换 13坐标映射 14模板匹配 15多模板匹配 16查找轮廓线 17轮廓线匹配 17绘制…

【Python】Python之什么是生成器?什么是迭代器?

目录 专栏导读前言什么是迭代器&#xff08;Iterator&#xff09;&#xff1f;迭代器的定义迭代器协议可迭代对象 vs 迭代器自定义迭代器迭代器的优势 什么是生成器&#xff08;Generator&#xff09;&#xff1f;生成器的定义生成器函数生成器表达式复杂的生成器示例生成器的状…

Python中实现简单爬虫并处理数据

在当今数据驱动的时代&#xff0c;能够从互联网上高效地抓取信息变得越来越重要。Python因其简洁易学的特性&#xff0c;成为了编写网络爬虫的首选语言之一。接下来&#xff0c;我将介绍如何使用Python来实现一个基础的网络爬虫&#xff0c;并对收集到的数据进行初步处理。 首先…

免费wordpress主题网

免费WordPress主题网 WP模板牛 WP模板牛是一个提供免费WordPress主题的网站&#xff0c;用户可以在这里找到大量高质量的模板&#xff0c;适用于各种网站类型。该网站致力于为用户提供简单、高效的建站体验。 官网链接&#xff1a; https://wpniu.com 建站哥模板 建站哥模板…

为什么需要MyBatis-Plus条件构造器?

目录 前言 一、传统SQL编写的痛点 二、条件构造器的核心优势 1. 防SQL注入&#xff08;安全性&#xff09; 2. 面向对象编程&#xff08;可读性&#xff09; 3. 动态条件构建&#xff08;灵活性&#xff09; 4. 数据库无关性&#xff08;可移植性&#xff09; 三、典型应…

【从零学习JVM|第九篇】常见的垃圾回收算法和垃圾回收器

前言&#xff1a; 我们知道在堆内存中&#xff0c;会有自动的垃圾回收功能&#xff0c;那今天这篇文章将会向你介绍&#xff0c;这个功能实现的方式&#xff0c;还有实现的对象&#xff0c;接下来就由我来给你们详细介绍垃圾回收的算法和实现算法的回收器。 目录 前言&#…

品牌窜货治理解决方案

在渠道网络的暗潮中&#xff0c;窜货犹如隐秘的漩涡&#xff0c;某知名白酒品牌曾因区域窜货导致终端价格体系崩溃&#xff0c;半年内损失超3亿元。窜货行为不仅破坏市场秩序&#xff0c;更会引发信任危机。随着电商平台的多元化与分销层级的复杂化&#xff0c;品牌方亟需构建一…

车载电子电器架构 --- 法律和标准对电子电气架构的影响

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…