`
Tristan_S
  • 浏览: 378023 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

解释型 编译型 语法糖

 
阅读更多
语法糖
泛型,变长参数,自动装箱拆箱, foreach
虚拟机运行时不支持这些语法,它们在编辑阶段被还原回简单的基础语法结构。

--------------

Java这个语言很特殊。 默认是Mixed Mode  混合模式
一、你可以说它是编译型的。因为所有的Java代码都是要编译的,.java不经过编译就什么用都没有。
二、你可以说它是解释型的。因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的,那也就算是解释的了。
三、但是,现在的JVM为了效率,都有一些JIT优化。它又会把.class的二进制代码编译为本地的代码直接运行,所以,又是编译的。。。

JIT Just In Time Compiler 即时编译器
HotSpot 中内置了两个JIT, Client Compiler 和Server Compiler






-------------------

其实主要还是看你对“编译”和“解释”怎么下定义了。

按我的理解,解释的意思就是在程序执行时才开始翻译代码为二进制,并且翻译一句执行一句。
如果解释的定义是这样,那Java绝对是编译型语言。

因为,第一:Java首先被编译成了字节码,第二:字节码在执行时也不是翻译一句执行一句,而是全部翻译完成并加载入内存之后才开始执行(这个过程中JVM会进行代码优化)。

所以,Java是编译型语言。

--------------------
.java->编译->.class
.class需要jvm解释(+JIT技术编译),执行。

分享到:
评论

相关推荐

    Android-通过精简Smali语法细节来增强反编译代码阅读性自定义了一种简单语法

    首先,这个项目可能会引入一些简单的语法糖,将复杂的Smali指令转换为更直观的表达形式。例如,可能将一些常见的指令组合,如方法调用、变量赋值等,转化为更加接近Java的语法结构。这样,即使没有深厚的Smali背景...

    编译原理课程第一周总结及后续安排(2)(1)1

    首先,我们需要理解什么是编译程序,它是一种将高级程序设计语言转换为机器语言的软件,不同于解释程序,编译器在运行时并不逐行解释代码,而是预先进行完整翻译。翻译程序、编译程序和解释程序是三种常见的程序翻译...

    微软编译工具vsbuildtool2015

    1. 语法糖:例如,使用"async/await"关键字来简化异步编程,以及使用"f-string"来方便字符串格式化。 2. 优化的字典实现:提高了字典操作的速度,尤其是在插入和查找方面。 3. 深度复制和浅复制的明确区分:`copy()`...

    DHTML5-客户端JavaScript.ppt

    解释型语言和编译型语言的不同在于,解释型语言的代码在执行时逐行解释,而编译型语言的代码在运行前会先转换为机器可理解的二进制代码。JavaScript就是一种解释型语言,它的代码在Web浏览器中由JavaScript引擎实时...

    c# 语法全解.rar

    7. **Lambda表达式与匿名方法**:这两种语法糖简化了编写简短的函数体,特别是与LINQ查询结合使用时。 8. **LINQ(Language Integrated Query)**:是C#中用于查询数据的强大工具,允许在各种数据源(如数组、集合...

    react-React组件的HyperScript语法没有运行时开销

    而HyperScript本身就是`React.createElement`的语法糖,因此在运行时不需要做额外的转换,节省了运行时的资源。 2. **更少的API调用**:使用HyperScript时,你直接调用`h()`函数,而JSX需要先转换,然后调用`React....

    Bundler编译和压缩LessSassStylusCssJSCoffeeScriptLiveScript文件

    7. **LiveScript**:LiveScript是基于JavaScript的,但语法更为简洁,提供了更多的语法糖,使得编写JavaScript更加便捷。 Bundler的作用在于将这些预处理器语言编译成浏览器可以直接执行的CSS和JS文件,并且通过...

    Python与其他语言相比优缺点共2页.pdf.zip

    1. 性能问题:与C++或Java等编译型语言相比,Python的执行速度较慢,因为它需要在运行时进行解释。 2. GIL限制:全局解释器锁(GIL)限制了Python在同一时刻只能执行一个线程,这对多线程编程造成了一定的困扰,但...

    python编译器

    在Python的世界里,"编译器"这个词可能会引起一些混淆,因为Python通常被称为解释型语言,它的执行过程不同于C++或Java等编译型语言。然而,Python确实有一个称为"编译"的预处理步骤,尽管这里的"编译"并不生成可...

    前端开源库-coffee-register

    这种语言引入了一些语法糖,如类定义、块语法和匿名函数表达式,这些在JavaScript中可能需要更复杂的结构来实现。例如,CoffeeScript的"->" 和 "=>”箭头符号可以简洁地表示匿名函数,而"for in"循环则更加简洁明了...

    开源项目-mattn-anko.zip

    Go语言,又称Golang,是Google推出的一种静态类型的、编译型的、并发型且具有垃圾回收功能的编程语言。Go语言以其简洁的语法、高效的性能和强大的并发支持受到了众多开发者的喜爱。然而,Go语言本身并不直接支持脚本...

    TypeScript Language Specification

    - **语法糖**:TypeScript 可被视为 JavaScript 的语法糖。 - **超集关系**:TypeScript 的语法是 ECMAScript 2015(ES2015)语法的超集,这意味着任何合法的 JavaScript 代码也是合法的 TypeScript 代码。 - **兼容...

    前端开源库-toffee-script

    它引入了一些语法糖,如类和列表推导,使得代码更加简洁和可读。而 ToffeeScript 在此基础上进行了进一步的改进,特别是对于异步编程的支持。 ToffeeScript 的异步语法是其一大亮点。在传统的 JavaScript 或 ...

    qgo-源码.rar

    QGo可能在Go语言的基础上引入了新的语法特性,例如更简洁的语法糖、增强的类型系统或者特定的并发模型。源码分析将帮助我们理解这些新特性的实现原理,从而在自己的项目中更好地应用或扩展。 此外,QGo的错误处理、...

    JVM上数据处理语言的竞争KotlinScala和SPL

    在运行模式方面,Kotlin和Scala是编译型语言,而SPL是解释型语言。解释型语言更灵活,但相同代码性能会差一点。不过SPL有丰富且高效的库函数,总体性能并不弱,面对大数据时常常会更有优势。 在外部类库方面,...

    sass.cr:将SassSCSS编译为Crystal中CSS(libsass绑定)

    SCSS(Sassy CSS)是Sass的语法糖,采用与CSS相同的花括号和分号结构,更容易被CSS开发者接受。 2. **Libsass**: Libsass是Sass的C/C++实现,旨在提供一个轻量级、高性能的Sass编译引擎。它的主要优势在于其速度...

    一种用于自动化测试的脚本语言的设计与实现.pdf

    为了增加代码的易读性和便捷性,引入了“语法糖”如"foreach"和"quote",这些仅在预处理期前存在,不会影响执行效率。此外,RSscript支持C++和Java等语言常见的面向对象特性,但其面向对象技术是高度动态化的,与...

    web compiler for vs2022

    1. **SCSS (Sass)**:SCSS是Sass的一种语法糖,它是CSS的一个扩展,增加了变量、嵌套规则、混合(mixins)、函数等特性,让CSS更易于维护和复用。Web Compiler插件可以实时监控SCSS文件的更改,并自动将其转换为标准...

    MyTiger:用我自己的老虎语言

    此外,MyTiger可能还引入了自己的特定特性,比如新的数据类型、语法糖或是错误处理机制。 为了运行或测试MyTiger,你需要一个编译器或解释器来将源代码转换为可执行文件。如果MyTiger是编译型语言,那么项目中应该...

Global site tag (gtag.js) - Google Analytics