高级语言编译和运行系统

概述

高级语言编译——>jvm——>os——>硬件

 

 

详解

能运行在java虚拟机jvm上的程序说明都有跨平台特性,Python、ruby等语言都可以通过解释器运行在jvm平台上。java或Python需要通过客户端javac编译成字节码.class、.pyc文件,然后通过两种编译方式(AOT、JIT)直接运行 字节码(16进制) 或 通过解释器Jpython/Groovy解释成机器码,不同的高级语言在jvm平台运行的解释语言不同 如java解释语言grovey到系统码、Python解释语言是Jython到系统码。

1.Jython解释器比Groovy反应慢

2.高级语言(java、Python)的源码编译成字节码(.class、.pyc)文件

3.Python是解释型语言也有编译过程只是相对java表现出来的少而已(java运行代码需要通过客户端javac编译下)

名词解释

JVM:一种能够运行Java字节码(Java bytecode)的虚拟机。现在JVM并不单单只能运行Java程序,在JVM上出现了若干使用Java虚拟机运行的脚本程序,比如什么PHP, Python, Ruby等等(图5)

字节码:字节码是已经经过编译,但与特定机器码无关,需要解释器转译后才能成为机器码的中间代码。

Java字节码:是Java虚拟机执行的一种指令格式

解释器:是一种电脑程序、是一门独立的语言,可以把高级语言一行一行转义运行。它会先将源码翻译成另一种语言(Grovey、Jython),以供多次运行而无需再经编译。其制成品无需依赖编译器而运行,程序运行速度比较快。参考看图三

grovey:无缝集成 所有已经存在的 Java对象和类库。直接编译成Java字节码

Jython:Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何高级语言,它提供了对其实现语言的一切存取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这使其有一个巨大的资源库

程序计数器:当前线程所执行字节码指令的行号指示器,一个类指针的数据结构

 

图解

Python有没有虚拟机?Python代码运行在哪里的?

图2

 图3

 

 图4

 

 图5

 

 图6

 

参考链接:

https://baike.baidu.com/item/%E8%A7%A3%E9%87%8A%E5%99%A8/10418965?fr=aladdin

https://www.cnblogs.com/chengdabelief/p/6576320.html

https://www.php.cn/python-tutorials-423340.html

https://blog.csdn.net/fuxiaoxiaoyue/article/details/93497558

https://www.jianshu.com/p/222a4ac2c1cc

https://www.cnblogs.com/baxianhua/p/9528192.html

 https://baijiahao.baidu.com/s?id=1596285609890190878&wfr=spider&for=pc

https://baike.baidu.com/item/编译器/8853067

posted on 2020-02-19 00:20  喝了少不如不喝  阅读(583)  评论(0编辑  收藏  举报

导航