北大青鸟设计培训:关于GraalVM的特点?

Python013

北大青鸟设计培训:关于GraalVM的特点?,第1张

对于程序员来,一般都会掌握许多编程工具来提高自己的工作效率的,但是如果有一款编程工具能够适用所有编程语言的话,我觉得应该就是GraalVM了,今天昌平北大青鸟http://www.kmbdqn.cn/就一起来了解一下GraalVM的特点。

1.高性能JavaGraalVM中的Graal得名于Graal编译器

Graal是一种“万能”编译器,也就是,虽然它是单一的实现,却可以用于很多用途。

例如,我们可以使用Graal进行预编译(ahead-of-time)和即时编译(just-in-time),也可用于编译多种编程语言

2.占用内存小、启动速度快的JavaJava对于长时间运行的进程来是相当强大的,但短时间运行的进程可能会因较长的启动时间和较高的内存占用而饱受其苦。

3.组合JavaScript、Java、Ruby和R语言除了Java,GraalVM还包含了JavaScript、Ruby、R语言和Python的实现。

它们都是使用一个叫作Truffle的语言实现框架开发的,Truffle让实现简单且高性能的语言解释器成为可能。

在使用Truffle开发语言解释器时,会自动使用Graal作为JIT编译器。

因此,Graal不仅是Java的JIT编译器和预编译器,也可以是JavaScript、Ruby、R语言和Python的JIT编译器。

4.在JVM上运行本地语言GraalVM也支持C语言,GraalVM可以像运行JavaScript和Ruby之类的语言一样运行C代码。

实际上,GraalVM通过运行LLVM位码的方式来支持C语言,而不是直接运行C代码。

也就是,我们可以将现有工具与C语言一起使用,还可以使用其他可输出LLVM的语言,例如C++、Fortran和未来可能出现的其他语言。

为了简化演示,我使用了由StephenMcCamant维护的gzip的单文件版本。

为简单起见,它只是将gzip源代码和autoconf配置连成一个单独的文件。

我还需要修改一些东西才能让它在macOS上运行起来,但不能在GraalVM上运行。

5.适用于所有编程语言的工具如果你使用Java编程,可能已经习惯了使用那些高质量的工具,比如IDE、调试器和分析器,但并非所有的编程语言都有这么好用的工具。

不过如果你是在GraalVM中使用某种语言,就可以获得这样的工具。

6.扩展基于JVM的应用程序除了可用作独立语言实现和用于多语言编程,这些语言和工具也可以嵌入到Java应用程序中。

新的org.graalvm.polyglotAPI可用于加载和运行其他语言的代码。

虽然说java编程开发语言是目前大多数程序员学习的主流编程语言,但是java编程语言依然存在一些无法实现的内容,下面昌平java课程http://www.kmbdqn.cn/就一起来了解一下,程序员是如何突破java编程的局限性的。

Java功能强大、生态丰富,已无需多言。

但类型、语法与编程范式方面,存在一些局限性,也长期为人所诟病。

所以,有不少开发人员试图去寻求其他语言,既可以突破Java的这些局限,又可以与Java和谐共处。

Java的祖师爷们也是非常明智,一开始就将编程语言Java与运行时环境JVM分离。

JVM负责与操作系统的交互,屏蔽了具体操作系统的细节,制订了一整套生成字节码的规范,使得前面这一构想得以顺利实施。

如今有众多语言运行在JVM上,Groovy、Scala、Kotlin、Clojure可能算得上是其中的佼佼者。

GroovyGroovy是类似Ruby的动态语言,适合编写脚本、插件、测试例,DSL(领域特定语言)等。

知名的自动化建构工具Gradle主要就基于Groovy。

ScalaScala的设计初衷,就是在JVM上整合面向对象与函数式编程的各种特性。

大名鼎鼎的大数据处理框架Spark、消息中间件Kafka、用于构建可容错,可扩展、高并发应用的Akka,都是基于Scala语言编写。

Kotlin前几日刚升级为Android官方开发语言的Kotlin,近期是一个热门。

从前面讲到的Github上的star指数也可窥见一斑。

基于Kotlin的库和框架、官方工具的支持、教学视频、文档等,也肯定会层出不穷。

ClojureClojure被认为是基于JVM的Lisp方言,是函数式编程的铁杆。

知名的大数据处理框架Storm主要就是由Clojure语言编写而成。

CeylonCeylon是面向企业级应用设计开发的强静态类型编程语言,支持Java和JavaScript虚拟机。

Java自身在性能、语法、编程范式等方面,也是在不断地提高改进。

譬如Java8引入了Lambda表达式、Optional、Streams、Date/TimeAPI等,Java9带来了Jigsaw(模块化)等。