Java C# .net 和 C C++ 跨平台的区别

当前主流的手机平台很多,而各个主流的平台的语言支持大同小异;如

1、windows系统WP8上主要支持 VB, C#, c/c++,

2、苹果系统ios上支持 object-c, c/c++

3、android系统上支持 java, c/c++

那么跨平台语言该如何选择?

C#.net java 不是跨平台的吗,它们和C/C++的跨平台有什么区别?

方便他人亦是方便自己,如果觉得还行就点下赞吧,这样可以帮助其他人更快的找到解决问题的方法;有疑问的也可留言哦, 谢谢!

工具/原料

  • Visio
  • Win7

方法/步骤

  1. C# .net Java的跨平台是指它们在“编译系统”生成的中间文件的字节码(byte code)文件不需要重新编译,就可以直接被“运行系统”使用;

    C/C++的跨平台是指不要重新写代码,需要重新编译成“运行系统”对应的机器码(binary code)后,才能够被“运行系统”使用;

    如下图所示(所有的名词的叫法以下图为准):

  2.  

    Java, C#的跨平台是建立在“虚拟机”的基础上的,通过虚拟机在程序运行时将“编译系统”生成的字节码(byte code) 转换成“运行系统”的机器码(binary code),属于解释性语言;

    C / C++是在“编译系统”上直接将代码生成“运行系统”上的机器码(binary code),属于编译性语言;

  3.  

    java, C#的跨平台受“虚拟机”的限制,如:

    1、.net环境只在windows上有,linux(Android)和unix(ios)都不支持;

    2、Java手机平台主要是Android支持,windows(WP8)和mac(ios系统)都不支持;

    3、.net ,和Java虚拟机在xp系统上默认是没安装的;

    4、xp系统不支持.net的高版本,如.net 4.5

    c/c++不受虚拟机的限制,只要能够编译成“运行系统”的“机器码”即可,这也是为什么现在大量的跨平台应用开发采用c/c++的原因;

  4. 4

    被人夸的跨平台的解释性语言,最后也没能跨上跨平台的梦;

    被人讽刺的不能夸平台的编译性语言,却成就了跨平台的梦;

    跨平台背后,一个美丽的诱惑,一个相反的梦;

时间: 2024-09-28 13:04:54

Java C# .net 和 C C++ 跨平台的区别的相关文章

关于PHP、JAVA、.NET这三种技术的区别

关于PHP.JAVA..NET这三种技术的区别 一.语言: PHP:PHP产生与1994年,其语法混合了C.Java.Perl 和他自创的一些编程语法:PHP是嵌入在HTML中执行的:它也是一种解释性语言.早期的PHP并非完全的面向对象编程语言,到了PHP4以后的版本才开始有了面向对象的概念. JAVA:JAVA产生与1995年,JAVA语言和JAVA平台统称为JAVA:它语法与C语言和C++语言很接近,并且JAVA是面向对象编程语言,JAVA是编译性语言,可以先将JAVA源码编译成.class

java中System.getenv和System.getProperties的区别

System.getenv获取的是系统的环境变量(就是用户在操作系统中设置的环境变量),windows和linux下环境变量的设置就不说了哦. System.getProperties获取的是系统的相关属性.在java api文档中已经列出了如下属性 如果我们要在java程序启动就能获取自定义的系统属性我们可以使用 java –Dname=zhuhui 这样我们就在系统属性中设置了名称为myname值为zhuhui的系统属性,那么就可以通过System.getProperty("name&quo

Java中final、finally、finalize的区别(转)

Java中final.finally.finalize的区别与用法,困扰了不少学习者,下面我们就这个问题进行一些探讨,希望对大家的学习有所帮助. 方法/步骤 1 简单区别: final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承. finally是异常处理语句结构的一部分,表示总是执行. finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等. END 方法/步骤2 1 中等区别: 虽然这三

Java:String、StringBuffer和StringBuilder的区别

Java:String.StringBuffer和StringBuilder的区别 1 String String:字符串常量,字符串长度不可变.Java中String是immutable(不可变)的. String类的包含如下定义: [java] view plain copy /** The value is used for character storage. */ private final char value[]; /** The offset is the first index

Java中字符串比较时==和equals的区别

==是比较两个字符串引用的地址是否相同,即是否指向同一个对象,而equals方法则比较字符串的内容是否相同. 例如String a = "abc"; String b = "abc"; a == b返回true,a.equals(b)同样返回true,这是为什么呢? 原来程序在运行时有一个字符串池,创建字符串时会先查找池中是否有相应的字符串,如果已经存在的话只需把引用指向它即可,如果没有则新建一个. 上例中创建a时,会在字符串池中首先创建一个"abc&qu

java i++与++i与&与&&之间的区别在哪里

package com.yuan.test; public class Testyuhuo {     public static void main(String[] args){         int i=3;         System.out.println("i++:"+i++); //output:3         System.out.println("++i:"+(++i));//output:5          if((i++>5)&

JAVA中 String 、StringBuffer和StringBuilder 的区别

String 内容定义成 final char[],只能在属性和构造函数中赋值,其它地方不能改变 :String 覆盖实现了 equals . StringBuffer 内容定义成了 char[] ,但没实现 equals. String 和 StringBuffer 的区别是: 1.String 通过构造新的String 实现可变字符串,而 StringBuffer 通过改变内部的内容属性来实现可变字符串. 2.new String("ABC").equals("ABC&q

JAVA中List、Map、Set的区别与选用

类层次关系如下: Collection ├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap └WeakHashMap 下面来分别介绍 Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些 Collection允许相同的元素而另一些不行.一些能排序而另一些不行.Java SDK不提供直接继承自Col

java:String使用equals和==比较的区别

"=="操作符的作用 1.用于基本数据类型的比较 2.判断引用是否指向堆内存的同一块地址. equals所在位置: 在Object类当中,而Object是所有类的父类,包含在jdk里面,但并不适合绝大多数场景,通常需要重写 public boolean equals(Object obj) { return (this == obj); } equals的作用: 用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同,返回值为布尔类型 equals的基本使用: boolean