用途:帮助理解 BoxLang(JRE 21+ 的动态 JVM 语言,运行时把源码编译为 Java 字节码)的内部架构,用于构建模块、BIF、拦截器与自定义语言扩展。
主要能力:BoxRuntime 是中心单例与服务定位器,可访问 InterceptorService(事件总线)、ModuleService(模块管理)、CacheService、AsyncService(执行器与 future)、SchedulerService、DataSourceService、FunctionService(BIF 注册表)、ComponentService、ClassLocator、Configuration、TypeService。IBoxContext 构成执行上下文链(脚本/Web 请求、Application、Session、Function、Closure、Lambda),支持 getScopeNearby、scopeFindNearby、invokeFunction;未限定变量按 local、arguments、variables、url/form/cgi/cookie、request、session、application、server 顺序解析。DynamicObject 包装 Java 对象以 BoxLang 风格调用方法。所有值实现 IBoxType(BoxArray、BoxStruct、BoxString、BoxInteger、BoxDouble、BoxBoolean、BoxNull),Key 为驻留字符串。编译管线为源码→ANTLR4 词法/语法→AST→Java AST→Java 字节码→ClassLoader,可用 boxlang --bx-printast 调试 AST。每个模块拥有独立 ClassLoader 隔离 libs/ 依赖。Attempt 是空安全的不可变值包装,支持 orElse、map、filter、toBeType、toBeBetween、toMatchRegex、toSatisfy 等校验;casters 包提供 StringCaster、IntegerCaster 等返回 CastAttempt。实现 IService 可创建由运行时管理生命周期的自定义服务,通过 registerService 注册。
使用方式:以 Java 引入 ortus.boxlang.runtime 等包,用 BoxRuntime.getInstance(true) 启动,创建 ScriptingRequestBoxContext 后调用 executeStatement 或 executeTemplate,最后 shutdown。CDS 可用 java -Xshare:dump -XX:SharedArchiveFile=boxlang.jsa -jar boxlang.jar 生成、-Xshare:on 启用。
适用场景:模块与 BIF 开发、Java 应用内嵌 BoxLang、性能与启动优化。
限制:资料未提供收费、价格、平台支持范围与效果数据;具体 API 行为以官方源码与文档为准。