Skip to content

什么是 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=8080
java
@Value("app.name")
private String appName;

与其他框架对比

vs Spring Framework

特性LCGYL FrameworkSpring Framework
核心依赖零依赖(仅 JDK 21+)大量依赖
启动速度极快(毫秒级)较慢(秒级)
内存占用极小较大
学习曲线平缓陡峭
扩展性插件化基于 Bean
Java 版本21+17+
并发模型Virtual Threads传统线程池

LCGYL 优势

  • ✅ 更轻量,启动更快
  • ✅ 更现代,使用 Java 21 新特性
  • ✅ 更简单,API 更直观
  • ✅ 更灵活,插件化架构

Spring 优势

  • ✅ 生态更成熟
  • ✅ 社区更大
  • ✅ 企业级支持

最佳选择

  • 新项目、微服务 → LCGYL Framework
  • 大型企业应用 → Spring Framework
  • 两者结合 → LCGYL + Spring 集成

vs Micronaut

特性LCGYL FrameworkMicronaut
编译时处理运行时编译时
反射使用最小化无反射
启动速度极快
学习曲线平缓中等
中文文档完善较少

vs Quarkus

特性LCGYL FrameworkQuarkus
GraalVM 支持计划中原生支持
开发模式热重载热重载
扩展生态成长中丰富
国内支持优秀一般

适用场景

✅ 适合使用

  1. 微服务应用

    • 快速启动
    • 低内存占用
    • 高并发处理
  2. 新项目开发

    • 现代化技术栈
    • 简洁的 API
    • 快速迭代
  3. 学习和教学

    • 代码简洁易懂
    • 完善的中文文档
    • 活跃的社区
  4. 高性能应用

    • Virtual Threads
    • 零依赖核心
    • 优化的事件处理
  5. 插件化系统

    • 完整的插件机制
    • 热加载支持
    • 灵活的扩展点

⚠️ 不太适合

  1. 需要大量 Spring 生态的项目

    • 建议使用 Spring 或 LCGYL + Spring 集成
  2. 需要 GraalVM 原生镜像

    • 目前还在规划中
  3. 团队不熟悉 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 是开源项目,欢迎贡献!

Released under the Apache License 2.0