跨平台软件开发方式

跨平台软件开发方式

ID:20516442

大小:72.00 KB

页数:12页

时间:2018-10-13

跨平台软件开发方式_第1页
跨平台软件开发方式_第2页
跨平台软件开发方式_第3页
跨平台软件开发方式_第4页
跨平台软件开发方式_第5页
资源描述:

《跨平台软件开发方式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、跨平台软件的开发方式2007年04月15日星期日09:48原创:smalltalk随着经济和技术的发展,全球化进程的加速,特别是互联网的发展和普及,为软件提供了一个世界范围的运行环境,当一个软件发布到Internet上面时,这个软件很可能瞬间在全世界就被人使用。从软件开发商的角度来看,同时具有跨平台和全球化特性的软件能够最大限度的占有市场;从自由软件开发团体和个人来看,开发的软件不但能够运行在多种操作系统下,而且还能够以不同的语言版本运行,全世界用户都可以使用,这本身就符合自由和开放的追求。由于这些因素,跨平台技术和全球化技术一直是软件业研究和发展的重要课题。开发跨平台软件和全球化软

2、件的最大目的是为了争取更多的用户,获得更大的市场。跨平台软件能够在多个不同类型的操作系统下运行,它从操作系统层次拓宽软件的用户群体;全球化软件是既具有国际化特性又进行了本地化处理的软件,这样,世界上不同国家和地区的用户都能以自己熟悉的语言和习惯来使用该软件。具有跨平台特性的全球化软件是非常有“魅力的”,它能够吸引到更多的潜在用户。由于跨平台和国际化两者都是特别广泛的概念,不同的软件架构、不同的开发语言,采用的方法各不相同,为了做到不以偏概全,本篇文章将主要针对那些采用C/C++语言进行开发的、并准备添加或者已经具有跨平台特性的、同时还需要全球化的软件。文章为开发者在设计和实现这类软件

3、时提供一些指导性意见,给出一些针对跨平台软件实施全球化的方法,并提出了一种采用跨平台资源文件和模块配合的解决方案和具体实现。*什么是跨平台软件跨平台软件技术在过去的十几年来逐步发展,特别是当个人计算机(PC&MAC)性能的提高,LINUX操作系统的出现,JAVA语言的推出,呈现出跳跃发展的趋势。目前不但很多著名的自由软件项目提供跨平台的自由软件,而且很多专业的软件厂商也将他们的产品向不同的平台移植。在发展的历程中,跨平台软件技术也逐步形成规范,但由于平台固有的异质性,在进行跨平台软件开发时,往往在软件的功能、效能与移植性等之间,要做适当的权衡,比较难整理出一般性的、与平台及工具种类无

4、关的法则。什么是跨平台软件,简单讲就是至少可以运行在两个不同操作系统平台下的软件,完成相同或者相似的功能,而且这个软件的可执行程序来自与一份源代码。*跨平台软件的开发方式跨平台软件的开发方式大体有三种,第一种是先在一个基准平台上开发好,然后再移植到其他的操作系统;第二种是采用的跨平台模块组合;第三种是采用虚拟机技术,利用平台无关的语言进行开发。1.移植第一种开发方式是比较传统的做法,也是一直被广泛采用的方式。这种做法也称为软件移植(Porting),即把在一种操作系统下运行的软件通过改写部分代码,移植到另外一种或多种操作系统下运行。软件最初的设计、编码以及移植时使用的工具,这些决定了

5、移植的代价。如果软件在最初的设计、编码时没有考虑到以后的移植,大量采用了平台相关的技术和平台相关框架库进行编码,对这些代码移植将付出极高的代价。一种极端的情况是最初使用的开发语言不能跨平台的,以后要对这个软件进行移植,将不得不更换开发语言重新编写全部代码,还要进行全新的测试,这样的软件在移植时是异常困难的。1.1.宏定义软件的代码,从跨平台的角度来看,可以分为平台相关的和平台无关的。采用C/C++编写的软件,在进行移植时,平台无关的的代码基本上不需要做大的改动,但平台相关的代码需要做很大的调整。这里所说的平台包括操作系统和编译器,为了能够做到让编译器在编译时根据当前的平台状况来自动选

6、择需要编译的代码,我们一般需要用C/C++的编译宏指令来实现。举个例子,下面的一段代码是得到系统当前的时间并且格式化成字符串的操作,注意其中宏指令#ifdef…#else…#endif的使用。这段代码可以在Win32、Linux和大多数Unix平台通过编译:#include;#include;#ifdefWIN32#defineLOCALTIME_R(t)localtime((t))#defineSNPRINTF_snprintf#else#defineLOCALTIME_R(t)localtime_r((t),(structtm*)&tmres)#

7、defineSNPRINTFsnprintf#endifchar*getcurrentdate(char*buffer,unsignedintbuflen){if(buffer){structtm*tmnow;time_tlong_time;time(&long_time);/*Gettimeaslonginteger.*/tmNow=LOCALTIME_R(&long_time);/*Converttolocaltime.*/SNPRINTF(buffe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。