国产开源跨平台软件开发框架新选择:SOUI5
一、SOUI5跨平台解决方案的实现框架介绍

二、SwinX介绍
SwinX是作者经过近一年时间开发的一套运行在linux平台下的Windows APIs,源代码:Github or Gitee S代表Simple也代表启程软件出品,win代表Windows,X代表跨平台。一个带GUI的客户端项目,首先需要操作系统提供常规的进程启动,线程调度等支持,这是OS的常规功能;更重要的是,它还需要系统提供以窗口为基础的UI支持。SwinX提供Windows平台下的窗口管理API(HWND系列API), 图形绘制API(GDI系列API),内核对象API(EVENT,MUTEX,Symaphore等),所有API都经过了大量的单元测试,确保产品稳定运行。
和SwinX类似的产品有Wine,Wine的设计目标是在linux平台二进制兼容Windows平台上现有程序。这一设计目标使Wine非常庞大。然而,实际应用中,Wine能完美运行的大型项目非常少(例如QQ,微信等产品都不可能通过Wine来实现在Linux平台运行)。
SwinX参考了Wine的设计,但SwinX的设计目标是源代码级兼容Windows平台的产品,软件厂家有一个现有的运行在Windows平台的软件产品,通过链接SwinX,再配合适当的跨平台调整代码就可以编译出原生运行在Linux平台的软件(后续MacOS平台的支持也在计划中)。和Wine不同在于,Wine基于X11 API,X11 API是Linux平台早期推出的一套同步API。现在Linux平台提供了性能更高的XCB API,XCB采用异步框架,相对于X11性能有显著提升。
不同于Wine的宏大,SwinX只实现必须的APIs,因此SwinX非常精简,稍有经验的程序员都可以简单地驾驭SwinX,在开发过程中如何发现缺少哪个API的实现,用户可以方便的自己增加这些API。
三、现有支持跨平台的竞品分析
除Wine外,目前能够实现客户端跨平台的框架主要包含Qt, GTK, Electron这三种。
- Qt:Qt 是一个历史悠久、功能强大的跨平台开发框架,支持多种编程语言,如 C++、QML 等。它在桌面和嵌入式应用开发中广泛使用,具有丰富的控件库和强大的图形渲染能力。然而,Qt 的学习曲线较陡,且其开源版本在商业使用中可能需要遵循较为严格的开源协议,商业授权的费用非常高。
- GTK:GTK 是一个开源的跨平台图形用户界面库,主要用于开发 GNOME 桌面环境下的应用程序。它支持多种编程语言,并且在 Linux 平台上表现优异。不过,GTK 在 Windows 和 macOS 上的兼容性相对较弱,且其界面风格与现代应用的审美存在一定差距,此外GTK提供的C语言API,大型项目中使用成本很高。
- Electron:Electron 是一个基于 Web 技术(HTML、CSS、JavaScript)构建跨平台桌面应用的框架。它允许开发者利用 Web 开发经验快速构建应用,并且可以轻松集成各种 npm 模块。然而,Electron 应用通常体积较大,性能消耗较高,且在原生系统功能的集成上存在一定的局限性。
四、SOUI5的优势
SOUI是一套在windows平台上持续维护了10+年的客户端开发框架,5.0之前,通过在windows平台上持续开发维护,形成了自己独特的开发模式,已经在包括:百度,YY,金山,金碟,迅游,富途,韩信等公司的产品中大量使用。
- 完整的控件系统:SOUI5 提供了丰富多样的控件,涵盖了从基础按钮、文本框到复杂的虚表控件等,满足不同应用场景的需求。
- 完整的布局系统:支持多种布局方式,包括线性布局、相对布局、网格布局等,开发者可以根据界面需求灵活选择,轻松实现复杂界面的布局。
- 完整的事件系统:SOUI5 的事件机制结合了 WTL 的消息映射表和 Qt 的 sigslot 两种方式。WTL 的消息映射机制将所有事件响应集中在一起,便于代码维护;而 sigslot 的灵活性则允许开发者在代码的任意位置实现事件响应。
- 完整的矩阵变换系统及动画系统:具备强大的图形处理能力,支持矩阵变换,能够实现复杂的图形变换效果。同时,其动画系统提供了丰富的动画效果,如平移、缩放、旋转等,帮助开发者打造流畅、生动的用户界面。
- 完善的扩展机制:SOUI5 提供了灵活的扩展机制,开发者可以扩展系统提供的控件(IWindow),绘图对象(ISkinObj),布局对象(ILayout)等定制UI,还可以通过插件等方式轻松扩展框架的功能。这种机制使得框架能够根据项目需求进行定制化开发,满足不同业务场景的特殊需求。
- 国产化自主知识产权:SOUI5 是一款国产的跨平台开发框架,拥有自主知识产权。这不仅意味着在技术上不受制于国外框架,还能够更好地支持国内的开发需求,为国产软件的发展提供有力支撑。
- 体积更小,性能更高:相较于一些竞品框架,SOUI5 在设计上更加精简。它通过优化代码结构和资源管理,实现了更小的体积和更高的性能。这使得基于 SOUI5 开发的应用程序在运行效率和资源占用方面更具优势。
- 通过soui4js项目,soui已经在windows平台实现了全部使用js开发原生客户端项目的能力,使用js开发客户端项目可以大大缩短软件产品的开发周期,后续soui4js也将支持SwinX。
- 方便现有 Windows 客户端产品移植:SOUI5 通过自主实现的 Swinx 在 Linux 平台下模拟 Windows API,为 Windows 客户端产品的移植提供了极大的便利。开发者无需对现有代码进行大规模修改,即可快速将应用迁移到 Linux 平台(后续也将对macos提供支持)。
国产开源跨平台软件开发框架新选择:SOUI5的更多相关文章
- 破解“低代码”的4大误区,拥抱低门槛高效率的软件开发新选择 ZT
最近,每个人似乎都在谈论“低代码”.以美国的Outsystems.Kinvey,以及国内的活字格为代表的低代码开发平台,正在风靡整个IT世界.毕竟,能够以最少的编码快速开发应用的想法本身就很吸引人.但 ...
- 2015年热门的国产开源软件TOP 50
2015年热门的国产开源软件TOP 50 开源中国在 2015 年得到了快速的发展,单开源软件收藏量就接近 40000 款,其中不乏优质的国产开源项目.本文从软件的收藏.下载.访问等多角度挑选出了 2 ...
- Enterprise Solution 开源项目资源汇总 Visual Studio Online 源代码托管 企业管理软件开发框架
Enterprise Solution 是一套管理软件开发框架,在这个框架基础上开发出一套企业资源计划系统Enterprise Edition. 现将Enterprise Solution开发过程中遇 ...
- 2016国产开源软件TOP100(Q1)
随着互联网的发展.开放标准的普及和虚拟化技术的应用等诸多IT新领域的创新及拓展,开源技术凭借其开放性.低成本.稳定性.灵活性.安全性和技术创新性等特点迅速走向成熟,逐步发展成为一种主流模式,日益改变着 ...
- 我发起了一个 .Net 开源 跨平台 GUI (界面开发框架)项目 HtmlCore
大家好 , 我发起了一个 .Net 开源 跨平台 GUI (界面开发框架)项目 , 名字叫 HtmlCore . 项目的一个主要目标是可以用 .Net 在 移动设备 上 开发 GUI 程序 (界面程 ...
- GitHub 上最热的10款国产开源软件
衡量一个开源产品好不好,看看产品在 GitHub 的 Star 数量就知道了.由此可见,GitHub 已经沦落为开源产品的“大众点评”了.一个开源产品希望快速的被开发者知道.快速的获取反馈,放到 Gi ...
- 2016国产开源软件Top100(Q1)
2016国产开源软件Top100(Q1) 随着互联网的发展.开放标准的普及和虚拟化技术的应用等诸多IT新领域的创新及拓展,开源技术凭借其开放性.低成本.稳定性.灵活性.安全性和技术创新性等特点迅速走向 ...
- 开源server软件
Java缓存server jmemcached http://www.oschina.net/p/jmemcached jmemcached 是一个Java版的 memcached 缓存server, ...
- 开源GIS软件初探
谈到GIS软件,首先让我们想到的便是GIS界的龙头大哥ESRI公司旗下的ArcGIS产品,从最初接触的version 9.2到如今的version 10.1,其发展可谓风生水起.MapInfo软件也不 ...
- .NET Core:面向未来的开源跨平台开发技术
作为一种全新的开源和跨平台的开发平台,.NET Core 历经两年多的开发,终于在于2016年6月27日针对所有主流服务器和桌面操作系统发布 1.0 RTM 版本..NET Core 是一种通用开发平 ...
随机推荐
- 【昌哥IT课堂】MySQL8.0新特性之特权连接
概述: ERROR 1040 (HY000): Too many connections 上面这个报错,开发或DBA一般都遇见过.那么碰到这个问题,我们应该怎么办呢? 在MySQL 5.7及之前版本, ...
- 微信小游戏sdk接入支付和登录,解决了wx原生不支持ios支付的痛点
前情提要 微信小游戏是小程序的一种. 项目接入微信小游戏sdk的支付和登录.主要难点在于接入ios的支付.因为官方只支持android, 不支持ios. 即ios用户不能直接在小游戏中发起支付,参考市 ...
- 你不知道的5个JVM命令行标志
本文是Neward & Associates的总裁Ted Neward为developerworks独家撰稿"你不知道5个--"系列的一篇文章:JVM有数百个命令行选项,在 ...
- DB2 pureXML 动态编程组合拳:iBatis+BeanUtils+JiBX
黄耀华, 软件工程师, IBM 李玉明 (ymli@cn.ibm.com), 软件工程师, Systems Documentation, Inc. (SDI) 袁飞 (feiyuan@cn.ibm.c ...
- MySQL原理简介—11.优化案例介绍
大纲 1.禁止或改写SQL避免自动半连接优化 2.指定索引避免按聚簇索引全表扫描大表 3.按聚簇索引扫描小表减少回表次数 4.避免产生长事务长时间执行 1.禁止或改写SQL避免自动半连接优化 (1)业 ...
- 从Hbase shell理解列式存储
列存储和行存储在理解上的差别挺大,特别是在非常数据行存储之后. 在行存储中,每张表的结构是固定的,某一列可以没有值但是这一列是必须在的.那么可以理解行存储的数据是结构化的. 但是列存储确有每行的数据却 ...
- Android开发重要知识点
一.网络 1.https原理 2.tcp/ip协议 三次握手:https://www.cnblogs.com/cenglinjinran/p/8482412.html 四次挥手:https://www ...
- 负载均衡-一致性Hash算法
1. Hash算法 哈希(Hash)也称为散列,把任意长度的输入,通过散列算法变换成固定长度的输出,该输出就是散列值.哈希值(hashCode).(来自:百度百科) 在现实中,设计者常常将散列值作为索 ...
- K8S钩子、探针以及控制器完整版
一. 生命周期钩子 Kubernetes 中的 生命周期钩子(Lifecycle Hooks) 是在容器生命周期的特定阶段执行操作的机制.通过钩子,可以在容器启动后(PostStart)或停止前(Pr ...
- redmine部署,踩坑而过
背景:部门想用个工具来做项目执行进度的管理,为了保证数据私有并且不想花钱,选了redmine. 环境:阿里云服务器,windows server R2企业版 软件版本构成: 官方版本说明http:// ...