菜鸟笔记 -- Question 3.1 聊聊跨平台
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了菜鸟笔记 -- Question 3.1 聊聊跨平台相关的知识,希望对你有一定的参考价值。
学习Java的时候总是被用来吹嘘说Java的跨平台多么多么NB,可认真想想是那么回事吗?还记得吗Java是从C++发展而来的,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。知道了Java来自于C,那么我们就有了一个以为C是跨平台的吗?
C语言本来就是跨平台的,不过是“源码级”跨平台。本来就存在针对linux、windows的不同的编译器。所以有C语言“一次编写,到处编译”,Java是“一次编译,到处运行”的说法。如C++创始人酸溜溜的说法,JVM造了一个新的平台,让所有Java程序只能在这个平台上运行,而C和C++的代码可以在几十个不同的平台上运行,从源码这个角度而言,C和C++是跨平台的,而Java不是。这里所说的源码是经过编写未曾编译的。那么这么看起来Java的跨平台是不是真的有些鸡肋了呢?
这种说法也是有失偏颇的,因为Java和C针对的方向不同所以跨平台承担的责任也就不同了,C主要用于系统底层的开发,如操作系统:Linux,硬件驱动程序。所以对于跨平台就是源码级别的。而Java呢?
Java的起源, 发明的初衷, 最开始Java是为了机顶盒开发的, 机顶盒用的CPU不是x86架构的intel CPU而是单片机, 而单片机的发展是很迅速的, 你花了半年为某种单片机开发了程序, 等程序出来了可能这个型号的单片机已经没人用了, Sun当时是为了解决这个问题, 提出了程序只用写一遍编译一遍, 然后让JVM来适应单片机型号的不同.这是最初的跨平台,而发展到了今天呢?我们知道Java已经成为了web开发的主流语言,可是我们开发的时候是在Windows下开发,而部署往往是部署在Linux和Unix下的,所以此时Java的跨平台就又可以大展神威了,因为不管什么时候,Java说白了都是运行在JVM上的,真正需要跨平台的是JVM,所以对于我们编写程序来说,就让编码和跨平台分开了,便利了开发。Java的跨平台说白了就是下面的一张图:
以上是关于菜鸟笔记 -- Question 3.1 聊聊跨平台的主要内容,如果未能解决你的问题,请参考以下文章
Question20171231 聊聊为什么32bit只能支持4GB内存