Juce源代码分析(一)Juce的优势
2015-12-28 11:56
357 查看
为什么学习Juce
JUCE (Jules' Utility Class Extensions)是由Raw MaterialSoftware公布的一套基于c++的跨平台应用程序框架类库(Windows, Mac,Linux)。JUCE的特殊之处在于其友好的用户界面以及强大的音频、图像处理能力。JUCE适合那些想使用干净、快捷、高层的API,而不想把时间浪费在使用不同类库,面向不同平台上的开发人员。JUCE可以胜任大型、复杂的应用程序(C++)的开发。相对于国内的诸多开源Dui界面库。Juce有很多其它的长处,是一套比較全面,综合性的C++代码库。
一、多线程的维护
比方。大家都比較熟悉的Duilib。Duilib在单线程应用时还比較不错,可是对于复杂的多线程应用程序。就有些力不从心了,由于维护全部控件使用的都是CPaitManagerUI中的控件指针,而CPaintManagerUI又以成员变量的方式存在于CWindowWnd中,当不同的线程。同一时候改动同一个控件的属性时,就相当于不同的线程同一时候操作同一个共享变量。CPU的切换不当非常有可能损坏数据。从而导致程序出现异常。为了维护多线程。Juce自身维护了很多线程同步机制,比方原子数据类型、自旋锁、临界区、事件等,还有配套使用的面向对象的Thread类。这些东西使多线程的编程变得更easy,程序更加健壮。二、内存的维护
不管是使用malloc开辟内存,还是使用new创建对象。Juce都封装了自己主动内存释放机制,类似于智能指针,在小范围内使用智能指针,能够无需考虑内存和对象的析构。最基本的是。Juce还实现了类似于脚本语言的WeakReference(弱引用)类型。能够有效解决C++编程的垂悬指针问题。三、全然自绘的界面
像Duilib这种轻量级界面库,Edit使用的还是原生的,这就导致了透明异形窗体的实现很困难。由于带有Layered属性的窗体是无法正常显示子窗体的。还有Duilib用窗体模拟的菜单,尽管外形上模拟的很像。可是机制上还与原生的菜单有很大的区别,这一点笔者亲自做过測试。Juce对这些控件的模拟还是很完美的。其次Juce还实现了普通界面库难以实现这种复杂控件。比方代码编辑器,支持拖拽功能的树控件。显示3D模型的控件等等。另外,Juce自身还实现了强大的画图引擎。能够在GDI和Opengl之间切换。
四、跨平台
Juce的C++代码能够在不同的平台编译出适合不同平台的应用程序。事实上Juce的长处还有非常多,这里描写叙述的并不完好。
笔者介绍Juce的长处。不是在贬低国产的开源界面库,鼓舞大家使用Juce。
而是倡导大家通过学习和分析Juce源代码,学习它的编程思想。来不断完好我们自己的界面库。
Juce源代码下载
相关文章推荐
- bwlabel函数 matlab
- Spring MVC 4.1.5 RESTFUL风格返回JSON数据406错误处理
- php分页类的二种调用方法(转载)
- 第一章 Java加解密简介
- Ubuntu14.04-Python2.7-Virtualenv-Django1.9-MySQL完整环境配置
- php分页类的二种调用方法(转载)
- C#实现list的多个和单个删除(基于win8商店应用)
- java包装类的作用
- Spring mvc多图片上传页面代码(采用aceadminui框架)
- Yii中实现处理前后台登录的新方法
- Python验证码识别处理实例
- The Java Programming Language4th读书笔记-第六章 枚举类型
- C# 控制操作火狐浏览器部分功能实现
- Yii学习笔记之四(表单验证 api 翻译)
- Java中的Enum(枚举)的使用与分析
- 【python】发送邮件
- Genymotion Eclipse插件安装
- 基本套接字编程(7) -- udp篇
- 基本套接字编程(7) -- udp篇
- Java加密技术篇(四)非对称加密算法RSA