Java跨平台性

Java跨平台性

PS : 本文乃学习整理参考而来
前言: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初期,Java的确是一种解释型语言,但随着JDK1.1中引入了即时编译器(JIT)技术,Java在特定条件下同样可以进行编译执行。这时候再笼统的说“解释执行”,对整个Java来说就是没有意义的概念。所以也有认为Java是一种“半编译,半解释”的语言。


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值