00:00
因为我们在了解scla发展历史的时候,我们其实已经发现了啊kla它其实可以说是基于Java。然后改进了Java的一些特点,然后结合了所谓的函数式编程语言的一些特性开发出来的,所以我们可以认为skyla就是基遇Java的,那么SKY和Java它们之间的关系,它们的区别又到底有哪些呢?啊,那这里边我们需要梳理一下s skyla和Java他们之间的关系,那我们可以看一下这张图,大家看一下这张图其实就主要是。给大家说明了skyla和Java他们跟GVM之间的关系,因为我们前面说scla它其实也是一门GVM语言嘛,也是基于GVM平台的一门语言,那我们首先回忆一下Java这门语言。跟GVM是什么样的一个关系,那大家其实知道,呃,Java这门语言,首先我们应用用这个Java写出源代码之后啊,首先要基于Java c编译器去做一个编译处理,得到的呢,是点class自解码文件得到自解码,这个自解码就可以,只要我们不管在什么样的环境里边啊,只要安装了GVM,那么它就可以对字节码进行解释运行啊,这样的话大家就会发现,这这就做到了所谓的跨平台对吧?呃,只一次编写,到处运行,有GVM直接就可以运行了。
01:28
啊,当然这里边我们可能。Java代码里边可能涉及到了啊,Java调用了这个Java SDK里边的大量的这个类库相关的一些内容啊,这里我们就是在做编译的过程当中,需要把这些内容加进来,全部最后生成到这个自节码文件,就可以在gbm上运行了,这是大家比较熟悉的Java编译,呃和解释执行的这个过程,那SKY又是什么样的呢?整个的流程其实非常的相似,大家看下面这是我们skyla的一个代码,Scla的代码,大家看到原文件,Jala的原文件是点jala文件,那么skyla呢?啊,原文件就是点scla文件,把这个写出来之后,大家会发现skyla同样它也有一些SDK,里边有各种各样的类库,也可以做调用,那么调用的时候,当然编译的时候也要把它打包一起编译出来,那大家需要注意一下,就是skyla这里边我们调的内容,也可以直接调Java里边的一些内库。
02:29
啊,所以大家看就是skyva跟Java可以说是兼容的,从这一点也可以非常明显的看到skyla基于Java对吧,就是Java里边已有的那些类库,Skyla可以直接拿来用啊,当然了,另外还有就是说有自己的一些特特有的类库,还有呢,还有一些呢,是对Java的类库又做了进一步的包装,哎,所以不管怎么样啊,所有的这些类库。放到源代码里边都会通过编译器编译得到,哎,又是一个点class自解码文件,而这里边skyla的编译器呢,就叫做skyla c啊,Java那边编译器叫做Java c,这里叫做skyla c。
03:10
所以我们看同样都得到这个点class文件啊,自解码,得到自解码之后,接下来要做的事情就跟Java一模一样了,只要我们有GVM,不管在什么样的平台上,什么样的环境里边啊,基于GVM去执行这个字节码文件就可以了。啊,这就是skyla和Java跟GVM之间的关系啊,所以大家可以看得非常的清晰。skyla是一门基于JVM的语言,而且它跟Java的关系非常的密切,它里边可以直接调用Java里面的各种类库。那这里边我们还要搞清楚一个问题啊,就是所谓的有时候我们经常会说一门语言,它到底是编译型语言还是解释型语言,哎,那大家想一下,Skyla到底应该是一门编译型语言还是一门解释型语言呢?
04:05
哎,这就回到了我们之前可能大家都了解过的一个问题啊,诶,大家会想到这个skyva看起来其实跟Java一样,对吧?哎,那Java到底应该是编译型语言还是解释型语言呢?我们其实会发现Java自身它是兼具了编译型语言和解释型语言的特点啊,首先我们会会看到Java有编译器啊,大家就会想到那有编译器肯定就是编译性语言啊啊,所以编译器。它直接做编译的时候呢,生成的是自解码文件,但是大家注意这个编译得到的这个字节码文件跟CC加加的那个编译器直接得到可执行文件还是不一样的,对吧?呃,那那个相当于就直接我们可以得到机器码了,而现在呢,自解码文件还需要再由JVM虚拟机啊去做一个解释执行。哎,所以大家会发现我们相当于是先编译后解释啊,呃,所以有很多地方可能会说Java是一种半编译半解释执行的语言,或者叫先编译后解释执行的语言啊,那所以呃,这个概念大家就是会发现,单独的去说它到底是编译型语言还是解释型语言,呃,可能不是那么的准确。
05:24
那那当然大家可能知道,就是说,呃,如果说。我们要是较真的话,大家可能会认为最终我们生成的自解码文件那是由GVM去做解释执行的啊,所以有同学可能说,诶,它更像这个呃解解释型语言啊。但是在有一些特定的场景下,大家可能知道就是呃,Oracle的hotport vm啊,啊,它采用了一个技术叫做git,就是just in time,呃,Comp。这样的一个即时编译的技术,它其实可以是把运行频率比较高的字节码直接编译成机器指指令直接去执行的,哎,所以大家想,如果你要是这样的一种操作,编译的时候直接就生成机器指令的话,那这样的话,这就不就跟CCR的那个编译执行是一样的了吗?啊,所以呃,我们一般情况也就不明确的去说Java到底是编译型还是解释型了啊,大家只要知道它的这样一个。
06:25
处理流程就可以了啊,这这里我们这个概念也已经比较模糊了啊,那对于SKY而言呢,跟Java其实就是完全一样,大家会发现它的这个执行流程几乎就是一模一样的,只不过就是一开始他的这个类库更加的广泛,它可以直接去调用Java里面的类库啊,这里边我们可能涉及到的东西更多,然后首先由编译器做一个编译得到自解码文件之后,然后再去做一个解释执行。这就是skyla编程语言的特点。
我来说两句