精华内容
下载资源
问答
  • 学习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会把这些热点代码编译成与本地平台相关的机器码,并且进行各种层次的优化,以提高执行效率。

    展开全文
  • 为什么说Java是编译与解释共存的语言 在解释这个问题之前首先要知道什么是编译型语言和解释型语言 计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若...

    为什么说Java是编译与解释共存的语言

    在解释这个问题之前首先要知道什么是编译型语言和解释型语言

    计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。而这种转换的方式有两种:

    1.编译

    2.解释

    由此高级语言也分为编译型语言和解释型语言。

    编译型语言:

    • 编译型语言注重编译,它是指将文件通过编译器一次性编译成特定平台(操作系统)可以运行的机器码。

    解释型语言:

    • 使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。是代码在执行时才被解释器一行行动态翻译和执行,而不是在执行之前就完成翻译。
      在这里插入图片描述

    编译型语言与解释型语言的对比

    在这里插入图片描述

    ps:

    如何理解编译型语言可移植性较差和解释性语言跨平台性较好

    • 任何一行编译型语言,如C语言,由编译器编译成不同的机器语言。
      而汇编语言,是针对某一个CPU而写的,编译后得到的机器码不能在另一个CPU上运行。
      比如,C语言的 a = b + c; 编译器可以编译到x86、arm、mips
      X86的机器指令是add eax,ebx
      而mips的,可能是add t 0 , t0, t0,t0,$t1
      所以如果你将x86编译器得到的机器码移植到mips,固然是不能运行的,
      但也正因为可以编译成机器语言,编译型语言的运行效率较解释型高,因为可以调用操作系统的api,解释型语言为了跨平台性,是不能调用特定操作系统的api的。

    java语言为什么两者兼有

    • .java经过javac编译器编译之后得到.class文件->这个就是java文件到虚拟机的中间码->.class文件只有被JVM加载->然后通过解释器-逐行解释执行,这种方式的执行速度会相对比较慢。这是属于解释型语言的特点,中间码即.calss文件只是一个中间码,并不算机器码,所以并不满足编译型语言的特点。然而,有些方法和代码块是经常需要被调用的,也就是所谓的热点代码,后面引进了 JIT 编译器,JIT 属于运行时编译。当 JIT 编译器完成第一次编译后,其会将字节码对应的机器码保存下来,下次可以直接使用。这是属于编译型语言的特点,机器码的运行效率肯定是高于 Java 解释器的。这也解释了我们为什么经常会说 Java 是编译与解释共存的语言。

    解释器的。这也解释了我们为什么经常会说 Java 是编译与解释共存的语言。

    展开全文
  • 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

    展开全文
  • 二、然后在通过虚拟机(JVM)从.class文件中读一行解释执行一行,所以他是解释型的语言。 三、现在的JVM为了效率,都有一些JIT优化。它又会把.class的二进制代码编译为本地的代码直接运行,所以,又是编译的。 C...

    一、Java首先将.java文件通过编译器编译成.class类型的文件,这个是java自己类型的文件;.java不经过编译就什么用都没有。
     

    二、然后在通过虚拟机(JVM)从.class文件中读一行解释执行一行,所以他是解释型的语言。

    三、现在的JVM为了效率,都有一些JIT优化。它又会把.class的二进制代码编译为本地的代码直接运行,所以,又是编译的。

    C、C++ 他们经过一次编译之后直接可以编译成操作系统了解的类型,可以直接执行的,所以他们是编译型的语言

    java语言:编译 解释 运行

    java虚拟机:

    java是解释型的语言,因为虽然java也需要编译,编译成.class文件,但是并不是机器可以识别的语言,而是字节码,最终还是需要 jvm的解释,才能在各个平台执行,这同时也是java跨平台的原因。

    所以可是说java即是编译型的,也是解释型,是假如非要归类的话,从概念上的定义,恐怕java应该归到解释型的语言中。

    java对于多种不同的操作系统有不同的JVM,所以 Java实现了真正意义上的跨平台!

    编译型的语言包括:C、C++、Delphi、Pascal、Fortran
    解释型的语言包括:Java、Basic、javascript

    JVMJava Virtual Machine

    参考:https://blog.csdn.net/SMith7412/article/details/104879998/

    展开全文
  • 当前数控系统种类繁多,各大数控系统厂商数控代码指令互不兼容。在开放式数控系统及仿真软件中越来越多...基于Lex 和 Yacc 对一个数控系统中多数控代码解释共存开展了研究,并在GT100型数控系统中得到了成功地应用。
  • 1.先准备好python2和python3的安装包 2.正常安装python2和3 3.添加环境变量 环境变量—用户变量path----编辑 新建环境变量,根据python的安装路径添加 比如C:\Python27和C:\Python27\Scripts ...
  • Python2 和 Python3 是不兼容的,如果碰到无法升级到 Python2 代码,或者同事中有坚守 Python2 阵营的情况,就要考虑 Python2 和 Python3 在系统中共存的情况。 Mac OS X 和 Linux 不必考虑这个情况。因为这些类 ...
  • 我的乌班图中也不知道为啥有python2.7,3.5,3.6三个版本的,一直用的是3.6的,其他两个可能因为anaconda3没安装的缘故用不了,今天遇到的问题就是模块下载的问题。...然后,我想删了其他两个解释器,留一个3.6再下...
  • 目的:由于centos自带的python是2,我们要安装python3,并使2和3共存,通过python或python2或python2.7来调用2,python3来调用3 自带的python的软连接的结构是,python指向python2,python2指向python2.7 且自带的...
  • 环境:Windows10下...目标描述解释:我的电脑上安装有anaconda,anaconda上有多个虚拟环境,其中有两个关于TensorFlow-GPU的环境:tensorflow2GPU和tf23GPU,这两个环境,第一个是关于TensorFlow2.0.0GPU版本的,第
  • Ubuntu16.04中简易安装,是自带python解释器2.7和3.5,公司项目开发需要3.7版本的解释器,直接apt-get install python3.7安装python解释器,会出现版本不兼容的问题。 解决方法(网上有其他方法,注意区分): ...
  • 下面这篇文章说的是python2 3共存的问题。 https://www.cnblogs.com/Jonas9631/p/10177091.html 我自己遇到的问题是想安装python3.6.4和python3.8共存的问题。 因为旧的工程很多包是在python3.6.4基础上安装的。...
  • 本篇利用Anaconda安装Python2,使得与python3共存。并且利用Pycharm配置Python2编译器。本篇亮点在于比较详细的列出如何找到Python2的python.exe文件,并且配置Python2编译器。
  • 一:Python解释器为什么要2个版本?众所周知,Python2.7是一个过渡版本。很多公司写的项目并不是基于最新的Python3写的,在之后进行一些项目更改的时候,Python3的语法有一些并不能完全兼容Python2.7,所以需要2个...
  • 在Windows上如何让它们共存呢?目前国内网站经常会让大家把其中一个python.exe改个名字(嗯,我也这样讲过,在此纠正一下),这样区分开两个可执行文件的名字,但是这样做有一个重大的隐患,就是修改了名字的那个...
  • 为什么说java是解释与编译共存的语言? 1、先解释解释” java源文件通过JDK中的javac编译成字节码文件,字节码文件到机器码这一步,JVM类加载器首先需要加载字节码文件,然后通过解释器逐行解释执行。 2、再解释...
  • 一:Python解释器为什么要2个版本?众所周知,Python2.7是一个过渡版本。很多公司写的项目并不是基于最新的Python3写的,在之后进行一些项目更改的时候,Python3的语法有一些并不能完全兼容Python2.7,所以需要2个...
  • 多个jdk共存与切换

    万次阅读 热门讨论 2021-02-04 11:13:57
    解释 dos从path中读取值,会按照先后顺序,后面的不会覆盖前面的变量 我的机器原来安装了oracle数据库,也给path里添加了C:\Program Files (x86)\Common Files\Oracle\Java\javapath;并且在第一行,故后面的JAVA_...
  • iOS手势共存

    2013-03-17 22:22:12
    转自:...IOS开发之手势——UIGestureRecognizer 共存  在 iPhone 或 iPad 的开发中,除了用 touchesBegan / touchesMoved / touchesEnded 这组方法来控制使用者的手指触控外,也可以用 UIG
  • Centos共存python3

    千次阅读 2018-07-26 21:47:40
    腾讯云两步共存python3 1、Python版本下载 所有版本下载地址 我下载的是3.6.5版本 服务器是腾讯云Centos7.4 2、解压和安装 [root@VMcentos ~]# pwd /root [root@VMcentos ~]# wget ...
  • anaconda2 与 anaconda3 共存解决方案

    千次阅读 2018-10-10 12:33:34
    anaconda2 与 anaconda3 共存解决方案 anaconda2 与 anaconda3 共存解决方案 参考文献 操作简介 众所周知anaconda是特别好用的python环境管理方案,有时我们需要python2和python3共存的环境,并且希望两个...
  • python版本共存问题

    2018-01-04 14:52:02
    众所周知,python不同版本是可以共存的,网上也有很多资料,所以安装,改名和pip配置这些方面就不多说了。 引用一位博主的文章:http://blog.csdn.net/autista/article/details/73650943 我自己碰到了一些特殊的...
  • 一、下载安装python2和python3解释器下载方法很简单,直接到python的官网上进行下载https://www.python.org/downloads/windows/,分别选择python2、python3的合适的版本,下载。下载后,直接右键安装。安装过程中...
  • 多个python版本共存

    2017-07-07 20:43:00
    windows下多个python版本共存 了解python的人都知道python有2.x版本和3.x版本,而python3.x版本不向下兼容,但是根据具体的需要,有时候要2.x和3.x共存,python共存本身没有问题,只是需要设置一些环境变量...
  • python双版本共存

    2017-12-02 21:51:18
    每次运行都要加入参数-2/-3还是比较麻烦,所以py.exe这个启动器允许你在代码中加入说明,表明这个文件应该是由python2解释运行,还是由python3解释运行。说明的方法是在代码文件的最开始加入一行 #! python2 #! ...
  • PCL库多版本共存问题

    2021-03-28 19:59:17
    PCL库多版本共存问题1. 编译PCL库1.1 编译步骤1.2 版本冲突问题1.3 CmakeList编译并安装VTK编译步骤 在学习vSLAM的过程中,发现PCL、G2O等库经常存在版本冲突问题,即不同的vSLAM算法会用到的不同版本的PCL库,甚至...
  • jQuery多库共存

    2010-03-01 15:12:00
    官方给的方法如下: jQuery.... 这个方法的解释如下: 运行这个函数将变量$的控制权让渡给第一个实现它的那个库。 这有助于确保jQuery不会与其他库的$对象发生冲突。 在运行这个函数后,就只能使用jQuery变量访问jQuer
  • 多版本python共存

    2016-08-16 09:28:00
    当没有指定python解释器时(如下-p 即为指定的python版本),将使用默认的全局python解释器创建虚拟环境 windows virtualenv-pC:\Python27\python.exe E:\test2 创建2.7版本的虚拟环境virtualenv-pD:\P...
  • Ubuntu16.04 配置Python多版本共存 软件环境: 虚拟机:Vmware workstation15 Linux系统:Ubuntu16.04 前言: Ubuntu系统本身已经安装好了Python解释器,2.x版本和3.x版本都已安装 但是没有安装pip工具包,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,784
精华内容 7,513
关键字:

共存的解释