什么是 LCGYL Framework?
LCGYL Framework 是一个现代化的 Java 应用开发框架,充分利用 Java 21 的新特性,提供轻量级、高性能、易扩展的开发体验。
核心理念
L - Learning(学习为基)
以学习为基础,框架设计简洁易懂,API 清晰直观,让开发者能够快速上手并深入理解。
C - Coding(代码为刃)
以代码为利刃,提供强大的编程模型和工具,让开发者能够高效地解决实际问题。
G - Growing(成长中超越)
在成长过程中不断突破,框架持续演进,引入最新技术和最佳实践。
Y - Yourself(超越自我)
追求个人能力的持续提升,框架帮助开发者写出更好的代码。
L - Life(赋能人生)
最终通过技术赋能人生,让开发工作更加高效和愉悦。
核心特性
🎯 零依赖核心
核心模块不依赖任何第三方库(除 JDK 21+ 和 SLF4J),保证框架的纯净性和可控性。
gradle
dependencies {
// 核心模块只需要这一个依赖
implementation 'com.lcgyl:lcgyl-framework-core:2.2.0'
}⚡ Java 21 新特性
充分利用 Java 21 的现代化特性:
- Virtual Threads(虚拟线程):高性能并发处理
- Record:简洁的数据类
- Sealed Classes:更安全的类型系统
- Pattern Matching:更优雅的代码
java
// 使用 Record 定义事件
public record UserCreatedEvent(User user, LocalDateTime timestamp) implements Event {
}
// 使用 Sealed Class 定义生命周期
public sealed interface LifecyclePhase
permits Starting, Running, Stopping, Stopped {
}
// 使用 Virtual Threads 处理并发
eventBus.publishAsync(event); // 自动使用虚拟线程🧩 插件化架构
完整的插件生命周期管理,支持热加载和扩展点机制。
java
public class MyPlugin implements Plugin {
@Override
public void initialize(PluginContext context) {
// 插件初始化
}
@Override
public void start() {
// 插件启动
}
}💉 轻量级 IoC/DI
简单而强大的依赖注入容器:
java
@Component
public class UserService {
private final UserRepository repository;
@Inject
public UserService(UserRepository repository) {
this.repository = repository;
}
}📻 事件驱动
基于虚拟线程的高性能事件总线:
java
// 发布事件
eventBus.publish(new UserCreatedEvent(user));
// 订阅事件
@Subscribe
public void onUserCreated(UserCreatedEvent event) {
// 处理事件
}🔧 配置管理
灵活的配置管理,支持多种格式和环境:
properties
# application.properties
app.name=MyApp
app.server.port=8080java
@Value("app.name")
private String appName;与其他框架对比
vs Spring Framework
| 特性 | LCGYL Framework | Spring Framework |
|---|---|---|
| 核心依赖 | 零依赖(仅 JDK 21+) | 大量依赖 |
| 启动速度 | 极快(毫秒级) | 较慢(秒级) |
| 内存占用 | 极小 | 较大 |
| 学习曲线 | 平缓 | 陡峭 |
| 扩展性 | 插件化 | 基于 Bean |
| Java 版本 | 21+ | 17+ |
| 并发模型 | Virtual Threads | 传统线程池 |
LCGYL 优势:
- ✅ 更轻量,启动更快
- ✅ 更现代,使用 Java 21 新特性
- ✅ 更简单,API 更直观
- ✅ 更灵活,插件化架构
Spring 优势:
- ✅ 生态更成熟
- ✅ 社区更大
- ✅ 企业级支持
最佳选择:
- 新项目、微服务 → LCGYL Framework
- 大型企业应用 → Spring Framework
- 两者结合 → LCGYL + Spring 集成
vs Micronaut
| 特性 | LCGYL Framework | Micronaut |
|---|---|---|
| 编译时处理 | 运行时 | 编译时 |
| 反射使用 | 最小化 | 无反射 |
| 启动速度 | 极快 | 快 |
| 学习曲线 | 平缓 | 中等 |
| 中文文档 | 完善 | 较少 |
vs Quarkus
| 特性 | LCGYL Framework | Quarkus |
|---|---|---|
| GraalVM 支持 | 计划中 | 原生支持 |
| 开发模式 | 热重载 | 热重载 |
| 扩展生态 | 成长中 | 丰富 |
| 国内支持 | 优秀 | 一般 |
适用场景
✅ 适合使用
微服务应用
- 快速启动
- 低内存占用
- 高并发处理
新项目开发
- 现代化技术栈
- 简洁的 API
- 快速迭代
学习和教学
- 代码简洁易懂
- 完善的中文文档
- 活跃的社区
高性能应用
- Virtual Threads
- 零依赖核心
- 优化的事件处理
插件化系统
- 完整的插件机制
- 热加载支持
- 灵活的扩展点
⚠️ 不太适合
需要大量 Spring 生态的项目
- 建议使用 Spring 或 LCGYL + Spring 集成
需要 GraalVM 原生镜像
- 目前还在规划中
团队不熟悉 Java 21
- 需要学习成本
设计原则
1. 简单优于复杂
API 设计追求简洁直观,避免过度抽象。
java
// ✅ 简单直观
LcgylApplication.run(MyApp.class, args);
// ❌ 过度复杂
new ApplicationBuilder()
.withConfiguration(config)
.withEnvironment(env)
.build()
.run(args);2. 约定优于配置
提供合理的默认值,减少配置工作。
java
// 默认扫描主类所在包
@Component
public class MyApp {
}
// 需要时才指定
@ComponentScan("com.example")
public class MyApp {
}3. 组合优于继承
使用组合和接口,而不是复杂的继承体系。
java
// ✅ 组合
@Component
public class UserService {
@Inject
private UserRepository repository;
@Inject
private EventBus eventBus;
}
// ❌ 继承
public class UserService extends BaseService {
}4. 显式优于隐式
重要的行为应该显式声明,避免魔法。
java
// ✅ 显式声明
@Component
@Transactional
public class UserService {
}
// ❌ 隐式行为
public class UserService {
// 自动事务?不清楚
}5. 性能优先
在保证易用性的前提下,追求极致性能。
- 使用 Virtual Threads 提升并发性能
- 最小化反射使用
- 优化启动速度
- 减少内存占用
版本说明
当前版本
2.2.0
版本号格式:{Major}.{Minor}.{Patch}
版本历史
- 2.2.0 - 当前稳定版本(发布配置修复)
- 2.1.0 - 首个 v2.1 正式版本
- 2.0.x - 插件化架构基础版本
兼容性
- JDK:21+(必需)
- Gradle:8.0+
- Maven:3.8+
- Spring Boot:3.3.5+(可选)
快速开始
准备好开始使用了吗?
获取帮助
参与贡献
LCGYL Framework 是开源项目,欢迎贡献!