2022年2022年跨平台程序开发技术概览 .pdf

上传人:Che****ry 文档编号:34261418 上传时间:2022-08-15 格式:PDF 页数:5 大小:107.82KB
返回 下载 相关 举报
2022年2022年跨平台程序开发技术概览 .pdf_第1页
第1页 / 共5页
2022年2022年跨平台程序开发技术概览 .pdf_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《2022年2022年跨平台程序开发技术概览 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年跨平台程序开发技术概览 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、跨平台程序开发技术概览2015.01.25 by Winland 摘要: 介绍目前常用的跨平台程序开发库,对跨平台程序开发库进行多方面分析,对比其开发语言、授权许可、支持的操作系统、常见程序库功能模块等内容,并举出开发库实际的应用例子,为需要了解跨平台开发的人员提供技术概览。关键词: 跨平台开发POSIX JDK Qt wxWidgets GTK+ 一、前言随着“棱镜门” 等一系列间谍事件的曝光,国内对国产软件、硬件的重视程度与日俱增,国产操作系统的发展和推广也成为国家的核心利益之一。国内近二十年来,众多计算机软件方面教材书籍等都是以微软Windows 操作系统为基石,很多是介绍Windows

2、 的系统使用、应用软件、开发技术等,而国产操作系统又多以Linux/Unix等开源操作系统为基础研发而来。国内软件开发不得不面临系统兼容性问题,比如按照旧的用户习惯需要支持Windows操作系统,而按照国产化软件发展趋势,又必须支持Linux/Unix系统。如果每个操作系统都单独开发一套代码,那么软件研发成本毫无疑问会剧增。因此采用跨平台的开发库来开发跨平台应用程序,就成了实现多系统兼容性的最优选择。介绍跨平台开发技术,就不得不提POSIX(Portable Operating System Interface ,可移植操作系统接口)1 ,许多跨平台开发库都提到需要操作系统对POSIX 标准的

3、支持。 POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE 为各种 UNIX 操作系统上运行的软件而定义的一系列API 标准的总称,该标准正式称为IEEE 1003 ,对应国际标准名称为 ISO/IEC 9945 。目前主流的通用操作系统(包括 Linux/Unix 、Windows 和 Mac OS) 、智能手机操作系统以及实时操作系统(Real Time Operating System,RTOS)和嵌入式系统,通常都是支持POSIX 标准的。 POSIX 标准的设计理念是希望编写代码一次就可以应用到各种系统,所以这成为了研发操作系统的默认标准,也是跨平台程序开发的基石。

4、本文着重介绍目前常见的跨平台开发库,介绍每个开发库的功能、应用平台、 协议授权等内容, 为需要了解跨平台开发的人员提供技术概览。本文后面第二部分逐一介绍各个常见的跨平台开发库,然后第三部分对这些开发库做比对,最后进行总结。二、常见跨平台开发方式概览本部分介绍常见的跨平台开发库,由于程序开发库非常多,这里枚举出来的并不全面,只能尽本人所知来介绍。本节主要介绍JDK、 Qt、 wxWidgets、 GTK+ 、 Ecere SDK、 .NET/Mono 、Dlib 等七种跨平台开发库。(一) JDK JDK 是 Java Development Kit 的缩写 2,是 Java语言的软件开发工具包

5、,目前Java 官方有三种版本:Java SE、Java EE、Java ME。第一种 Java SE(Standard Edition) ,是普通用户常用的版本, 第二种 Java EE (Enterprise Edition ) , 是面向企业应用的版本,第三种 Java ME(Micro Edition )主要用于移动设备、嵌入式设备上应用开发。Java 程序编译后生成字节码,字节码是运行在JVM (Java Virtual Machine , Java虚拟机)之上,并不像C/C+编译的程序直接运行在操作系统之上。JVM带来的好处是非常大的,因为只要操作系统安装了适合的 JVM(通常由

6、Java Runtime Environment 提供, 即 JRE 3) ,Java 开发的程序就可以运行,因此很适合做跨平台程序开发。Java程序运行在JVM 之上也有一定的缺陷, 就是不如C/C+语言编译的程序运行速度快、效率高。由于Java 具有先天的跨平台开发优势,所以Java 应名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 用是非常广的,从通用操作系统、智能手机系统到嵌入式系统等都有应用。除了Oracle 官方发布

7、的JDK,开源社区也有相应的开源版本OpenJDK。JDK 自带的类库功能丰富,还有专门用于多媒体的Java Media Framework API (JMF) ,除此之外还有很多基于Java开发的第三方类库,通常都是可以跨平台运行的。(二) Qt Qt 最早是由奇趣公司开发,经过诺基亚收购和转卖,目前由Digia 全资子公司Qt Company 经营 4 。Qt 采用多种授权许可发布,可以使用开源的GPL/LGPL (GNU General Public License/ GNU Lesser General Public License )发布或者使用Qt 商业授权。 Qt 开源项目5 是

8、著名开源桌面环境KDE 的基石, Qt 的功能模块非常丰富,从图形用户界面(Graphical User Interface,GUI )到多媒体、文件、多线程/进程、网络、数据库、WebKit 、QML 、图像、 3D 图形、打印、 ActiveX ,甚至蓝牙、串口操作模块等。Qt 支持的操作系统包括通用操作系统、智能手机系统、实时操作系统、嵌入式操作系统等,在众多领域都有应用。由于 Qt 是采用 C+开发而成的,所以在各个操作系统编译而成的库运行速度是相当快的,这也是Qt 能应用到实时操作系统的原因之一。Qt 开发库是完全面向对象的,模块化封装,使用方便,也易于扩展,存在很多基于Qt 的第三

9、方扩展库。Qt 自带丰富的开发文档和示例代码,可以随时查阅,这为Qt 开发带来很大方便。(三) wxWidgets wxWidgets 项目 6 最早由爱丁堡大学Julian Smart 开始,是为了将应用程序方便地移植多个操作系统上运行,目前支持Linux 、Unix 、Windows、Mac OS 等操作系统。除了能方便地开发 GUI 程序, wxWidgets 还支持在线帮助、网络编程、文件、剪贴板、多线程、图像、音频视频、数据库、HTML 、打印等等。wxWidgets 使用自家的wxWindows License 发布,这个许可证是基于LGPL 的,但多一个例外情况,这个例外情况允许

10、将程序无论是以动态连接还是静态连接方式使用wxWidgets 库,这为开发者和用户带来方便,不论是将wxWidgets用于开源项目还是商业项目都是可以的,没什么限制和收费。wxWidgets 语法风格很像微软MFC(Microsoft Foundation Classes ) ,所以从MFC 转型开发跨平台的wxWidgets程序是比较方便的,图形界面的可视化编辑有wxFormBuilder 、wxGlade 等工具,集成开发环境(Integrated Development Environment ,IDE)有 CodeBlocks和 CodeLite。wxWidgets 有一个非官方扩展库

11、wxCode,含有各种数据库连接模块、PDF 处理、绘制图表(Chart/Plot ) 、视频捕捉等扩展功能7。(四) GTK+ GTK+ 最初是绘图程序GIMP 的专用开发库(GIMP Toolkit ) ,后来逐步发展壮大,成为Linux/Unix系统开发图形界面应用程序的主流库之一8 。除了支持各种Linux/Unix系统,现在也有Windows和 Mac OS 的移植版本,与之相关的还有一个移动设备项目GMAE(GNOME Mobile And Embedded) ,用于移动和嵌入式设备上图形界面开发。GTK+ 由多个子模块构成:Glib 、GObject、GIO 、Pango、ATK

12、、GdkPixbuf 、GDK 、GTK 。各个模块详细功能请参考GTK+ 项目官方网站8和 GNOME 开发参考网站9 。 GTK+ 官方发布版本包含了GUI 设计、文件操作、网络连接、多线程、国际化和本地化、打印等功能,GTK+ 的图形界面可视化编辑可以通过Glade 工具实现,集成开发环境有Anjuta、 CodeBlocks等。 GTK+ 是 GNOME 桌面环境的基础,二者结合比较紧密,对数据库连接的支持可以通过GNOME Data Access(GDA ) 扩展模块实现, 对音频视频等多媒体的支持可以通过GStreamer 库实现,对3D 图形的支持可以通过GtkGLExt 扩展库

13、实现。(五) Ecere SDK Ecere SDK10 是独特的编译型语言eC 的开发环境, eC 是由一位加拿大学者J r?me Jacovella-St-Louis 历经十几年研发而成。eC是 C 语言的超集, 其引入了C+、Java、Python、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - C#等面向对象特性和语法风格,是C 语言的面向对象扩展。eC 语言有自己独特的一套生态系统,从 eC 编译器、集成开发环境、跨平

14、台部署都有相应的工具,可以一次开发,到处部署, eC 开发的程序支持在Windows 、Linux 、Unix 、Mac OS 以及 Android 上面运行,而且部署 eC程序非常方便, 程序依赖的库很少,通常仅仅依赖一个轻量级的运行库。Ecere SDK现由加拿大Ecere 公司运营维护11, Ecere SDK是按照新版BSD (Berkeley Software Distribution )开源许可证发布,即BSD 3-Clause License 。Ecere SDK其实相当于一套生态系统,包含跨平台API (Application Programming Interface) 、2

15、D 绘图、 3D 绘图、网络、数据库访问、集成开发环境、构建系统等。最有特色的是 2D 和 3D 绘图引擎, Ecere公司还有一套商业地理信息系统GNOSIS,就是基于Ecere SDK 绘图引擎做的,用于开发跨平台的GIS(Geographic Information System )应用程序。(六) .NET/Mono .NET 是微软目前大力推广的程序开发框架12,通过 .NET 可以将各种编程语言的程序统一运行在RyuJit VM 虚拟机层之上, 从而使各种编程语言开发的模块可以互相利用,统一架构,类似 Java 程序运行在JVM 上。 .NET 开发库功能丰富, 又有微软力推, 所

16、以在 Windows平台发展迅速, 而且 WinPhone 也是原生支持.NET 库的,其集成开发环境就是著名的Visual Studio。在 2014 年 11 月 12 日,微软宣布将.NET 开发环境使用MIT 许可证开源,将支持在Linux 和 Mac OS 系统上运行,并向开发者提供免费的Visual Studio Community 2013 ,这也是一件轰动开源社区的大事。Mono 是 Novell 公司开发的跨平台.NET 运行环境 13 ,这样就可以在Linux 、Unix 、Mac OS 上面运行基于 .NET 开发的程序, 当然 Mono 也可以运行在Windows 系统

17、上。 Mono是开源软件,其集成开发环境是MonoDevelop 。此外还有 Mono 的衍生版开发库Xamarin ,旨在为移动平台开发应用,其集成开发环境为 Xamarin Studio 。Xamarin 现在是作为独立公司运营14,其产品简化了针对多种平台的应用开发,包括iOS、Android 、Windows Phone 和 Mac App ,开发语言为C#,需要注意的是Xamarin 为商业软件,是需要付费使用的15。(七) Dlib Dlib 是跨平台的开源C+通用库 16,按照 Boost Software License 许可证发布。 Dlib 采用模块化思想开发的,是由一堆比

18、较独立的模块组成,从2002 年开始, Dlib 开发库内容越来越多样,概括说来,包含网络、多线程、GUI 、复杂数据结构、线性代数、统计机器学习、图像处理、数据挖掘、XML和文本解析、数值优化、贝叶斯网络以及其他很多功能模块。Dlib 原本是用于科学计算的,由于其开放性和通用性思想,欢迎各个领域有用的高质量的软件模块加入,所以功能越来越多。三、常见跨平台开发方式对比上节对七种跨平台开发库进行了概括介绍,本节对它们进行三个方面的比较,通过表格形式展示它们各自的特色,比如开发语言、开发库所采用的授权许可、支持的操作系统、所包含的功能模块等等。(一)开发语言和许可证方面表 1 开发语言、许可证等方

19、面比较开发库开发语言许可证虚拟机层应用举例JDK Java 商业或 GPL JVM Oracle 数据库各种 Android 应用神州通用数据库永中 Office 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - Qt C+,存在Python 、 Perl 、PHP、Ruby 等语言绑定GPL、 LGPL 或商业无各种 KDE 程序VLC Media Player WPS for Linux 360 for Linux wxWid

20、gets C+,存在Python 、 Perl 、Java、Ruby 等语言绑定wxWindows License 无CodeBlocks CodeLite BitTorrent FileZilla GTK+ C/C+ , 存 在Python 、 Perl 、Java、Ruby 等语言绑定LGPL 无各种 GNOME 程序Firefox GIMP VMWare Ecere SDK C/eC BSD 3-Clause License 无Ecere IDE Ecere Chess Acovel Media Player .NET Visual Basic 、 C#、C+、F# MIT Licens

21、e RyuJit VM PDFCreator NuGet Muine Music Player Moonlight Mono GPL/LGPL/MIT License Mono 虚拟机Dlib C+, 存在 Python语言绑定Boost Software License 无科 学 计 算 领 域 如Mobile Mind 从表 1 可以看出跨平台开发库使用开源协议发布的居多,而且微软.NET 都开始走开源路线,所以使用开源库也的确是大势所趋。而开发语言使用C/C+/Java 的居多, C#算是后起之秀, Python、Perl、Ruby 等解释性脚本语言也可以用来做跨平台开发,当然这需要在操

22、作系统里安装脚本语言解释器和运行库,一般的通用操作系统都是支持这些脚本语言的。著名的黑客软件Metasploit Framework 就是采用Ruby 开发的,而且也是开源的。(二)操作系统支持方面表 2 操作系统支持比较开发库通用操作系统智能手机系统RTOS/ 嵌入式系统JDK Windows 、Mac OS、Linux 、Solaris Android 通过 Java ME 支持嵌入式设备Qt Windows 、 Linux 、 Unix 、Mac OS Android 、iOS、WinPhone、Tizen、MeeGo QNX 、VxWorks wxWidgets Windows 、 L

23、inux 、 Unix 、Mac OS wxAndroid 正在开发中暂无GTK+ Windows 、 Linux 、 Unix 、Mac OS 暂无通过GMAE项目有部分支持Ecere SDK Windows 、 Linux 、 Unix 、Mac OS Android 暂无.NET/Mono Windows Linux/Unix/Mac OS(Mono) WinPhone Android/iOS(Xamarin) 暂无Dlib Windows 、 Linux 、 Unix 、Mac OS 暂无暂无从表 2 可以看出, 跨平台开发库对通用操作系统的支持都是比较好的,由于移动开发平名师资料总结

24、 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - 台的火爆, 跨平台开发库对智能手机系统的支持也是发展趋势,目前是 JDK、 Qt、 .NET/Mono三个系列对移动平台的支持比较好。RTOS 和嵌入式系统由于其使用的特殊性,支持这些系统的跨平台开发库比较少。(三)功能模块方面表 3 功能模块方面比较开发库GUI 文件网络多线程数据库3D 图形多媒体JDK 有有有有有有有Qt 有有有有有有有wxWidgets 有有有有(wxCode) 有有G

25、TK+ 有有有有(GDA) (GtkGLExt) (GStreamer) Ecere SDK 有有有有有有目前仅音频.NET/Mono 有有有有有有有Dlib 有有有有SQLite 暂无暂无表 3 中七个功能模块是个人枚举的常见程序库模块,不是通用标准, 还有其他可能的模块表格中没有列出,仅是枚举常见的功能,对跨平台开发库进行对比。表格中加括号的是指该系列开发库的扩展模块,不是原生自带的。Dlib 由于主要用于科学计算,图形界面设计其实并不是它的特长,只是具有这方面的功能。.NET/Mono/Xamarin还处于潜力股阶段,等以后微软推广起来,.NET 是会有一席之地的。Ecere SDK 由

26、于其语言独特性,通常叫好不叫座,目前应用并不多。GTK+ 与 GNOME 、 Linux/Unix关系比较密切,真正用它来开发跨平台程序的情况不多。目前实际用来做跨平台开发比较多的是JDK 、Qt、wxWidgets 。四、总结本文首先简述了跨平台开发的需求背景,然后对JDK、Qt、wxWidgets 、GTK+ 、Ecere SDK 、.NET/Mono 、Dlib 等七种跨平台开发库逐一介绍,并对比了这些开发库的开发语言、授权许可、 支持的操作系统、常见程序库功能模块等,分析了这些开发库的应用情况,枚举了一些应用例子,为研究跨平台开发的人员提供参考。参考文献1 http:/standard

27、s.ieee.org/develop/wg/POSIX.html , POSIX 标准2 http:/ , Oracle 官方网站Java页面(提供 JDK)3 http:/ , Java官方网站(提供JRE)4 http:/www.qt.io/ , Qt Company 商业公司网站5 http:/qt-project.org/ , Qt 开源项目6 http:/www.wxwidgets.org/ , wxWidgets 官方网站7 http:/ , wxCode 扩展库8 http:/www.gtk.org , GTK+ 项目网站9 https:/developer.gnome.org/

28、references , GNOME 开发参考10 http:/ecere.org , Ecere SDK 项目网站11 http:/ , Ecere 公司官方主页12 https:/ .NET 页面13 http:/www.mono- , Mono 开源项目主页14 http:/ , Xamarin 商业公司主页15 http:/ ,Xamarin 国内 CSDN 代理16 http:/, Dlib 项目主页名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁