频道栏目
首页 > 程序开发 > 软件开发 > Java > 正文
Java的跨平台性知识讲解
2017-12-07 10:55:04      个评论    来源:u010046451的博客  
收藏   我要投稿

Java跨平台性

前言:Java优秀的跨平台性,和其语言特性紧密相连;

首先得说程序设计语言的分类,分为:编译型语言、解释型语言。

程序设计语言分类描述:程序执行时的基本表示是①实际计算机上的机器语言还是②解释器解释才能得到的机器语言(②虚拟机的机器语言),可以由此将程序设计语言分为①编编译型语言和②解释型语言。

由于计算机只认识机器语言(二进制),所以高级语言(如C、C++、Java、Python、VBScript、JS等)都不能被计算机直接执行,必须经过有效翻译。如:编译和解释都是将高语言翻译成机器语言的方式,而区别是翻译的时间不同,由编译型语言写的程序在执行之前,先经过编译过程,把程序编译成机器语言文件,当运行时直接执行,因此只需进行一次翻译。而解释型语言写的程序不需要编译,直到程序运行时才进行动态翻译后执行。

以下对几个名词进行解释:

编译型语言:源程序经过编译、汇编和链接得到输出目标代码,然后由计算机执行目标代码(机器指令)。代表语言:C 、C++。

解释型语言:由可以理解源代码的解释程序(解释器)执行,解释器的任务是将源代码(中间代码)解释成可执行的机器指令。 代码执行时逐一解释成可执行的机器指令。 代表语言:Ruby、VBScript、JS,以及大多动态语言都是解释型的。

编译器:把源程序编译成机器语言,保存成二进制文件,这样运行时计算机可以直接以机器语言来运行程序,执行效率高。

解释器:只在程序执行时,才一条条解释成机器语言给计算机执行,理论速度相对慢。

总结:

不同操作系统通过编译生成的字节码文件的格式不同,所以大多数编译型语言(如C语言)在Windows上编译后的文件,在Linux上出于该原因,无法执行,跨平台性受到限制。而解释型语言通过解释器(软件解释器)将中间代码动态解释成可以执行的机器指令。这就是编译型语言不如解释型语言跨平台性好的原因所在。

而Java较为特殊,Java需要编译,但是没有直接编译成机器语言,而是编译成为.class的字节码文件。然后通过Jvm的解释器进行解释执行。在Windows系统上运行,则通Windows上的Jvm进行解释,而在Linux系统上,则通过Linux上的Jvm解释执行。所以Java跨平台,需要保证有相匹配的Jvm,如果没有,则不能进行跨平台。

这里写图片描述

网上对于Java是属于编译型还是解释型语言热议比较多,也有认为Java是一种“半编译,半解释”的语言,本人理解更倾向于后者。

PS:Go语言初识:一种编译型语言,但是不仅有C、C++般的执行效率,还有优秀的跨平台性,得益于Go语言编译器可以编译生成不同操作系统的机器码。

点击复制链接 与好友分享!回本站首页
上一篇:java实现spring boot微信支付服务端代码教程(app支付、扫码支付等)
下一篇:java中重载overload的测试讲解
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站