Google Android系统中侵犯Oracle的专利说明

2023-10-22 08:48

本文主要是介绍Google Android系统中侵犯Oracle的专利说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天看了info Q上关于Google公司和Oracle公司的专利诉讼

其中Oracle公司的一项专利(其实是Sun公司申请的)6061520比较有意思,下面简要的介绍一下这一项专利。

这项专利主要涉及到java语言中静态数组的初始化。这一项专利是关于在jvm虚拟机执行static方法中,对数组初始化复制的优化措施。专利中定义一个预加载器,这个预加载器通过模拟执行一个class文件的<clinit>方法(也就是static语句),把<clinit>方法中的指令进行优化,并发优化后的指令保存到.mclass文件中。jvm虚拟机在执行class文件的时候,如果发现有<clinit>方法,则执行.mclass文件中指令,jvm虚拟器需要识别这些优化后的指令。由于class文件中字节码指令都是jvm可识别的,预加载器就是加强了class文件的字节码指令,需要jvm对这些指令实现进行支持。

下面这幅图描述了预加载器模拟执行class文件中的<clinit>方法,生成.mclass文件的过程

对于移动设备,内存相对于pc机还是比较小的,通过对静态数组初始化指令进行优化,可以大大地减少字节码指令,从而减少加载到内存中的class文件大小。

下面可以看一个演示,下面代码是静态初始化5个int类型数组的字节码:

 public static final int a[] = { 1, 2, 3, 4, 5 };

 0:   iconst_5
1:   newarray int
3:   dup
4:   iconst_0
5:   iconst_1
6:   iastore
7:   dup
8:   iconst_1
9:   iconst_2
10:  iastore
11:  dup
12:  iconst_2
13:  iconst_3
14:  iastore
15:  dup
16:  iconst_3
17:  iconst_4
18:  iastore
19:  dup
20:  iconst_4
21:  iconst_5
22:  iastore
23:  putstatic       #10; //Field a:[I

对于一个简单的初始化指令,需要用很多字节码来完成,这个专利就对此进行了优化,优化后的指令格式如下

CONSTANT_Array T_INT 4 1,2,3,4

大大的减少了字节码的数量

这个在内存资源极其紧张的移动设备上,还是可以节省很多内存空间的。

 

专利的详细信息见 http://worldwide.espacenet.com/publicationDetails/biblio?FT=D&date=20000509&DB=worldwide.espacenet.com&locale=en_EP&CC=US&NR=6061520A&KC=A&ND=4

 

这篇关于Google Android系统中侵犯Oracle的专利说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/260369

相关文章

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

redis和redission分布式锁原理及区别说明

《redis和redission分布式锁原理及区别说明》文章对比了synchronized、乐观锁、Redis分布式锁及Redission锁的原理与区别,指出在集群环境下synchronized失效,... 目录Redis和redission分布式锁原理及区别1、有的同伴想到了synchronized关键字

MySQL 临时表创建与使用详细说明

《MySQL临时表创建与使用详细说明》MySQL临时表是存储在内存或磁盘的临时数据表,会话结束时自动销毁,适合存储中间计算结果或临时数据集,其名称以#开头(如#TempTable),本文给大家介绍M... 目录mysql 临时表详细说明1.定义2.核心特性3.创建与使用4.典型应用场景5.生命周期管理6.注

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按