一、跨平台OR 跨语言 

跨平台——JAVA

    跨平台概念是软件开发中一个重要的概念,即不依赖于操作系统,也不信赖硬件环境。
    一个操作系统下开发的应用,放到另一个操作系统下依然可以运行。相对而言如果某种计算机语言不用修改代码即可做到高度跨平台,那么此语言就越抽象,硬件控制力就越低,只适合开发高度抽象的模型系统。诸如java,delphi和易语言,都已做到了跨平台。它们将可以在多种系统下开发,运行和维护。

    广义而言,一般的计算语言都可做到跨平台,开发商只需要提供各种平台下的Runtime/中间件环境即可。严格而言是指用某种计算机语言编制的程序只需要做小量的修改,编译之后即可在另外一种平台下运行,此时并不提供Runtime/中间件环境。例如Java是一种提供Runtime环境的跨平台解决方案,而C是一种标准且严格的跨平台语言。


跨语言——.NET
 
     跨语言的平台是指.NET是微软为了抗衡Java做出的对策。它包括了很多种以前的语言,比如J#,C#,C++,意思就是以前的老语言在.NET平台上都可以用,而未来程序的发展方向是跨语言平台,就是同样一个系统,可以是java写的也可以是c#写的,同样也可以是java和C#共同在运行,这个也就是跨语言平台。

 
 
VS
    通过跨语言编程,可以用另一种方法来实现跨平台,试想一下。UNIX环境下,用C写的程序,可以通过在WINDOWS下再编译一下就运行,而不用作任何改过,这不是跨平台吗?只不过它需要重新编译一下而已。而且,我认为,由于各种平台在运行环境上的不同,要想象java那样用同一种语言来实现跨平台,它的效率是很难比得上专为特定平台设计的语言的。

    所以我觉得跨语言的实现方法,会比单语言跨平台的方法更加有效。当然唯一的缺点就是我们要学习多种语言。

    跨平台还是跨语言,我的观点是必须从不同的角度来看问题,我个人认为从开发者的角度应该是跨语言重要(不是说跨平台不重要)。从用户的角度,那么就使跨平台重要了,作为用户,他们希望购买的软件可以不做任何修改就可以运行在不同的平台。
  
 
总结

   通过在软考复习中学习的“编程语言”,自己浅显的对跨平台和跨语言进行的理解如下,欢迎大家指正:

   相同:第一次编译都是产生各自的“字节码”,与机器无关。
      都需要运行平台上安装“运行环境”,java是JVM(Java虚拟机),.NET是需要.NET Framework .
  
  不同:JAVA 的第二次编译在JVM中自动进行。
     .NET 的第二次编译需要手动执行。