JUCE类库的主要模块

JUCE类库采用先进的模块化结构。开发时,可选择是否启用某些模块。未启用的模块不参与编译。按笔者的使用经验,GUI编程通常需要启用下面列表中的前五个模块。控制台编程,前3个即足够。进行专业音频领域的软件和插件开发,需启用与音频相关的几个模块。为提高界面渲染效率,往往还需启用OpenGL模块。商业软件,比如需要注册才可使用,开发时经常会用到RSA加解密等技术,这些JUCE类库都提供了。

截至目前,JUCE类库主要由以下模块构成:

  • juce_core – 核心与底层类群,包括字符串、XML、多线程,系统信息,网络协议等等
  • juce_events – 消息循环与事件驱动
  • juce_data_structures – 数据结构,高级容器等等
  • juce_graphics – 2D渲染引擎,图形图像,字型字体等等
  • juce_gui_basics – GUI核心类群(按钮、标签、文本框等界面“元素”)
  • juce_gui_extra – 更高级和面向具体应用域的GUI类群
  • juce_audio_basics – 音频与MIDI方面的底层类群
  • juce_audio_devices – 跨平台的音频驱动(数据进出)等方面的类群
  • juce_audio_formats – 各类音频格式的读写
  • juce_audio_processors – 音频插件与宿主开发所必须的
  • juce_audio_plugin_client – 各类音频插件的客户端(已封装集成)
  • juce_audio_utils – 音频方面的助手类和相关的GUI等
  • juce_cryptography – 加密解密,包括RSA, Blowfish, MD5, SHA等等
  • juce_opengl – OpenGL 2D渲染引擎
  • juce_video – 视频播放与采集等
  • juce_box2d – Box2D物理引擎

以上为JUCE类库官方内置的原生模块。另有一些JUCE用户自行开发的模块,品类较多,质量不等,所采用的授权协议也不一。还有一些模块,经由其它更加精细和更加具体的小类库改写而成(可在授权协议许可的基础上自行改写为JUCE模块,或者购买其商业授权),比如音频变调变速类库、包含各类音频效果的类库、音色合成器类库、数据库、网络、视频等方面的一些“小精专”类库,等等。这些额外的第三方模块可对JUCE类库进行有力的补充和扩展,实际开发时,直接挂载即可,异常方便敏捷,省去常规C++开发使用第三方类库或模块时,成吨的繁杂事务。诸如此类,在此就不做推荐和罗列了。日后如有机会,本人(Running)将精选一些个人在实际项目中使用或亲测过的第三方JUCE模块进行介绍。关于如何制作、挂载模块,稍后我将撰文详述。

实际上,用JUCE类库有一段时间并开发过实际项目的任何一个使用者,都应该积攒并不断丰富自己的模块。这也是Jules前几年决定整个类库采用模块结构的最重要原因之一——使之更加开放、丰富与易用,扎扎实实切合了真正前卫的开源精神,功在当代,利在千秋。

JUCE类库模块层次与依赖关系请参阅此图