计算机高级语言类型主要有编译型和解释型两种,Java是两种类型的集合,在Java中源文件的后缀为*.java,之后通过编译生成一个*·class文件,最后在Java自己设计的一个计算机上运行,也就是虚拟机(JVM)。JVM是在一台计算机上由软件或硬件模拟的计算机,所有的*.class文件都是在JVM上运行的,即*.class文件只需认JVM,由JVM再去适应各个操作系统。如果不同的操作系统安装上符合其类型的JVM,那么以后程序无论到哪个OS上都是可以正确执行的。至于其它语言没有JVM的说法,当然也不能跨平台。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JAVA用户界面基本有两种,基于WEB的和基于JVM的。
基于WEB的是指JSP,JSF这些J2EE界面层,这些技术本质上来说,都是在服务器端编写的代码,生成HTML页面让浏览器看,所以只要操作系统能用浏览器,就能看到这些用户界面。严格来说,这是通过浏览器达到跨平台的目的。
基于JVM的就是基于本地的JVM运行时环境,AWT,SWING之类的界面。运行这类程序,需要本地安装有JVM。程序是调用JVM提供的类和接口,但是JVM在不同平台上的实现是不同的。其实就相当于在不同的平台上构建一个接口相同的层(JVM),为JAVA程序提供服务。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
另外,有一篇关于java跨平台的很好理解的一篇文章,http://blog.youkuaiyun.com/mazhaojuan/article/details/18839339
内容如下:
先来看一则小故事:
最近YY上开设了JAVA俄语班、JAVA英语班、JAVA日语班等等,关于JAVA的系列课程教室。小花是JAVA行业的大牛,于是YY的管理员邀请小花在工作之余,为一些初来乍到的学者们讲课。很多同学听说小花讲课不错,都想听听小花的课,可是问题来了:各位学者来自不同国家,他们大多只懂自己的国语(爱国呀!),而小花只懂汉语,对于英语略懂点(超级爱国者),这怎么办呢?有两种办法,第一,他每次上课前,先准备好演讲稿,各种语言都用自己懂的汉语来标注;第二,每次上课,带个翻译(这个翻译比较列害,八种语言不在话下)。
话说,这两种方式有什么不同呢?演讲稿不能灵活的变通,比如本来讲课定为周六上午,演讲稿上的开场白是Good morning,ereryone!结果小花临时有事调到了下午 ,小花还照此不误的念了开场白,结果惹来众笑,大牛也不过如此嘛,小花在学生面前丢了面子;而带个翻译呢,不管在什么时候讲课,讲的什么内容,他都能给你翻译成相应的语言。
你仔细想想,看看JAVA跨平台到底与上面的故事有何联系,你是不是会想到:不同的国家就好比是平台,而翻译者就好比是虚拟机!
到底什么是跨平台,JAVA又是怎么实现跨平台的?
JAVA字节码通过虚拟机翻译(解释)给不同的平台,这个过程就叫做跨平台。JAVA字节码文件只有一个,但针对不同的平台会有不同的虚拟机,比如有Mac平台的虚拟机、Linux平台的虚拟机、Windows平台的虚拟机等等……究其原因,实现跨平台最根本的东西是虚拟机(JVM)。