1. NetBeans RCP
概述
基于 Java Swing 的模块化应用框架,由 Apache 基金会维护。
核心技术栈
语言:Java
UI 框架:Swing
模块系统:OSGi-based NetBeans Module System
架构模式:微内核 + 插件化
优势
✅ 成熟的插件化架构
✅ 强大的窗口管理系统(可拖拽、停靠)
✅ Lookup 机制实现松耦合
✅ 适合大型复杂应用
劣势
❌ UI 外观老旧(Swing 风格)
❌ 学习曲线陡峭
❌ 社区萎缩,文档陈旧
❌ 启动慢,内存占用
典型应用
NetBeans IDE
企业级数据管理工具
科学计算软件
代码示例
java
// TopComponent - 窗口组件
@TopComponent.Description(
preferredID = "MyTopComponent",
iconBase = "icon.png"
)
public class MyTopComponent extends TopComponent {
public MyTopComponent() {
setLayout(new BorderLayout());
add(new JLabel("Hello NetBeans RCP"), BorderLayout.CENTER);
}
}
2. Eclipse RCP
概述
基于 SWT/JFace 的企业级应用平台,Eclipse 基金会项目。
核心技术栈
语言:Java
UI 框架:SWT(Standard Widget Toolkit)+ JFace
模块系统:OSGi
依赖注入:Eclipse Context
优势
✅ 高度灵活和可扩展
✅ 原生控件外观(SWT 调用系统 API)
✅ 强大的扩展点机制
✅ 适合超大型应用
劣势
❌ 复杂度极高
❌ 开发效率低
❌ 跨平台一致性差(依赖原生控件)
❌ 学习成本最高
典型应用
Eclipse IDE
IBM Rational 系列工具
MATLAB(部分模块)
代码示例
java
// ViewPart - 视图组件
public class MyView extends ViewPart {
public void createPartControl(Composite parent) {
Label label = new Label(parent, SWT.NONE);
label.setText("Hello Eclipse RCP");
}
public void setFocus() {}
}
3. JavaFX
概述
现代化的 Java GUI 框架,Oracle 开发后转由 OpenJFX 社区维护。
核心技术栈
语言:Java / Kotlin
UI 描述:FXML(XML)或代码
样式:CSS
渲染引擎:Prism(硬件加速)
优势
✅ 现代化 UI,支持 CSS 样式
✅ 场景图(Scene Graph)架构
✅ FXML 分离 UI 和逻辑
✅ 良好的数据绑定机制
✅ 学习曲线平缓
劣势
❌ 从 JDK 11 起需单独引入
❌ 生态不如 Web 技术丰富
❌ 移动端支持弱
❌ 社区活跃度中等
典型应用
JetBrains IntelliJ IDEA(部分 UI)
Oracle SQL Developer
企业桌面客户端
代码示例
java
// Application 主类
public class MyApp extends Application {
@Override
public void start(Stage stage) {
Button btn = new Button("Click Me");
btn.setOnAction(e -> System.out.println("Clicked!"));
Scene scene = new Scene(new StackPane(btn), 300, 200);
scene.getStylesheets().add("style.css");
stage.setScene(scene);
stage.show();
}
}
html
<!-- FXML -->
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<VBox xmlns:fx="http://javafx.com/fxml">
<Button text="Click Me" onAction="#handleClick"/>
</VBox>
4. Electron
概述
使用 Web 技术构建跨平台桌面应用的框架,GitHub 开发。
核心技术栈
语言:JavaScript / TypeScript
渲染引擎:Chromium
运行时:Node.js
UI 框架:任意 Web 框架(React/Vue/Angular)
优势
✅ Web 开发者零门槛
✅ 生态极其丰富(npm)
✅ 调试方便(Chrome DevTools)
✅ 跨平台一致性好
✅ 快速迭代
劣势
❌ 应用体积大(50-150MB)
❌ 内存占用高
❌ 性能不如原生
❌ 启动速度慢
典型应用
VS Code(最成功案例)
Slack
Discord
Teams
Notion
代码示例
javascript
// main.js - 主进程
const { app, BrowserWindow } = require('electron')
app.whenReady().then(() => {
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: { nodeIntegration: true }
})
win.loadFile('index.html')
})
html
<!-- index.html - 渲染进程 -->
<!DOCTYPE html>
<html>
<body>
<div id="app"></div>
<script src="renderer.js"></script>
</body>
</html>
5. Qt
概述
成熟的 C++ 跨平台应用框架,广泛应用于专业和嵌入式领域。
核心技术栈
语言:C++ / QML(JavaScript-like)
UI 框架:Qt Widgets / Qt Quick
图形引擎:Skia / OpenGL
构建工具:qmake / CMake
优势
✅ 性能卓越,接近原生
✅ 真正的跨平台(含嵌入式)
✅ 成熟的商业支持
✅ 适合高性能图形处理
✅ 长期稳定维护
劣势
❌ C++ 学习成本高
❌ 开发效率较低
❌ 许可证复杂(LGPL/商业)
❌ 应用体积较大
典型应用
Adobe Photoshop(部分)
Autodesk Maya
VLC Media Player
WPS Office
Tesla 车载系统
代码示例
cpp
// C++ Widgets
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QLabel label("Hello Qt!");
label.show();
return app.exec();
}
cpp
// QML - 现代化声明式 UI
import QtQuick 2.15
import QtQuick.Controls 2.15
ApplicationWindow {
visible: true
Button {
text: "Click Me"
onClicked: console.log("Clicked!")
}
}
6. Flutter Desktop
概述
Google 开发的跨平台 UI 框架,从移动端扩展到桌面端。
核心技术栈
语言:Dart
渲染引擎:Skia
架构:自绘 UI(不依赖原生控件)
状态管理:Provider/Riverpod/Bloc 等
优势
✅ 一套代码,六个平台(Win/Mac/Linux/iOS/Android/Web)
✅ 高性能,60fps 流畅动画
✅ 热重载,开发效率高
✅ 美观的 Material/Cupertino 设计
✅ 强类型,IDE 支持好
劣势
❌ 桌面端相对年轻
❌ 应用体积中等(20-40MB)
❌ 平台特定功能需插件
❌ Dart 需额外学习
典型应用
Google Pay
Canonical Ubuntu Installer
BMW MyBMW App
新兴创业公司产品
代码示例
Dart
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Flutter Desktop')),
body: Center(
child: ElevatedButton(
child: Text('Click Me'),
onPressed: () => print('Clicked!'),
),
),
),
);
}
}
7.对比:
