-
Java 是编译与解释共存的语言
2020-07-28 10:48:06学习java已有一段时间,但是还说摸不清java到底是编译型语言还说解释型语言,然后网上查阅整理之后得到自己对java的认识——Java 是一门编译与解释共存的语言。 首先了解编译与解释的定义: 编译型语言:将做好的源...学习java已有一段时间,但是还说摸不清java到底是编译型语言还说解释型语言,然后网上查阅整理之后得到自己对java的认识——Java 是一门编译与解释共存的语言。
首先了解编译与解释的定义:
编译型语言:将做好的源程序一次性编译成二进制代码的可运行程序,然后就可以直接运行这个程序。
解释型语言:将源程序翻译成机器能理解的语言,翻译一句执行一句,直到结束。
java 比较特殊,以上两种方式都有所涉及,所以比较难区分。
java从源代码到运行的流程如下。
java源程序首先要经过一次编译形成字节码文件.class,此字节码文件不面向特定机器,而是面向JVM虚拟机的,具体面向机器的过程交由JVM来完成,不同的操作系统有着不同版本的JVM,这些JVM并不相同,但是他们都能够识别相同的.class字节码文件,将字节码文件翻译成特定机器的二进制码来执行。所以java 的跨平台性就是java源程序编译成的.class文件,在任何操作系统上通过该系统对应的JVM都能够顺利执行,java跨平台不等于JVM跨平台,JVM是非跨平台的!
从java源程序到执行的过程可以看见,这个过程即有了编译步骤也有解释步骤。但是本质上来讲,编译的最终结果也只是.class文件,不是机器码,最终还是需要JVM来统一解释,所以更多的应该将java视为解释性语言。
由于解释性语言性能比较低,后来java引入了JIT编译,某些被频繁执行的方法或者代码块,会被JVM认定为“热点代码”。在运行时JVM会把这些热点代码编译成与本地平台相关的机器码,并且进行各种层次的优化,以提高执行效率。 -
Windows下使Python2.x版本的解释器与3.x共存的方法
2020-09-21 19:52:13主要介绍了Windows下使Python2.x版本的解释器与3.x共存的方法,命令行中调用起来很方便,需要的朋友可以参考下 -
Java 是编译和解释共存的语言
2020-03-15 15:53:49因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的,那也就算是解释的了。 三、但是,现在的JVM为了效率,都有一些JIT优化。它又会把.class的二进制代码编译为本地的代码直接运行,所以,...一、你可以说它是编译型的。因为所有的Java代码都是要编译的,.java不经过编译就什么用都没有。
二、你可以说它是解释型的。因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的,那也就算是解释的了。
三、但是,现在的JVM为了效率,都有一些JIT优化。它又会把.class的二进制代码编译为本地的代码直接运行,所以,又是编译的。
像C、C++ 他们经过一次编译之后直接可以编译成操作系统了解的类型,可以直接执行的 所以他们是编译型的语言。没有经过第二次的处理 而Java不一样他首先由编译器编译成.class类型的文件,这个是java自己类型的文件 然后在通过虚拟机(JVM)从.class文件中读一行解释执行一行,所以他是解释型的语言,而由于java对于多种不同的操作系统有不同的JVM所以 Java实现了真正意义上的跨平台!java语言:编译 解释 运行
java虚拟机:
java是解释型的语言,因为虽然java也需要编译,编译成.class文件,但是并不是机器可以识别的语言,而是字节码,最终还是需要 jvm的解释,才能在各个平台执行,这同时也是java跨平台的原因。所以可是说java即是编译型的,也是解释型,但是假如非要归类的话,从概念上的定义,恐怕java应该归到解释型的语言中。
附:
编译型的语言包括:C、C++、Delphi、Pascal、Fortran
解释型的语言包括:Java、Basic、javascript原文链接:https://blog.csdn.net/qq_39729527/article/details/81784695
-
论文研究-多数控代码解释器共存的设计与应用.pdf
2019-09-06 22:25:06当前数控系统种类繁多,各大数控系统厂商数控代码指令互不兼容。在开放式数控系统及仿真软件中越来越多...基于Lex 和 Yacc 对一个数控系统中多数控代码解释器共存开展了研究,并在GT100型数控系统中得到了成功地应用。 -
乌班图中多个python解释器共存的问题
2020-04-15 23:05:26我的乌班图中也不知道为啥有python2.7,3.5,3.6三个版本的,一直用的是3.6的,其他两个可能因为anaconda3没安装的缘故用不了,今天遇到的问题就是模块下载的问题。...然后,我想删了其他两个解释器,留一个3.6再下...我的乌班图中也不知道为啥有python2.7,3.5,3.6三个版本的,一直用的是3.6的,其他两个可能因为anaconda3没安装的缘故用不了,今天遇到的问题就是模块下载的问题。
然后发现默认安装在python3.5中,emmm…
然后我想试着将安装在3.5里的模块,复制到3.6中。
然后,emmm.(很nice…),发现找到的那个压缩包打不开
然后,我想删了其他两个解释器,留一个3.6再下载安装就好了。或者将默认python3指向3.6的。又想了想会不会又什么影响。最后无奈还是请教了老师,才得知我如果删解释器或使用软链接指定默认的,由于python解释器有全局解释器锁(GIL)的缘故,可能会导致失控(反正后果应该不堪设想)。(再次提醒,用了挺久的解释器,不要试图删解释器或使用软链接修改默认解释器)
最后,老师让我在pycharm中先导入要下载安装的模块,然后光标放在模块名上,Alt + 回车,点击Install package pymysql (安装pymysql)。然后右下角就会提示Packages installed successfully(安装成功)。再次导入就有提示,不会标红了。
我只能说老师教的这招神奇,nice啊,下次直接在导入时下载安装就好了。
-
解决Ubuntu16.04中自带python解释器多版本共存的问题
2019-05-21 20:25:38Ubuntu16.04中简易安装,是自带python解释器2.7和3.5,公司项目开发需要3.7版本的解释器,直接apt-get install python3.7安装python解释器,会出现版本不兼容的问题。 解决方法(网上有其他方法,注意区分): ...问题描述:
Ubuntu16.04中简易安装,是自带python解释器2.7和3.5,公司项目开发需要3.7版本的解释器,直接apt-get install python3.7安装python解释器,会出现版本不兼容的问题。
解决方法(网上有其他方法,注意区分):
使用:pyenv
GitHub地址:https://github.com/pyenv/pyenv
安装教程:(来源于GitHub)
1、安装 curl(系统已安装可忽略)sudo apt install curl
2、使用pyenv自动安装
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
3、根据提示添加环境变量(注意环境的解释器)
sudo vi ~/.bashrc
4、添加下边3行代码
下面的代码不要复制进去添加,依据自己的提示去添加 export PATH="/home/主机的名字/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
5、执行环境变量source ~/.bashrc
6、重置shell
exec "$SHELL"
这里只介绍安装,参考GitHub,不介绍使用
-
Win7中如何让两个版本python pip共存,以及vscode解释器的设置
2020-06-30 10:07:39下面这篇文章说的是python2 3共存的问题。 https://www.cnblogs.com/Jonas9631/p/10177091.html 我自己遇到的问题是想安装python3.6.4和python3.8共存的问题。 因为旧的工程很多包是在python3.6.4基础上安装的。... -
centos安装python3与自带的python2共存方法(一篇就懂,图文并茂带解释)
2018-10-23 15:03:27目的:由于centos自带的python是2,我们要安装python3,并使2和3共存,通过python或python2或python2.7来调用2,python3来调用3 自带的python的软连接的结构是,python指向python2,python2指向python2.7 且自带的... -
python3 x完全兼容python2 x_Windows下使Python2.x版本的解释器与3.x共存的方法
2020-12-04 10:47:40Python2 和 Python3 是不兼容的,如果碰到无法升级到 Python2 代码,或者同事中有坚守 Python2 阵营的情况,就要考虑 Python2 和 Python3 在系统中共存的情况。Mac OS X 和 Linux 不必考虑这个情况。因为这些类 Unix... -
python2与python3解释器共存方法
2019-12-26 08:17:211.先准备好python2和python3的安装包 2.正常安装python2和3 3.添加环境变量 环境变量—用户变量path----编辑 新建环境变量,根据python的安装路径添加 比如C:\Python27和C:\Python27\Scripts 这是添加了python2的... -
、为什么jvm要使用解释器和编译器共存的架构_JVM系列-4.了解JIT
2021-01-17 18:18:36JIT编译是动态编译的一种特例。JIT编译一词后来被泛化,时常与动态编译等价;但要注意广义与狭义的JIT编译所指的区别。之前我们在架构简介中提到过JIT,它处于执行引擎中。JVM运行参数篇中,提到了JVM运行模式有三种... -
如何让多个TensorFlow-GPU版本共存!【图文解释】
2020-08-24 21:13:11环境:Windows10下...目标描述解释:我的电脑上安装有anaconda,anaconda上有多个虚拟环境,其中有两个关于TensorFlow-GPU的环境:tensorflow2GPU和tf23GPU,这两个环境,第一个是关于TensorFlow2.0.0GPU版本的,第 -
、为什么jvm要使用解释器和编译器共存的架构_JVM系列-2.JVM架构简介
2021-01-17 18:18:47架构简介JVM架构图JVM的架构核心包括以下几部分:类加载子系统:主要用于加载字节码文件到运行时数据区,也就是将class文件中的内容加载到方法区中,用于完成类加载的过程。主要包括加载、链接和初始化三个过程。... -
、为什么jvm要使用解释器和编译器共存的架构_「LLVM」开源软件架构之 LLVM
2020-12-31 00:36:40这是一篇译文,原文地址在这里:The Architecture of Open ... 这章节讨论 LLVM 的设计思想,LLVM 是一系列紧密联系的底层工具链组件的统称(例如链接、编译、调试等),同时 LLVM 兼容已有的工具,例如运行在 Uni... -
python3解释器执行not 1 and 1_编程语言的分类,python解释器多版本共存.执行python的两种方式,变量,用户与...
2020-12-04 11:45:03一、编程语言的分类?机器语言:直接使用二进制指令编程,...高级语言需要被翻译成计算机能够读懂的二进制才能被执行,按照翻译方式可以分为编译型和解释型。编译型(需要编译器):类似于谷歌翻译解释型(需要解释器... -
、为什么jvm要使用解释器和编译器共存的架构_JVM的即时编译器及优化,一篇文章就够了...
2021-01-05 18:03:22比如,很多朋友在面试当中还会遇到这样的问题:Java是基于编译执行还是基于解释执行?当你了解了Java的即时编译器,不仅能够轻松回答上述问题,还能如数家珍的讲出JVM在即时编译器上采用的优化技术,而且在实践过程... -
jvm为什么要使用解释器和编译器共存的架构_双管齐下,JVM内部优化与JVM性能调优...
2020-12-25 20:41:04这里解释:JVM优化:JVM本身自带的编译时、运行时的优化机制,各个jdk版本会有些不同(如泛型、集合框架等),不随程序员操作而变化,程序员只要学习了解即可;JVM调优:又称JVM性能调优,是指Java程序员在学习完成... -
、为什么jvm要使用解释器和编译器共存的架构_详解JVM运行原理及Stack和Heap的实现过程...
2021-01-12 22:53:16概述因为线上系统遇到CPU100%的问题,这种问题在流量较大时比较常见,因为JDK自身有很多JVM调试工具,如jps、jstack、jmap、jhat、jstat等使用工具,在实际工作中使用这些工具进行调试是十分必要的,一般通过上面... -
编程语言的分类,python解释器多版本共存.执行python的两种方式,变量,用户与程序交互...
2018-11-16 18:31:00一、编程语言的分类? 机器语言:直接使用二进制指令编程,直接操作硬件,... 高级语言需要被翻译成计算机能够读懂的二进制才能被执行,按照翻译方式可以分为编译型和解释型。 编译型(需要编译器):类似于谷歌翻... -
、为什么jvm要使用解释器和编译器共存的架构_JVM整体结构、执行流程以及2种架构模型...
2021-01-17 18:18:36方法区和堆:多线程共享虚拟机栈、本地方法栈、程序计数器:每个线程独有一份执行引擎:包含三部分:解释器,及时编译器(后端编译器),垃圾回收器它采用解释器与即时编译器并存的架构。在今天,Java 程序的运行性能... -
、为什么jvm要使用解释器和编译器共存的架构_阿里架构师深度学习java虚拟机心得PDF、不愧是进了阿里的大牛....
2021-01-17 18:18:47你能够明白为什么Java最早期被称为解释型语言,而后来为什么又被大家叫做解释与编译并存的语言(了解JVM中解释器以及即时编译器就可以回答这个问题);你能够理解动态编译与静态编译的区别,以及动态编译相对于静态... -
python基础-python解释器多版本共存-变量-常量
2019-06-28 19:42:00一、编程语言的发展史 机器语言-->汇编语言-->高级语言,学习难度及执行效率由高到低,开发效率由低到高 机器语言:二进制编程,0101 汇编语言:用英文字符来代替0101编程 高级语言: 编译型语言:... -
利用Anaconda配置Python 2 环境与Python 3 共存,并在PyCharm添加Python 2解释器
2019-05-01 06:30:55本篇利用Anaconda安装Python2,使得与python3共存。并且利用Pycharm配置Python2编译器。本篇亮点在于比较详细的列出如何找到Python2的python.exe文件,并且配置Python2编译器。 -
python是一种什么类型的高级语言_python介绍 编程语言分类及对比 python解释器安装(多版本共存) 变量 ...
2020-11-24 12:39:58python介绍编程语言分类及对比python解释器安装(多版本共存)变量数据类型(三种)一:python介绍1、python是什么?python是一门编程语言,编程语言就是一门语言语言就是一个事物与另外一个事物沟通的工具而编程... -
python2和python3的共存问题
2018-09-29 10:39:47同时在C盘安装了python3.6和python2.7两个版本(还有一个Anaconda3的以后再解释,这里不影响)安装python的教程以后有时间我会写一下,不会的话可以看下别人的教程,这里暂时不再赘述,这里主要讲python3和python2的... -
Linux下多版本php共存的原理、方法
2021-01-20 14:49:30而PHP-FastCGI运行后会通过文件、或本地端口两种方式进行监听,在Nginx中配置相应的FastCGI监听端口或文件即实现Nginx请求对PHP的解释。 既然PHP-FastCGI是监听端口和文件的,那可以让不同版本的PHP-FastCGI同时... -
python2.7 和python3.x的共存问题
2018-11-06 16:06:33最近工作需要在安装3.x后有安装了2.7作为flask框架的准备,在安装时遇见了共存的各种问题,首先是cmd中的python2.7和3的切换,将文件中的python.exe和pythonw.exe名称进行修改即可 事情往往不会就此结束,虽然在... -
Ubuntu16.04部署python2和python3共存的Jupyter Notebook
2018-09-14 10:18:14自己计算机里面共存了Python2和Python3,ipython作为试探性的REPL解释器使用的频率还是挺高的,分别在2和3下安装完ipython notebook后怎么分别使用这两种内核呢 按照默认的 jupyter notebook命令,只能运行一种内核... -
TextView中的图文共存问题--Android学习笔记6
2016-04-27 14:40:54TextView中的图文共存问题在网上是有好多例子,但是大部分没有注释,或者解释的不清楚,这里在学习的基础上一起将其梳理一遍。中间遇到的相关知识我都会一一解释。争取做到一起学习。先看下整体效果: 二、...
-
java invalid int_aes 解密出现 java.lang.NumberFormatException: Invalid int: "ch"
-
java 合并各程序_JAVA写的文件分割与文件合并程序
-
实现 MySQL 读写分离的利器 mysql-proxy
-
mysql-8.0.22-el7-x86_64.tar.gz
-
MySQL 数据类型和运算符
-
群晖USB转串口驱动安装包
-
领域驱动
-
朱老师鸿蒙系列课程第1期-3.鸿蒙系统Harmonyos源码配置和管理
-
使用vue搭建微信H5公众号项目
-
喉关节的建模及数值模拟研究
-
华为1+X认证——网络系统建设与运维(初级)
-
java 赋值0 但是 结果是 16_JAVA 连等赋值问题
-
VMware vSphere ESXi 7 精讲/VCSA/VSAN
-
install_scripts:安装脚本-源码
-
移动用户半自动远程药品监控系统
-
Galera 高可用 MySQL 集群(PXC v5.6 + Ngin
-
基于黄金分割搜索的自相关回归模型在相关时间序列的Hurst参数估计中的应用
-
readelf_windows.rar
-
PowerBI重要外部工具详解
-
零基础极简以太坊智能合约开发环境搭建并开发部署