`
zhiying201039
  • 浏览: 41592 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

跨平台技术浅析

阅读更多

今天是假期的第一天,下午与同伴们一起去参观了下南阳汉画馆,感受到了浓烈的科技与艺术气息,这让我灵感阵阵,借助难得的状态,写成此文,以了我几日的心愿。

软件发展到今天,跨平台已经成为了一个不可阻挡的趋势,对现今的几种主要跨平台技术,在这里我们简单的分析一下它们的基本实现原理,在开始之前,我们要先弄明白几个基本的概念。

概念一:

语言与其链接库:语言通常会伴随有对应的链接库,没有链接库的语言,几乎什么什么程序也写不出来,打个简单的比方:你用C语言写一个“HELLO Word!!”小程序,你就要用到“stdio”的链接库,如果你没有使用它,将什么也出不来。

概念二:

平台与链接库:开发平台同样也附带的有对应的链接库,如果一个平台没有链接库,那将是一个没有任何开发空间的平台(此平台没有任何前途...),同样,打个简单的比方,你用Visual C++开发Windows程序,你需要用到GDI32,USER32或MFC等链接库。

搞明白前面的概念,我就好向你们解释跨平台了,我们在一个操作平台上开发的程序,为什么拿到另个平台上重新编译后就不能正常运行了?原因就在于平台的链接库上,比方说,你用C语言搭配Win32链接库(Windows的)开发一个程序,你把它拿到Linux上编译,却无法编译成功,问题就出在Linux没有Win32链接库。

下来我们来看看几种跨平台技术实现的基本原理:

QT:

QT的是这样做的,用一个链接库将各个主要平台的链接库抽象出一个共通的链接库,实践证明,你用C++搭配QT链接库做的程序,可以在不同的平台上编译后运行。

JAVA:

JAVA就要比QT先进了,它不但将链接库统一了起来,更将平台也统一了起来,它使用了一层JVM(Java虚拟机),Java的程序不用再重新编译,就可以直接跨平台运行,正因为如此,Java的口号是,“一次编译,到处运行”,但也因为如此,它牺牲了一部分的运行效率。

(哎~。。。。遗憾。。。。。)。

.NET:

微软的.NET技术的出现晚于Java,按照事物发展的规律来判断,.NET应该比Java做的更好,事实也确实如此,.NET的眼光更高,甚至想把编程语言的规格也统一起来,可以用一个公式来形象的表示.NET,语言规格+平台+链接库=.NET,其程度可以用包罗万象来形容,但是,这样做的很大缺点在于,统一了.NET平台上的语言规格,导致了各个编程语言的千遍一律,特点不突出,比如,如果Delphi准备移植到.NET平台上,为了符合平台要求,它要改掉许多很有特点的语言特性,这对Delphi来说恐怕非常不好,感觉用削足适履来形容这个弊端最合适。

看到这里,你应该对现在主流的跨平台技术有清楚的了解了,它们的实现方式各具特色,为了实现同一个目标,采用了不同的设计思想,但都实现了平台的跨越,这正是程序设计艺术的体现,不是吗?

2010年4月2日(清明节)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics