跨平台开发一般是Java(基于java虚拟机,一次编译到处运行)和Qt【以及qt的竞品:GTK+之类其它/Qt的商业版是需要收费的,免费版需要开源设计源码,存在版权问题】(基于兼容的开发框架,使用适用于不同平台的编译器(比如MinGW,可以将linux源码程序编译在windows下运行)针对各个平台单独编译达到跨平台效果),还有一种方案就是基于html/js利用浏览器作为跨平台的虚拟机【和游戏开发中的引擎方案类似】(Electron的方案我觉得类似)。【跨平台界面开发无外乎这三种方案,实际只有两种浏览器和Java方案都属于虚拟机方式,不过浏览器方案使用的解释脚本方式】
对于一个应用程序来说:
驱动部分:不可避免需要针对各个平台单独移植编译(驱动部分严重依赖于系统/内核支持)
核心数据处理:使用高级标准通用语言C/C++/...,不同平台的编译器都可以支持,只需要少量修改重新编译成库,供界面调用
界面交互部分:需要跨平台工具支持来降低工作量(没用统一一的界面标准语言/html算吗?)
哪一种更适合,这些方案各有什么优劣?我想每一种方案都各有优劣吧/
不使用跨平台又怎么样呢?一般专用的应用程序都会支持windows和linux,linux在服务器上用的比较多。
如果使用平台系统的原生开发工具,至少有一个好处就是,编译出来的文件可以很小,资源占用,运行效率较高。比如windows下用vs。
Electron 是 GitHub 发布的跨平台桌面应用开发工具,支持 Web 技术开发桌面应用,其本身是基于 C++ 开发的,GUI 核心来自于Chrome,而 JavaScript 引擎使用 v8。
npm: nodejs 下的包管理器
输入命令npm config set registry=http://registry.npm.taobao.org 配置镜像站
vue:
https://cn.vuejs.org/index.html
Vue.js是一款流行的JavaScript前端框架,旨在更好地组织与简化Web开发。Vue所关注的核心是MVC模式中的视图层,同时,它也能方便地获取数据更新,并通过组件内部特定的方法实现视图与模型的交互。
https://www.jianshu.com/p/3092b382ee80
其它:
wxWidgets:
wxWidgets是一个开源的跨平台的C++构架库(framework),它可以提供GUI(图形用户界面)和其它工具。目前的2.x版本支持所有版本的Windows、带GTK+或Motif的Unix和MacOS。一个支持OS/2的版本正在开发中。
wxwidgets提供的gui是大量使用宏的,这就意味着它是在尽可能的使用目标系统native的gui样式
wxWidgets vs Qt
https://www.zhihu.com/question/22524236/answer/97529754
GTK+:
最初,GTK+ 是作为另一个著名的开放源码项目 —— GNU Image Manipulation Program (GIMP) —— 的副产品而创建的。在开发早期的 GIMP 版本时,Peter Mattis 和 Spencer Kimball 创建了 GTK(它代表 GIMP Toolkit),作为 Motif 工具包的替代,后者在那个时候不是免费的。
GNOME:简言之:是linux下受早期qt版权问题基于GTK+对qt的替代,它是linux系统的图形桌面环境
GNOME是一套纯粹自由的计算机软件,运行在操作系统上,提供图形桌面环境。 发展过程 |
参考:
在桌面Linux环境下开发图形界面程序的方案对比
https://blog.csdn.net/fengjunwang1980/article/details/78193975
是什么让 Ubuntu 选用 Qt 而不是 GTK?