当前位置:首页新闻资讯行业动态

攻克跨平台技术,培育我国IT新生态--2020-09-17

核心技术是国之重器,是我们最大的命门。随着我国经济由高速增长阶段转向高质量发展阶段,关键核心技术受制于人已成为制约发展的瓶颈。要大力提升自主创新能力,尽快突破关键核心技术,这是关系我国发展全局的重大问题,也是形成以国内大循环为主体的关键。

——习近平总书记在经济社会领域专家座谈会上的讲话


长期以来,我国基础软硬件技术路线还是以追踪国际先进技术为主,难以建立自己的生态。要构建我国IT生态体系,必须寻找突破口开展关键基础创新,跨平台技术便是其中之一。


一、我国IT生态发展进一步催生跨平台需求


跨平台问题伴随个人计算机发展而出现,至今已有近30年的历史。当前,桌面端以Windows+x86平台为主,服务器端以Linux+x86平台为主,移动端以Andriod/iOS+ARM平台为主,上层应用往往需要兼容由不同指令集架构和操作系统构成的多个平台。其实在我们日常下载安装软件的过程中就不难发现,应用程序经常区分Windows版本、Linux版本、iOS版本、Andriod版本,有些应用在同一操作系统也会分x86、AMD64版本,甚至在同一操作系统的不同版本(例如Windows 8、Windows 10)之间也不能兼容。因此,为了增加业务代码的复用率,减少因为要兼容多个平台带来的工作量,从而降低开发成本,出现了跨平台技术。


近年来,我国IT生态加速发展,CPU、操作系统从可用步入好用阶段,进入市场推广期。但由于技术标准的缺失,技术路线较为分散,主流CPU有MIPS、ARM、x86、Alpha四大指令集架构,操作系统包括统信UOS、麒麟OS等数十个。技术产品的兼容适配成为产业发展的重要部分,除底层的指令集架构与操作系统之间适配外,上层软件作为IT生态中最庞大的部分,也要针对操作系统和指令集架构平台提供相应的兼容方案,同款应用软件版本数量剧增,这给广大软件企业带来了更多的开发和迁移成本,也对跨平台技术提出了更高的要求。


二、实现跨平台的四大技术路线


(一)跨平台技术目标


解除应用对指令集架构的依赖。计算机不能理解高级语言,更不能直接执行高级语言,而只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成机器语言(也被称为机器码或二进制代码)。而不同的指令集架构所能够支持的机器码规范不同,应用程序要想在某个指令集架构上运行,必须编译成该种指令集架构所理解的机器码。因此,跨平台技术需要解决不同指令集架构之间的机器码不兼容问题,来解除应用对指令集架构的依赖。


解除应用对操作系统的依赖。一方面,一个应用程序除了主要的二进制代码之外,辅助的文件头信息用于定义二进制代码的加载运行机制等。不同操作系统可执行文件结构不同,如Windows上是PE格式,Linux上是ELF格式。另一方面,一个应用程序在运行时除了执行自身程序的二进制代码,一般还需要调用操作系统提供的系统库,不同操作系统提供的系统库内容和调用方式均不同,如Windows是.dll,Linux是.so,Mac OS是dylib。因此,跨平台技术需要解决不同操作系统之间的文件结构不兼容、运行时库不兼容问题,来解除应用对操作系统的依赖。


(二)跨平台技术路线


计算机领域有一句名言:“任何问题都可以通过增加一个中间层来解决”,跨平台问题当然也不例外。根据要引入的中间层技术原理不同,中间层可分为接口标准层、接口转换层、运行环境层、编译环境层等四类,对应的跨平台技术我们称之为接口标准方案、接口转换方案、运行环境方案、编译环境方案。


接口标准方案是指,通过增加接口标准层统一指令集架构和操作系统对外提供的接口,实现平台本身支持跨平台。如UNIX POSIX定义了操作系统接口标准,AMD64实现了指令集向后兼容。


接口转换方案是指,通过增加接口转换层将底层平台接口转换成其他平台接口,实现平台接口支持跨平台。如Wine支持在Linux等其他操作系统上运行windows程序,WSL实现了在Windows上兼容Linux应用,WMware等虚拟化软件可通过支持安装其他操作系统实现兼容,Rosetta2是苹果公司推出的从Intel向ARM的指令集转换方案。


运行环境方案是指,通过增加运行环境层为某类上层应用提供统一的运行环境,实现应用环境支持跨平台。如Java、Python、Node.js等解释型编程语言的解释器平台,Chrome等浏览器平台以及微信小程序等小程序平台。


编译环境方案是指,通过增加编译环境层为每个平台分别生成一个版本应用程序,实现应用本身支持跨平台。根据源代码的复用程度又可以分为“一套源代码”、“多套源代码”两类。前者代码复用程度最高,通常能够同时编译出支持多个平台的应用程序版本,如ReactNative、PhoneGap、Universal、Flutter、Qt等技术平台,后者则需要修改应用程序源代码进行平台适配。


三、攻克跨平台技术成为培育我国IT生态的关键一环


当前跨平台技术众多,有直接面向应用跨平台开发的技术,也有为了专门支持平台之间应用迁移的跨平台技术,但都只能解决某个局部的问题,通用性差,没有一种技术能够系统化解决我国当前面临的多平台开发和迁移问题。如Linux虽实现了UNIX POSIX标准,上层应用仍需对各类Linux发行版进行适配;Wine实现了在Linux上运行Windows程序,但仅限于x86指令集架构下,不支持其他指令集;Rosetta2是苹果公司推出的Mac OS从x86向ARM的指令集转换方案,不支持其他指令集,也不支持其他操作系统;JVM运行环境仅支持Java语言编写的应用;Flutter编译环境仅支持谷歌Dart语言;等。


除通用性问题外,跨平台技术还存在不少其他方面的问题。如,由于引入中间层必然会带来性能问题,当前以Wine、WSL、Rosetta2为代表的接口转换方案性能问题最为突出;接口标准方案需要底层平台提供商支持,技术可行性和行业接受度均受到制约;编译环境方案会对应用开发者带来额外工作量。


因此,有必须要将跨平台技术列为我国IT生态建设的重要任务之一,推动产学研机构联合攻关,结合接口标准、接口转换、运行环境、编译环境等跨平台四大技术路线,研发适用范围广、性能好、易推广的系统化跨平台解决方案。


来源:李曼 谢智刚 中国信通院CAICT