屌炸天,Oracle 发布了一个全栈虚拟机 GraalVM,支持 Python!
前阵子,Oracle 发布了一个黑科技 "GraalVM",号称是一个全新的通用全栈虚拟机,并具有高性能、跨语言交互等逆天特性,真有这么神奇?
GraalVM 简介
GraalVM 是一个跨语言的通用虚拟机,不仅支持了 Java、Scala、Groovy、Kotlin 等基于 JVM 的语言,以及 C、C++ 等基于 LLVM 的语言,还支持其他像 JavaScript、Ruby、Python 和 R 语言等。
GraalVM 有以下几个特性。
- 更加高效快速的运行代码
- 能与大多数编程语言直接交互
- 使用 Graal SDK 嵌入多语言
- 创建预编译的原生镜像
- 提供一系列工具来监视、调试和配置所有代码
GraalVM 有什么用?
1、支持多种语言组合编程
来看下面这段代码,来自官网。
const express = require('express');
const app = express();
app.listen(3000);
app.get('/', function(req, res) {
var text = 'Hello World!';
const BigInteger = Java.type(
'java.math.BigInteger');
text += BigInteger.valueOf(2)
.pow(100).toString(16);
text += Polyglot.eval(
'R', 'runif(100)')[0];
res.send(text);
})
它同时使用了 Node.js、Java、R 三种语言,是不是很奇葩?
GraalVM 消除了各种编程语言之间的隔离性,那这种多编程语言结合使用会不会有性能影响?官方的说明是:零开销的互操作,这样,我们就可以为应用程序选择最佳的编程语言组合。
2、原生镜像加速
来看这段代码,同样来自官网。
$ javac HelloWorld.java
$ time java HelloWorld
user 0.070s
$ native-image HelloWorld
$ time ./helloworld
user 0.005s
GraalVM 可以预编译成原生镜像,从而极大提速了启动时间,并能减少 JVM 应用的内存占用。
4、可嵌入式运行环境
GraalVM 可以被嵌入到各种应用程序中,既可以独立运行,也可以在已经内置好的 OpenJDK、Node.js、Oracle、MySQL 等环境中运行。
结合上面的特性,我们来看下 GraalVM 的架构图。

GraalVM 版本介绍
如下图所示,GraalVM 提供了社区版和企业版两个版本。

从特性来看,上述所说的高性能、内存优化貌似都在企业版中??企业版或者可能只是在社区版上又增加了额外的提升吧!
社区版下载:github.com/oracle/graal/releases
总结
GraalVM 这玩意看起来很不错,可以说这就是一个全栈开发平台,不仅支持主流编程语言,还能组合在一起编程,根据不同任务来选择最佳的语言。另外。它还能提高更高的执行效率,以及占用更少的内存。
至于应用场景,是否可应用于生产,现在还真不好说。这么一个变态级的产品,我们期待它有更好的发展吧。
@ 程序猿:你们觉得 GraalVM 前景如何,或者有什么实际用途?欢迎留言!
屌炸天,Oracle 发布了一个全栈虚拟机 GraalVM,支持 Python!的更多相关文章
- 初探Oracle全栈虚拟机---GraalVM
官方说明: GraalVM是一个生态系统和共享运行时,不仅提供基于JVM的语言(如Java,Scala,Groovy和Kotlin)的性能优势,还提供其他编程语言(如JavaScript,Ruby,P ...
- 一个小时搭建一个全栈 Web 应用框架
把想法变为现实的能力是空想家与实干家的区别.不管你是在一家跨国公司工作,还是正在为自己的创业公司而努力,那些有能力将创意转化为真正产品的人,都具有宝贵的技能并拥有明显的实力.如果你能在不到一个小时的时 ...
- [转]乐死我了,怎么样成为一个全栈程序员(Full Stack Developer),附我想专注的语言
受苏格拉底大神的启迪,我也来谈谈全栈.禅师:成为全栈工程师,这个问题等于如何成为全才,有可能吗码农:有可能,不过可能性比较低,因为达芬奇这类人毕竟是百年一遇的奇才.不过,因为我热爱这个行业,也有一定天 ...
- 大数据全栈式开发语言 – Python
前段时间,ThoughtWorks在深圳举办一次社区活动上,有一个演讲主题叫做“Fullstack JavaScript”,是关于用JavaScript进行前端.服务器端,甚至数据库(MongoDB) ...
- python 全栈开发,Day43(python全栈11期月考题)
python全栈11期月考题 1.常用字符串格式化有哪些?并说明他们的区别 2.请手写一个单例模式(面试题) 3.利用 python 打印前一天的本地时间,格式为‘2018-01-30’(面试题) 4 ...
- python全栈开发 什么是python python命名及循环
python全栈 一. python介绍: 1. python起源 2. 主要应用领域; web,人工智能,云计算,系统运维. 1.1 python是一门什么语言? python是一 ...
- 从React Native到微服务,落地一个全栈解决方案
Poplar是一个社交主题的内容社区,但自身并不做社区,旨在提供可快速二次开发的开源基础套件.前端基于React Native与Redux构建,后端由Spring Boot.Dubbo.Zookeep ...
- 搭建一个全栈式的HTML5移动应用框架(纯干货,亲!)
打开HTML5的技术网站,满屏的“5个推荐的JavaScript框架”.“10个移动应用框架”,全都是你妹的框架, 但是,你知道这些框架是干毛用的吗?来吧,我们来梳理一下吧 目前HTML5涉及的框架大 ...
- 一个全栈Web/移动App开发学习路径
HTML.CSS 和 JavaScript 网页开发的基本元素,包括HTML.CSS个JavaScript.本课程完全适合零基础的同学,当然如果你有相关开发经验更好.在课程开始呢,我们先探索与讨论HT ...
随机推荐
- 关于四种语言中substring()方法参数值的解析
1.关于substring(a,b)Js var str="bdqn"; var result=str.substring(1,2); alert(result); 第一个参数:开 ...
- c#简单的数据库查询与绑定DataGridView。
1配置文件 (两种写法) <connectionStrings> <add name="connStr" connectionString="se ...
- Java 中12个原子操作类
从JDK1.5 开始提供了 java.util.concurrent.atomic 包,该包提供了一种用法简单.性能高效.线程安全的更新一个变量的方法 原子更新基本类型类 AtomicBoolean: ...
- 虚拟DOM
传统的 DOM 操作是直接在 DOM 上操作,当需要修改一系列元素中的值时,就会直接对 DOM 进行操作.如果需要操作的DOM元素过多,则成本太高,而采用 Virtual DOM 则会对需要修改的 D ...
- 图解HTTP第六章
HTTP 报文 1>HTTP 报文 2>HTTP 请求报文 在请求中,HTTP 报文由方法.URI.HTTP 版本.HTTP 首部字段.报文主体(不一定需要)等部分构成. 3>HTT ...
- 口试Linq题
LINQ to SQL与IQueryable 理解IQueryable的最简单方式就是,把它看作一个查询,在执行的时候,将会生成结果序列. LINQ to Object和LINQ to SQL有何区别 ...
- nodejs之使用express框架连接mysql数据库,返回jsonapi数据
var express = require('express');var router = express.Router();var url = require('url');var mysql = ...
- DataTable调整顺序
DataTable中手动调整列的顺序 DataTable中手动调整列的顺序(列序,reorder,Rearrange)DataTable dt = new DataTable(); dt.Column ...
- Logback简单使用
1. 添加jar包/maven配置 <dependency> <groupId>ch.qos.logback</groupId> <artifactI ...
- C++程序调用python3
今天想做一个简单的管理密码的小程序,由于最近了解了下Python,就想用Python来写.但是看了看Python的界面库用法有感觉有点麻烦,所以还不如直接使用MFC写写界面,关于csv的文件处理部分使 ...