首先简单的解释一下Java跨平台的特征,相当于说写一个Java程序论述上可以运行在不同的操作系统平台上面(此处的平台我们就简单的看成是操作系统平台)。下面我们用一些事例来说明它的好处。

我们先了解一些基本常识,计算机的由硬件和软件组成,软件又分为系统软件和应用软件。在硬件上面先安装系统软件,在系统软件上面安装应用软件,并且它们相互之间存在是否兼容的问题,如下(图3-1)所示:

(图3-1)

软件之间的兼容性问题我们看下面一个示例(图3-2):

(图3-2)

我们在下载软件的时候经常会看到上图这样的画面,不妨试想一下,你使用安卓手机下载一个苹果版本的小尛软件,能够正常安装运行吗?当然不行了。这样 的话我们可以理解成,为了满足不同操作系统的用户需要开发不同版本的小尛软件,工作量显然很大。如果开发一套小尛软件能够就直接能够运行在不同的操作系统 之上,那岂不是爽哉!

Java跨平台的原理我们可以分成这么几步来看:

① 先在不同的操作系统上分别安装一个JVM(Java虚拟机)软件;

②  把Java源文件(.java文件)编译成字节码文件(.class文件);

③  再把字节码文件加载到JVM中运行,不管是什么操作系统都一样,只要是安装了Java的运行环境;

④  注意:JVM本身也是软件,所以需要针对不同的操作系统开发不同版本的JVM,但是这一点不用我们程序猿操心,因为Java团队本身已经提供了很多主流操作系统支持的JVM。

综上所述,Java通过JVM(Java虚拟机)间接的实现了它的跨平台特性。

   

示例解读Java的跨平台原理的更多相关文章

  1. 全面解读Java NIO工作原理(4)

    全面解读Java NIO工作原理(4) 2011-12-14 10:31 Rollen Holt Rollen Holt的博客 我要评论(0) 字号:T | T JDK 1.4 中引入的新输入输出 ( ...

  2. Java的跨平台原理

    JAVA的跨平台原理 JAVA的跨平台原理 Java是一种简单易用.完全面向对象.有平台无关性.安全可靠的.主要面向Internet的开发工具.Java自从1995年正式面世以来,它的快速发展已经使整 ...

  3. 全面解读Java NIO工作原理(3)

    全面解读Java NIO工作原理(3) 2011-12-14 10:31 Rollen Holt Rollen Holt的博客 我要评论(0) 字号:T | T JDK 1.4 中引入的新输入输出 ( ...

  4. 全面解读Java NIO工作原理(2)

    全面解读Java NIO工作原理(2) 2011-12-14 10:31 Rollen Holt Rollen Holt的博客 我要评论(0) 字号:T | T JDK 1.4 中引入的新输入输出 ( ...

  5. 全面解读Java NIO工作原理(1)

    全面解读Java NIO工作原理(1) 2011-12-14 10:31 Rollen Holt Rollen Holt的博客 我要评论(0) 字号:T | T JDK 1.4 中引入的新输入输出 ( ...

  6. 1,java的跨平台原理

    简单讲一下java的跨平台原理: (1)为什么跨平台: 由于各OS支持的指令集各不相同,就需要程序在不同的平台执行不同的代码 (2)JAVA是如何实现的: ava开发了适合不同的OS及不同位数的jav ...

  7. Java语言跨平台原理

    Java语言有一个很重要的原理叫:跨平台性. 在介绍Java语言的跨平台性之前首先要介绍一个很重要的概念:JVM: JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一 ...

  8. 快捷键和功能键、进入DOS命令行的方法、DOS命令讲解、java跨平台原理、JRE和JDK的定义、书写格式

    快捷键和功能键A:键盘功能键* a:Tab* b:Shift* c:Ctrl* d:Alt* e:空格 * f:Enter* g:Window* h:上下左右键* i:PrtSc(PrintScree ...

  9. Java跨平台原理与Java虚拟机(JVM)

    Java跨平台原理(字节码文件.虚拟机) C/C++语言都直接编译成针对特定平台机器码.如果要跨平台,需要使用相应的编译器重新编译. Java源程序(.java)要先编译成与平台无关的字节码文件(.c ...

随机推荐

  1. anaconda添加源(channels)

    如果使用environment.yml下载conda环境时,系统很慢,那么可以增加其他的下载源: - https://conda.anaconda.org/menpo - https://mirror ...

  2. 网页打开速度优化——HTTP请求头及响应头

    no-cache:不缓存过期的资源 no-store:不缓存 最近看了<图解HTTP>这本书,书上讲到了这两者的区别: no-cache从字面意义上很容易误解为不缓存,但是no-cache ...

  3. php5.5.15注释问题PHP Deprecated: Comments starting with '#' are deprecated in *.ini 警告解决办法

    PHP Deprecated:  Comments starting with '#' are deprecated in D:\mvam\php5\php.ini on line 1944 in U ...

  4. javascript 时间格式化方法

    对jquery进行扩展的方法: //对时间格式化(jquery方法扩展) Date.prototype.Format = function (fmt) { //author: meizz var o ...

  5. framework7 日历绑定其他字符串写法

    listArray,要绑定的数据 //绑定到日期标签上 $.each(listArray, function (n, value) { var dLYear = value.year; var dLM ...

  6. JAVA对list集合进行排序Collections.sort()

    对一个集合中的对象进行排序,根据对象的某个指标的大小进行升序或降序排序.代码如下: // 进行降序排列 Collections.sort(list, new Comparator<ResultT ...

  7. 了解iOS上的可执行文件和Mach-O格式

    http://www.cocoachina.com/mac/20150122/10988.html http://www.reinterpretcast.com/hello-world-mach-o ...

  8. 【转】Android UI开发第三十一篇——Android的Holo Theme

    好长时间没写Android UI方面的文章了,今天就闲扯一下Android的Holo主题.一直做android开发的可能都知道,Android 系统的UI有过两次大的变化,一次是android 3.0 ...

  9. softmax sigmoid

    softmax和sigmoid实际上都是属于logistic regression,sigmoid是二分类的lr,拟合Bernoulli distribution(二项分布):0softmax是多分类 ...

  10. 剑指offer28 字符串的排列

    1.全局变量可以在最后去定义并初始化,不一定非要在开头 2.此题有一种特殊情况需要考虑,比如字符串是“aa”,那输出应该是“aa”,而不是“aa,aa”,即相同的不输出.实现这个处理用了c++中的容器 ...