全网唯一标准王
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210458243.4 (22)申请日 2022.04.28 (71)申请人 华东师范大学 地址 200241 上海市闵行区东川路5 00号 (72)发明人 汪庆顺 窦亮 贺樑  (74)专利代理 机构 上海蓝迪专利商标事务所 (普通合伙) 31215 专利代理师 徐筱梅 张翔 (51)Int.Cl. G06F 8/30(2018.01) G06F 8/41(2018.01) G06F 9/445(2018.01) (54)发明名称 一种非侵入式Java开源软件的二次开发方 法 (57)摘要 本发明公开了一种非侵入式Java开源软件 的二次开发方法, 其特点是该方法基于运行时字 节码修改的开源软件二次开发, 具体包括: 插件 开发和动态替换等步骤, 所述插件开发使用Java 语言编写各个指定方法被修改后的程序逻辑并 将代码编译为插件; 所述动态替换包括: 读取插 件开发步骤中编译打包后的插件, 以及修改原开 源软件的字节码加载流程, 当包含指定方法的字 节码加载时, 将其内容动态地替换为对应插件 方 法的字节码 。 本发明与现有技术相比具有满足企 业在不直接修改源代码的情况下进行二次开发 的需求, 解决了Java开源软件二次开发过程中上 游代码与二次开发代码混杂导致难以维护的问 题, 通过将二次开发代码独立为插件, 提高了开 发效率并降低了维护难度。 权利要求书1页 说明书4页 附图4页 CN 114895882 A 2022.08.12 CN 114895882 A 1. 一种非侵入式Java开源软件的二次开发方法, 其特征在于采用非侵入式的插件方 法, 对Java开源 软件的功能进 行拓展或修改, 将二次开 发代码独立为插件, 其方法具体包括 以下步骤: a步骤: 插 件开发 基于开发套件提供的应用程序接口, 指定原开源软件中需要被修改的方法, 使用Java 语言编写各个 被指定的方法被修改后的程序逻辑, 将上述代码编译为插 件; b步骤: 动态替换 读取步骤a中编译打包后的插件, 修改原开源软件的Java字节码加载流程, 使得在加载 包含插件中指 定方法的字节码时, 将该方法相关的字节码动态地替换为对应插件方法的字 节码。 2.根据权利要求1所述的非侵入式Java开源软件的二 次开发方法, 其特征在于所述a步 骤具体包括: a‑1: 基于开发套件提供的应用程序接口, 使用Java语言编写代码来指定原开源软件中 应当被修改的方法为目标 方法, 用于替换目标 方法的方法为插 件方法; a‑2: 使用Java语言编写a ‑1步骤中所述插 件方法的程序; a‑3: 将上述代码编译并打包为插件格式, 所述插件格式根据开发套件的具体实现决 定。 3.根据权利要求1所述的非侵入式Java开源软件的二 次开发方法, 其特征在于所述b步 骤具体包括: b‑1: 读取a步骤中编译打包后的插 件, 获取各个目标 方法及对应的插 件方法; b‑2: 在原开源软件运行时, 通过JVM提供的Java  Agent机制拦截其类加载 过程; b‑3: 在包含目标方法的类被加载时, 修改将要被加载的字节码, 使用该目标方法所对 应插件方法的字节码替换原有的字节码。权 利 要 求 书 1/1 页 2 CN 114895882 A 2一种非侵入式Java开源软件的二次 开发方法 技术领域 [0001]本发明涉及 应用程序开发技术领域, 具体地说是一种非侵入式的对Java开源软件 的功能进行拓展或修改的二次开发方法。 背景技术 [0002]随着企业规模扩大和业务增加, 企业内部期望有统一、 成熟的软件工具支持各个 部门的日常办公, 从而提高工作效率。 目前, 很少有企业会从零搭建自身使用的各种软件工 具, 因为这种方式成本高昂, 且将工具完善到足以支撑大规模的使用也需要很长的时间。 一 般来说, 企业会复用现有开源软件进行二次开发定制, 扩展或修改这些开源软件的功能以 满足自身的领域需求。 [0003]虽然许多开源软件提供了扩展接口或插件机制以满足用户定制功能的需求, 但这 些软件的可自定义程度往往有限, 企业用户经常需要通过直接修改源代码的方式实现自身 的需求。 [0004]直接修改软件源代码的方式有两个主要的弊端: 第一, 如果用户直接修改软件源 代码, 其所插入的定制代码往往分散在软件项目的多个地方, 并混杂在原始代码中, 这给后 续的维护工作带来了 极大的挑战。 不难想象, 在经历数轮开 发迭代以及与上游代码 (开源软 件官方维护者公开发布的代码) 的合并之后, 这些定制代码 将变得非常难以跟踪和维护。 [0005]第二, 被复用的开源软件本身也会持续更新, 而用户所做的修改并不总会被上游 合并。 一方面是因为这些修改可能包含保密信息, 另一方面是因为领域专有的需求并不一 定与上游的原始版本兼容。 但是, 用户往往又希望软件和上游保持同步以获取新版本中更 新的功能或是对性能的改进。 在没有其他选择 的情况下, 用户必须在每次版本更新时将上 游代码与本地 修改合并。 [0006]现有技术的开源软件进行二次开发的, 其定制代码经常会与上游更新的代码冲 突, 即使使用了版本控制工具, 这 一过程也是十分耗时且容 易出错的。 发明内容 [0007]本发明的目的是针对现有技术的不足而设计 的一种非侵入式Java开源软件的二 次开发方法, 采用非侵入式的插件方法, 对Java开源软件的功能进行拓展或修改以及开发 套件支持, 从而满足企业在不直接修改源代码的情况下进行二次开发的需求, 不需要原开 源软件本身提供扩展接口或者插件机制, 解决了Java开源 软件二次开 发过程中上游代码与 二次开发代码混杂导 致难以维护的问题, 提高了开发效率并降低了维护难度。 [0008]本发明的目的是这样实现的: 一种非侵入式Java开源软件的二次开发方法, 其特 点是采用一种非侵入方式对J ava开源软件的功能进 行拓展或修改, 将二次开 发代码独立为 插件, 其方法具体包括以下步骤: a步骤: 插 件开发 根据二次开发的实际需求, 基于开发套件提供的应用程序接 口, 指定原开源软件说 明 书 1/4 页 3 CN 114895882 A 3

.PDF文档 专利 一种非侵入式Java开源软件的二次开发方法

文档预览
中文文档 10 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共10页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种非侵入式Java开源软件的二次开发方法 第 1 页 专利 一种非侵入式Java开源软件的二次开发方法 第 2 页 专利 一种非侵入式Java开源软件的二次开发方法 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 00:02:32上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。