-
跨平台程序开发技术概览
2015.01.25
by
Winland
摘要:
介绍目前常用的跨平台程序开发库,
对跨平台程
序开发库进行多方面分析,
对比其开
发语言、授权许可、
支持的操作系统、常见程序库功能模块等内容,并举出开发库实际的应
用例子,为需要了解跨平台开发的人员提供技术概览。
关键词:
跨平台开发
POSIX
JDK
Qt
wxWidgets
GTK+
一、前言
随着
“棱镜门”
等一系列间谍事件的曝
光,
国内对国产软件、
硬件的重视程度与日俱增,
国产操作系统的发展和推广也成为国家的核心利益之一。
国内近二十年来,<
/p>
众多计算机软件
方面教材书籍等都是以微软
Windows
操作系统为基石,很多是介绍
Windows
的系统使用、
应用软件、开发技术等,而国产操作系统又多以<
/p>
Linux/Unix
等开源操作系统为基础研发而
来。国内软件开发不得不面临系统兼容性问题,比如按照旧的用户习惯需要支持
Windows
操作系统,而按照国产化软件发展趋势,又必须支持
< br>Linux/Unix
系统。如果每个操作系统
都单独开
发一套代码,
那么软件研发成本毫无疑问会剧增。
因此采用跨平
台的开发库来开发
跨平台应用程序,就成了实现多系统兼容性的最优选择。
介绍跨平台开发技术,就不得不提
POSIX
(
Portable
Operating System Interface
,可移植
操作系统接口)
[1]
,许多跨平台开发库都提到需要操作
系统对
POSIX
标准的支持。
POS
IX
标准定义了操作系统应该为应用程序提供的接口标准,是
I
EEE
为各种
UNIX
操作系统上运<
/p>
行的软件而定义的一系列
API
标准的总
称,该标准正式称为
IEEE 1003
,
对应国际标准名称
为
ISO/IEC 9945
。
目前主流的通用操作系统
(包括
Linux/Unix
、
Windows
和
Mac OS
)
、智能<
/p>
手机操作系统以及实时操作系统(
Real
Time
Operating
Sy
stem
,
RTOS
)和嵌入式系统,
通
常都是支持
POSIX
标准的。
p>
POSIX
标准的设计理念是希望编写代码一次就可以应用到各种<
/p>
系统,所以这成为了研发操作系统的默认标准,也是跨平台程序开发的基石。
本文着重介绍目前常见的跨平台开发库,
介绍每个开发库的功能、
应用平台、
协议授权
等内容,
为需要了解跨平台开发的人员提供技术概览。
本文后面第二部分逐一介绍各个常见
的跨平台开发库,然后第三部分对这
些开发库做比对,最后进行总结。
二、常见跨平台开发方式概览
p>
本部分介绍常见的跨平台开发库,由于程序开发库非常多,这里枚举出来的并不全面,
只能尽本人所知来介绍。
本节主要介绍
JDK
、
Qt
、
wx
Widgets
、
GTK+
、
Ecere SDK
、
.NET/Mono
p>
、
Dlib
等七种跨平台开发库。
(一)
JDK
JDK
是
Java
Development Kit
的缩写
[2]
,是
Java
语言的软件开发工具包,目前
Java
官
方有三种版本:
Java SE
、
Java
EE
、
Java
ME
。第一种
Java
SE
(
Standard Edition
)
,是普通用
户常用的版本,
第二
种
Java
EE
(
Enterprise Edition
)
,
是面向企业应用的版本,
第三种
Java ME
(
Micro
Edition
)
主要用于移动设备、
嵌入式设备上应用开发。
Java
程序编译后生成字节码,
p>
字节码是运行在
JVM
(
< br>Java Virtual Machine
,
Java
虚拟机)之上,并不像
C/C++<
/p>
编译的程
序直接运行在操作系统之上。
J
VM
带来的好处是非常大的,因为只要操作系统安装了适合
的<
/p>
JVM
(通常由
Java
Runtime Environment
提供,
即
JRE [3]
)
,
Ja
va
开发的程序就可以运行,
因此很适合做跨平台程序开发。<
/p>
Java
程序运行在
JVM
之上也有一定的缺陷,
就是不如
C/C++
语言编译的程序运行速度快、效率高。由于
Java
具有先天的跨平台开发优势,所以
Java
应
用是非常广的,从通用操作系统、智能手机系统
到嵌入式系统等都有应用。除了
Oracle
官
方发布的
JDK
,开源社区也有相应的开源版本
OpenJDK
。
JDK
自带的类库功能丰富,还有
专门用于多媒体的
Java
Media
Framework
A
PI
(
JMF
)
,
除此之外还有很多基于
Java
开
发的
第三方类库,通常都是可以跨平台运行的。
(二)
Qt
Qt
最早是由奇趣公司开发,经过诺基亚收购和转卖,目前由
Digia
全资子公司
Qt
Comp
any
经营
[4]
。
< br>Qt
采用多种授权许可发布,可以使用开源的
GPL/L
GPL
(
GNU
General
Public License/ GNU Lesser General
Public License
)
发布或者使用
Qt
商业授权。
Qt
开源项目
[5]
是著名开源桌面环境
KDE
p>
的基石,
Qt
的功能模块非常丰富,
从图形用户界面
(
Graphical
User
Interface
,
p>
GUI
)到多媒体、文件、多线程
/
进程、网络、数据库、
WebKit
、
QML
、图
像、
3D
图形、打印、
ActiveX
,甚至蓝
牙、串口操作模块等。
Qt
支持的操作系统包括通用
操作系统、智能手机系统、实时操作系统、嵌入式操作系统等,在众多领域都有应用。
由于
Qt
是采用
C++
开发而成的,所以在各个操作系统编译而成的库运行速度是相当快
的,这也是
Qt
能应用到实时操作系统
的原因之一。
Qt
开发库是完全面向对象的,模块化封
装,使用方便,也易于扩展,存在很多基于
Qt
的第三方扩展库。
Qt
自带丰富的开发文档和
< br>示例代码,可以随时查阅,这为
Qt
开发带来很大方便。
(三)
wxWidgets
wxWidgets
项目
[6]
最早由爱丁堡大学
Julian Smar
t
开始,是为了将应用程序方便地移植
多个操作系统上运行,目
前支持
Linux
、
Unix
、
Windows
、
M
ac OS
等操作系统。除了能方便
地开发
GUI
程序,
wxWidgets
还支持在线帮助、网络编程、文件、剪贴板、多线程、图像、
音频视频、数据库、
HTML
、打印等等。
wxWidgets<
/p>
使用自家的
wxWindows License
发布,
这个许可证是基于
LGPL
的,
但多一个例外情况,
这个例外情况允许将程序无论是以
动态连
接还是静态连接方式使用
wxWidgets
库,这为开发者和用户带来方便,不论是将
wxWidgets
用于开源项目还是商业项目都是可以的,没什么限制和收费。
wxWidgets
语法风格很像微软
MFC
p>
(
Microsoft
Foundation
Classes
)
,所以从
MFC
转型
开发跨平台的
wxWidgets
程序是比较方便的
,图形界面的可视化编辑有
wxFormBuilder
、
p>
wxGlade
等工具,集成开发环境(
I
ntegrated Development Environment
,
IDE
)有
CodeBlocks
和
CodeLite
。
wxW
idgets
有一个非官方扩展库
wxCode
,含有各种数据库连接模块、
PDF
处
理、绘制图表(
Chart/Plot
)
、视频捕捉等扩展功能
[7]
。
(四)
GTK+
GTK+
最初是绘图程序
GIMP
的专用开发库(
GIMP Toolkit
)
,后来逐步发展壮大,成为
Linux/Unix
系统开发图形界面应用程序的主流库之一
[8]
。除了支持各种
Linux/Unix
系统,
p>
现在也有
Windows
和
Mac
OS
的移植版本,与之相关的还有一个移动设
备项目
GMAE
(
GNOME
Mobile And Embedded
)
,用于移动和嵌入
式设备上图形界面开发。
GTK+
由多个子模块构成:
Glib
、
GObject
、
GIO
、
Pango
、
ATK
、
GdkPixbuf
、
GDK
、
GTK
。
各个模块详细功能请参考
GTK+
项目官方网站
[8]
和
GNOME
开发
参考网站
[9]
。
GTK+
官方发
布版本包含了
GUI
设计、文件操作、网络连接、多线程、国际化和本地化、打印等功能,
GTK+
的图形界面可视化编辑可以通过
Glade
工
具实现,
集成开发环境有
Anjuta
、
CodeBlocks
等。
GTK+
是
GNOME
桌面环境的基础,二者结
合比较紧密,对数据库连接的支持可以通过
GNOME Data Access
(
GDA
)
扩展模块
实现,
对音频视频等多媒体的支持可以通过
GStreamer
库实现,对
3D
图形的支持可以通过<
/p>
GtkGLExt
扩展库实现。
(五)
Ecere SDK
Ecere
SDK[10]
是独特的
编译型语言
eC
的开发环境,
eC
p>
是由一位加拿大学者
Jé
r?
me
Jacovella-St-Louis
历
经十几年研发而成。
eC
是
C
语言的超集,
其引入了
C++
< br>、
Java
、
Python
p>
、