Java桌面GUI库
感觉用Java开发web app是非常普遍的,工具啊,库啊都非常丰富,那么如果用Java开发一个普通的桌面应用,有哪些GUI库可供选择呢?
一、AWT
Abstract Window Toolkit, 是Java中引入最早的GUI库,它是对native system的一个封装,真正的窗口渲染还是由操作系统功能提供的,这使得用awt写的UI,其在不同的系统上显示是不一样的 - 都是按照目标系统的风格显示的。
AWT提供了两个层面的Java API:一个是对native system的窗口,事件等基本机制的封装; 二是提供了如button,checkbox等现成的控件。
AWT是JFC[1]的一部分
二、Swing
AWT和Swing都是JavaSE的组成部分,但Swing提供了更为丰富的功能与控件,如 tabbed panel, scroll panes, trees, tables和lists等
而且因为Swing使用Java2D实现,所有代码都是java,无需依赖于native system,因此,其look&feel可以在不同系统建保持一致 - 但你同时又可以调整让其以native system的风格显示,可以说更加灵活。
Swing采用了MVC架构。
三、 SWT
Standard Widget Toolkit, Eclipse出品,和AWT一样,SWT同样也是使用JNI访问native system api实现,使用SWT的程序是跨平台的,但是SWT的实现本身,却需要为每个平台都实现一份。
SWT是集合了Swing和AWT的一些特点:它和AWT一样调用了native函数,运行效率高且保持了native的look&feel,但同时它有提供了Swing一样强大的功能和丰富的控件。
虽然SWT本身不支持MVC架构,但Eclipse提供了另一个基于SWT的高层次的库:JFace,JFace不仅支持MVC架构,并且提供高层次的控件与UI机制, 如Viewer,Wizard, Action等
四、QT jambi
这是一个对著名C++ GUI库QT的java 封装,如果熟悉QT的话,用这个应该会比较贴心。
但Qt Jambi在10年被诺基亚放弃,而Qt又于近日被诺基亚放弃(12年五、六月份左右),玩去昂考opensource的力量在支撑,其前景有待考虑。
五、JavaFx
JavaFx是一种更高层次的GUI framework,一般可以用来构建internet、desktop、mobile、game console等UI,其竞争者有AJAX,Flash,Silverlight。
这个可能不是做一个简单的Java Desktop Application的好选择。
GUI Designer
开发GUI程序,而没有一个UI designer的话会是非常低效的,MyEclipse提供了一个针对Swing的Swing GUI Designer 10.6 [2],但是目前网络上多数指向它的链接都无法访问,据说其MyEclipse已经停止开发它了,所以感觉价值不是很高。但是google又一次大度的给出了Java GUI Design方面的神器:WindowsBuilder, 支持Swing和SWT,相当强大。
所以,用java开发一个desktop的程序时,我会选择swing(功能强大,且lightweight,无须转调native call), 配上WindowsBuilder.
[1] JFC = Java Fundation Classes (效仿MFC?) 其包括AWT, Swing和Java2D
[2] 又叫Matisse4MyEclipse, 其原型是Netbean中的UI designer Matisse
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述