Juce源代码分析(⼀)Juce的优势
为什么学习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源代码,学习它的编程思想。来不断完好我们⾃⼰的界⾯库。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论