X Developing是应用软件全栈开发框架,它旨在为传输、存储协议、算法设计、设备驱动、服务应用和桌面应用提供开发库和应用框架生成工具。同时X Developing也是跨平台的开发体系,它对Windows,MacOS,Linux平台均提供良好的支持。它符合多层次、跨平台两个全栈开发的特性。
众所周知,作为应用开发语言,Java比较适合WEB服务端应用开发,C#主要用于构建桌面应用,Python则更擅长于处理数理统计,而对于C语言,通常认为只适合作为操作系统、硬件驱动、通讯协议等底层软件设施的开发语言。对于上层应用软件,很少采用C语言作为主力开发语言,其原因固然有C语言和其开发库本身存在短板,也有在言必面向对象思潮的作祟下对C语言的弃用。
C语言的简洁、高效是毋庸置疑的,这也是操作系统、硬件驱动、协议栈用其作为主要开发语言的原因。但C开发库也存在两个明显的短处,内存管控能力和函数安全机制。C开发库使用内存方式灵活,堆、栈、虚拟内存形式多样,但管控机制很弱,常提的“内存泄漏”就是很头疼的事。鉴于此,大多数面向对象的语言都实现了内存回收机制,内存使用更为安全,这大概也是应用开发拥抱面向对象语言的主要原因。现存C开发基本库中,函数的安全机制比较差,主要表现为不可控的越界读写,这会导致设计错误在此处隐藏,运行错误在彼处引发的情况,即“Bug漂移”。针对内存管控和函数安全的苛刻性要求,X Developing开发库给出了自己的解决办法。
X Developing开发库采用C语言构建,不过摈弃了大多数C标准库,但充分保留了C语言机制,如:跳转机制、断言机制。X Developing将内存、临界区、信号灯、事件对象、定时器、线程、文件、管道、图形、窗体、控制台、Shell等定义为系统资源,X Developing对系统资源访问只负责定义接口,不负责实现,具体的实现交由各平台原生的SDK库,而不是C标准库的运行时函数。
对于内存泄漏的管控,X Developing认为内存的高频、巨额使用通常发生在工作者线程内,而且工作者线程总是频繁地创建、执行和销毁。给出解决办法是为每个线程(主线程和工作者线程)派发私有内存堆,各线程运行过程中无论申请和释放内存是否匹配,只要线程结束,私有内存堆总是会被释放,这样可以保证线程运行结束后不至于产生内存泄漏。不过我们不能假设线程(特别是工作者线程)都是正常销毁的,相反,崩溃是工作者线程的常态。X Developing充分使用了断言和跳转机制来对线程进行异常执行保护,捕获线程崩溃,获得释放线程内存私有堆的机会。
在跨平台方面,解释性语言的可移植性没有任何问题,因为可移植性是由虚拟机或解释执行器来实现,并不归由语言的本身。编译型语言的可移植性要差的多,很多Linux C语言项目需要通过Cygwin这样的环境来辅助向Windows平台移植。即便有了Cygwin这样的编译虚拟机,事实上移植的程序会丧失一些宿主平台SDK特性。而X Developing开发库会充分保留各自平台的SDK特性,并且不依赖于编译虚拟机来实现跨平台移植。
操作系统的嵌入化、微型化是个重要的趋势,系统的微型化意味着可用的系统对象资源越来越少,X Developing正是基于此保持开发库的可裁剪性,设计之初就定义了裁剪路线。
熟悉桌面应用的开发者都清楚,无论是Linux平台还是Windows平台,都具备多种图形库。这些图形库多数是为了保持系统应用向前兼容而保留下来。从客观上讲,我们开发的应用也应该保留向前兼容的特性,但如果选用了特定的图形库,向前兼容就未必行得通。X Developing定义了动态加载资源访问的设计框架,其做法是定义资源访问的一致性接口,然后程序运行时根据系统版本环境来加载合适的资源访问库。
X Developing体系包含了开发库集合(XDK、XDL、XDD、XDC),xDesign,xService和xConsole。XDK是平台依赖库,是各操作系统专属的资源访问SDK库封装。XDL是各系统平台一致的数据结构、算法、文档、视图开发库。XDD是各系统平台专属的驱动开发支持库。XDC是各平台一致的框架、窗体、控件、编辑部件、对话框的开发库。xDesign是独立于开发库的XML表单、对话框和文档设计器,用于设计程序运行时的可视化资源。xService是服务程序,它实现了HTTP(s)、TCP、UDP端口服务体系,提供了诸如WEB、共享文件、对象存储、数据库网关、内存数据库、消息队列、物联网络等通用类的服务以及一些HL7 Express、DICOM等专业类的服务。xConsole是运行监视控制台,它为xService提供了性能监视和错误追溯。
X Developing是开源项目,项目工程位于:https://github.com/jdzwq/Easily-SDK-5.git。
网友评论