跨平台概念是软件开发中一个重要的概念。一个操作系统下开发的应用,放到另一个操作系统下依然可以运行。
不是说C#不可以在Linux下开发,而是不可以编译后在Linux下运行。
坦白来说,跨平台应用几乎做不到,跨平台协议是可以的,跨平台语言是另外一码事。
微软一直吹牛逼说,应用程序可以直接拿到微软旗下其他操作系统使用,结果大家也见识到了,哪一样成功过?我清楚记得当初说win10操作系统问世,意味着手机和pc能通用,结果是电脑更复杂,win os手机彻底废了。java也吹嘘过夸平台的事,他和微软其实是一路货色,需要安装一个虚拟机或者opencv之类的伪翻译软件,当然虚拟机opencv也要符合操作系统自身。就比方说,中国人到日本去改日本国际,首先要日本当地发一张身份证明,看似日本人,实际上是个中国人。
网络协议本身就是跨平台的,因为他只依赖网卡设备,分析协议其实还是操作系统做的事,当初他们说web跨平台,你要确切明白是怎么回事,所有想使用web的操作系统都安装自己支持的浏览器,这就好比高速服务区提供水,男女老少管你什么人都必须自带杯子,才能把水喝到嘴里,他不提供饮水服务,只供水。所以任何操作系统,只要他能解析网络协议,也能浏览网络,请求网络,早期的手机就很困难,这几年手机就有很大的进步,关键一步就是网络。
跨平台语言是个噱头,语言都是自己定义,操作系统有权力给自己的指令命名,命名的这些指令就是他的语言结构。这个就好像取名字,你生个小孩想给他起什么名字,别人管不着,我叫他张三就是张三,叫他李四就是李四。将来他长大了,任何人都可以喊张三或者李四打招呼。java说我打印屏幕叫printf("hello world");php说我叫echo "hello world";将来我们有能耐了,他改为 输出黑楼沃尔德;。
别认死理,这些东西都不值得去深究,主要是让指令实现。
同一套代码兼顾不同平台,很多实现变成折中实现,一般用H5、CSS、JS这些语言就可以开发 APP了,而不用在专门的应用平台上来实现,比如在Windows环境下开发IOS、ADR的APP!
原生态开发:是开发者利用厂商提供的单一手机平台SDK进行开发。
跨平台开发:是一次开发、多次编译,开发者使用一门语言(Java)开发,通过跨平台中间件(包括跨平台运行库、平台转换引擎和Eclipse编译插件)将源码使用多种原生SDK进行编译,自动打包生成多种手机应用。
原生态开发、跨平台开发适合不同的开发者。原生态开发需要开发者熟悉原生SDK的开发语言(Android、J2ME、Symbian等语言),运行效率比较高(例如涉及3D图形加速的应用),但是每开发一种平台的手机应用都必须重新编码,消耗人力、时间较长。跨平台开发使用统一的语言开发(Java语言,UI控制用XML+CSS),开发者容易学习和掌握,不适合直接操作硬件底层的应用(例如3D游戏)。
嵌入式一般指完成某种特殊功能的专有的设备,区别于PC这种通用设备,像Mp3,DC,DV等都可以称之为嵌入式设备。嵌入式开发就是指为了嵌入式设备而进行的软件或者硬件开发。
跨平台一般指软件代码方面,就是说代码移植性好,可以在不同的平台进行编译运行,而且需要很少的改动,这有利于软件的发展。
这两个定义不是一个意思,一般嵌入式软件开发都使用跨平台的开发环境,这有利于仿真和调试,毕竟,我们不能在小小的MP3里调试播放程序,而是在PC中调试,在下载到设备中,这就需要我们的代码既可以在PC中运行,也可以在设备中运行,这就是跨平台的好处。
不知道我说清楚了吗?如果有疑问,可以PM我!谢谢~ 祝愉快~。