编译型语言和解释型语言与简要Java运行机制

本文通过编译型语言和解释型语言的比喻,介绍了Java作为混合型语言的特性。Java源代码先编译成.class文件,然后在JVM上解释运行,结合了编译型语言的高效和解释型语言的跨平台优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

一本中文书若要给英国人看,有两种方式。第一种,把这本书直接全本翻译给他看;第二种,英国人找一个翻译官,翻译官每翻译一句就给英国人说一句。这两种方式虽然都能让英国人把书看完但各有利弊。第一种弊端在于如果书作者更新了内容,那么就要重新翻译整本书;第二种的弊端在于,你每次看书都得需要翻译官

编译型语言可以比做第一种翻译方式:

定义:在程序运行之前,通过编译器把源程序编译成机器码(可运行的二进制代码),以后再运行此程序时就不用在编译了。

优点:因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高,而且可以脱离语言环境独立运行。

缺点:编译过后如果某个模块需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的。

总结:执行速度快,效率高;依靠编译器,跨平台性差。

代表语言:c、c++

解释型语言可以比做第二种翻译方式:

定义:解释型语言的源代码不是直接翻译成机器码,而是先翻译成中间代码,再由解释器把中间代码进行解释运行。在运行的时候才将源程序翻译成机器码,翻译一句然后执行一句,直至结束。

优点:有良好的平台兼容性,只要安装了解释器(虚拟机)可以在任何环境中运行。并且灵活,修改代码的时候直接修改就行。

缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。

总结:执行速度慢,效率低;依靠解释器,跨平台性好。

代表语言:JavaScript、Python、PHP

Java兼有两种语言的特性:

java是混合型语言:

既然两种方式都各有缺点,那么就有人会想把两种语言结合起来,取其精华,去其糟粕,就出现了半解释,半编译语言。

Java即是编译型的,也是解释型语言,总的来说Java更接近解释型语言:

可以说它是编译型的。因为所有的Java代码都是要编译的,.java不经过编译就什么用都没有。同时围绕JVM的效率问题,会涉及一些如JIT、AOT等优化技术,例如JIT技术,会将热点代码编译成机器码。而AOT技术,是在运行前,通过工具直接将字节码转换为机器码。

可以说它是解释型的。因为Java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的。

java先编译,到操作系统时才解释。

java运行的运行:

java中源文件后缀为".java",通过编译(也就是javac命令),使".java"文件转化为".class"文件,然后在计算机上执行(Java命令)".class"

文件,这就是Java程序的运行过程。在此过程中,JVM负责读取和处理".class"文件,所有的"class"文件都是在JVM上运行的,JVM负责与不同的操作系统进行匹配。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值