Skip to content
/ rojlib Public

又一个多功能Java库(轮子)。提供高度可扩展的7z文件工具、原创的按需解析字节码处理框架、强大的配置序列化器、以及为Minecraft开发设计的MCMake构建工具。同时,还提供了高性能内部API调用和FastJNI实现。

License

Notifications You must be signed in to change notification settings

roj234/rojlib

Repository files navigation

RojLib v3.0: 模块化的多功能Java库集

RojLib v3.0 标志着一次重要的模块化重构,我们成功将库的核心体积减少了 50%,尽管 core 模块仍存在一些耦合。

自此版本起,所有模块的编译都必须通过我们的 toolchain 进行。
由于作者的个人喜好,您可能会发现一些非传统的文件布局——这些都是为了简化作者开发流程而做出的调整。
我们正在积极准备 编译教程2.0版,敬请期待。

目录

以下是 RojLib 中精选的模块和功能,按照功能领域和字母顺序排列:


Unconscious 响应式Web前端框架

  • v1.6.0
  • Svelte家的Vue风味的React
  • README

roj.compiler - Lava程序语言

教程:


roj.archive - 高性能压缩库

ZIP 归档

  • 读写 | 新建
  • 特性: 任意字符编码、AES/ZipCrypto加密、分卷、增量修改、仅读取CEN(大幅提速)、数据复制(无需解压重压缩)。
  • 复制数据: 可以从已压缩的ZIP中直接复制数据,不需要解压并重新压缩,这可以大大提升性能
  • 扩展属性: Info-ZIP UnicodePath, NTFS高精度时间戳。

7z 归档


roj.asm - 定制字节码处理框架

一款完全原创的字节码处理框架,在性能、内存占用和易用性方面均优于ObjectWeb的ASM库(至少对本人而言)。

  • 按需解析的设计理念保证了极致的速度和低内存消耗。

  • 不支持的功能: 方法内部注解(TypeAnnotation属性)。

  • 应用:

nixim - 先进的字节码注入工具

受SpongePowered Mixin启发,nixim 提供强大的字节码注入能力,同时不产生任何GC开销
所有注解的详细使用说明可在 roj.asmx.injector 包中查阅。

功能: 注入类、修改方法、实现接口。

  • 在方法头、尾或中间插入代码。
  • 删除或替换方法。
  • 替换常量值、求值语句或方法调用。
  • 通过模糊匹配替换连续(不带跳转语句的)代码段。

示例图片

类映射器GUI


roj.collect - 高效集合与数据结构


roj.concurrent - 并发工具集


roj.config - 强大配置解析器

支持多种常见配置文件格式,提供统一的访问接口和人性化错误提示。

  • 支持格式: JSON, YAML, TOML, INI, XML, NBT, MSGPACK, Torrent (Bencode), CSV, Xlsx。
  • 解析入口和工具类 当然也可以不用它
  • 特性:
    • 包括XML在内,所有配置类型使用统一结构
    • JSON, YAML, NBT, MSGPACK支持访问者模式(流式)的读写。
    • 流式对象序列化
    • 自动识别编码(仅支持中英,可关闭)。
    • JSONPath查询:形如a.b[2].c,参见CEntry#query
    • XML支持XPath查询,参见Node#querySelector
    • Xlsx和Csv支持流式读写,位于roj.config.table

标准化且直观的错误提示 (需等宽字体)

解析错误:
  Line 39: "最大线程数": 96, , ,
---------------------------^
总偏移量: 773
对象位置: $.通用.
原因: 未预料的: ,
...

roj.crypt - 密码学与安全工具

  • JAR签名和验证和自定义ASN.1读写实现。
  • RS纠错码
  • 高效随机抽样 (FPE)
    • 这是一种空间复杂度为 O(1) 的数组打乱算法,适合大规模数据集的随机抽样。
    • 虽然它引入了一定的时间复杂度开销( O(n log n) 相比传统算法的 O(1) ),但其空间复杂度极为高效,
    • 数组长度需要小于 2^64,如果使用BigInteger,那么无此限制,空间复杂度也会提升到 O(log n)

roj.ebook - 电子书工具


roj.gui - GUI相关库


roj.http - HTTP客户端与服务器

支持高性能HTTP通信。


roj.io - I/O实用工具


roj.math - 数学工具


roj.net - 网络请求管线

  • MSSEngine: 简单安全套接字协议(My Secure Socket),避免Java内置SSL的复杂性。
  • 已实现: 加密方式协商、前向安全、0-RTT。

roj.plugin - 插件管理系统

一个功能丰富且高度可配置的插件系统。


roj.ci - 持续集成与构建 (MCMake)

MCMake 是一款主要为Minecraft模组开发设计的轻量级、快速构建工具。纯Java实现,不依赖外部构建系统。

  • 诞生背景: 2019年,为了解决ForgeGradle的缓慢和网络依赖,我开始制作MCMake。
  • 核心目标: 简化Minecraft模组、插件和标准Java项目的开发流程,将开发者精力集中于代码。
  • 优势: 不联网、体积小、速度快。
  • 特性:
    • 增量编译、自动编译、热重载、屏蔽警告(如Java 8 Unsafe 警告)。
    • 多版本、多项目支持。
    • MIXIN、AT、NIXIM(我的字节码注入工具)支持。
    • 项目依赖管理、自定义构建、变量替换、Maven集成。
    • 大量自定义注解。
    • 不在用户文件夹写入任何文件!
  • 独家特性: 支持没有任何其他开发工具支持的子类实现重映射,这个bug直到2025年还在1.19.2最后一个版本的灾变模组里出现!
    • 我的映射器能自动发现并修复,详情见Mapper#S2_3_FixSubImpl

示例图片

MCMake工具的界面


roj.plugins - 实用插件集

一系列功能性插件,解决各种实际需求。


roj.reflect - 反射优化与高级特性

解决Java反射的高级需求和性能瓶颈。


roj.sql - 数据库操作


roj.text - 文本处理工具


roj.ui - 命令行界面 (CLI)

需要支持虚拟终端转义序列的TTY(Windows可能需要 libcpp.dll)。


roj.util - 通用实用工具


系统属性 (Properties)

您可以通过设置以下系统属性来配置RojLib的行为:

  • int roj.nativeDisableBit: [禁用native优化] (RojLib)
  • int roj.cpuPoolSize: [CPU Count] (TaskPool)
  • String roj.text.outputCharset: [UTF-8] (TextWriter)
  • Path roj.archiver.temp: [.] (ArchiverUI)
  • File roj.compiler.i18n: [null] (Lava Compiler)
  • Path roj.compiler.symbolCache: [.lavaCache]
  • Enum<auto, off, strip, force> roj.tty: [auto]
  • boolean roj.config.noRawCheck

Libcpp.dll 支持

Libcpp.dll 提供了额外的平台特定优化:

  • Windows 平台:
  • 共享内存、重用端口、ANSI终端转义。
  • Fast LZMA2 (WIP)。
  • 通用功能 (跨平台):
  • AES-NI、BsDiff、XXHash。

Q: 为什么不为Linux做优化?
A: 因为没有人问 ×


特别鸣谢

Gemini 2.5

  • 大部分readme都是它polish的!

DeepSeek

  • S128i的基础结构
  • RS纠错码的部分重构
  • 名称标准化的大部分建议
  • 大量Javadoc
  • 部分前端页面
  • 从9月开始的一些commit message

JFormDesigner

  • 让我不用碰恶心的AWT界面

STM32F10X

  • 让我意识到C语言多么简单

@huige233

  • 提供了很多梗图
  • 提供了子模块的命名建议
  • 提供了一些乱七八糟还被我真的实现了的需求
  • 在我学会用IDA之前提供了一些Assembler中的opcode

@icybear

  • 讨论&学习有关asm的内容
  • 在我拆compiler和完成FrameVisitor时提供了一定帮助

(int)*(void**)

  • 提供编译器语言文件使用resource bundle的建议以支持IDE补全
  • 在我无聊的时候陪我聊天

@huzpsb

  • 提供了一个很好的群组用来交流

黄豆

  • 为7z压缩GUI提供了设计建议
  • 找到了一些bug
  • 给我的硬盘增加了许多写入量
  • 为Lava语言提供了有关【无符号数据类型】的建议

ETC

  • 提供EpubWriter的新模板
  • 汇报EpubWriter的bug

CraftKuro

  • 帮助安装和配置OpenWRT
  • 提供情绪价值(吉祥物 ×)
  • 提供Kuropack的命名(其实是我硬要贴上去的)
  • 提供部分文本
  • 试玩游戏

咖喱人

  • 提供很多很多支持 (真的)
  • 提供编程天赋 (雾, 但大概也是真的)

About

又一个多功能Java库(轮子)。提供高度可扩展的7z文件工具、原创的按需解析字节码处理框架、强大的配置序列化器、以及为Minecraft开发设计的MCMake构建工具。同时,还提供了高性能内部API调用和FastJNI实现。

Topics

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •