今天复习java的知识,学到了类加载器,jvm第一个类加载器是BootStrap,用来加载其它的类加载器,比如AppClassLoader。不清楚的同学可以去网上找下张孝祥老师的《java高新技术》的视频查看一下。
在视频中张老师提到BootStrap是用C++编写的,那么就引入了C++是否是跨平台的思考,因为我一直知道的只是JAVA在宣传跨平台,偶尔也听说过.net支持linux可以使用C#开发等等。
百度一圈发现众说纷纭,但可以确定的是C++是可以跨平台的,只不过实现方式不同而已。
此处引用网友的说法:
C++编程语言是跨平台的,这正是他当年的设计的目标。
需要重新编译,只是C++编译器输出的可执行代码不是跨平台的,但是这正是C++源代码跨平台的实现手段之一。
你有没有想过,只要开发平台上安装了C++开发工具,发布平台上可以什么都不用安装就可以执行了,而Java必须在目标平台上安装JVM,你认为这样才叫跨平台,它并没有跨平台,它只是在自己的平台上运行,它在所有的平台上附加了JAVA虚拟机平台,类似于一个小的操作系统。
Java它自身就是一个平台。
-----------------------------------
总结:
这说明所有语言都是跨平台的,毕竟要吸引用户去使用它,只不过表现形式和操作方法不同而已。这里引出了“一次编译,到处运行”。java并不是编译机制,而是解释机制。
java是仅需编译一次即可,安装上JVM,底层的处理交给它处理就好了。而JVM也是用C++帮你实现了与底层硬件的交互。你只需了解java提供的api即可写出跨平台程序,不用去操作系统平台的问题啦。
网友的神比喻:
如果把 Java的程序比做“汉语”的话,字节码就相当于“世界语”,世界语不和具体的“国家”关,只要这个“国家”提供了“翻译”,就可以再快速地把世界语翻译成本地语言。
博客推荐:http://blog.csdn.net/wangyongxia921/article/details/28117155
-----------------------------------
