GraalVM到底是何方神圣?
JVM的弊端
JVM实现了跨平台,使得一次编译即可到处运行,但是詹姆斯·高斯林没有跟你说的是,应用运行之前要先启动JVM虚拟机,然后还要加载一大批的类、并做链接和初始化等步骤,而使得光启动一个JVM就得花一大把时间,JVM启动完之后才能执行应用程序本身的启动工作,比如启动Spring容器、启动Tomcat等等。
在一些场景下,集群需要做动态扩缩容,这个动作当然是越快越好,不可能请求过来了,花了半天时间来启动应用,等应用启动完,客户端那边都已经超时了。
特别像目前也比较火的FaaS,更加需要应用程序能快速的启动。
GraalVM与Go
所以,近几年来,Go语言火了,Go语言是一种编译型语言,我们需要先把Go代码直接编译成为一个二进制执行文件,比如windows上的exe文件,然后直接运行exe文件就能快速启动程序。
如果说,十年前,Spring是Java的春天,那现在GraalVM就是Java的救世主,Java要想不被Go挤掉,整个Java生态都要向GraalVM靠齐。
GraalVM提供了很多功能,其中一个功能就是能把Java代码直接编译成为二进制文件,比如exe文件,从而使得Java程序也能够快速启动。
GraalVM与Docker
目前,大部分Java应用应该都是运行在Docker容器中,这就需要Docker容器中也要安装JDK或JRE,但是如果利用GraalVM将Java应用编译成为了exe文件,那么我们就可以直接把exe文件打成一个Docker镜像了,从而不需要在Docker中按照JDK了,这样将使得Docker容器更加小巧,也更加适应自动扩缩容。
GraalVM的缺点与未来
GraalVM为了把Java程序编译为一个可执行的二进制文件,需要预先确定程序中用到的所有类,但是Java程序中很有可能某些类是动态生成的,比如很多框架中都用到了动态代理,从而程序运行过程中会动态生成一些类。
为了解决这个问题,比较笨的办法是,通过配置文件指定哪些类是动态生成的,比较聪明的办法是,先运行一下程序自动找到哪些类是动态生成的。
GraalVM这两种办法都是支持的,这样对于Spring、SpringBoot这些框架就能省事很多了,
这样,对于一个SpringBoot应用程序,就可以利用GraalVM将它编译成为一个可执行的二进制文件了。
当然,Spring及SpringBoot为了进一步提升启动速度,Spring及SpringBoot自身也做了一些优化,比如Spring AOT将Bean扫描转移到了编译期来做,从而能进一步提升启动速度。
后续
今天,简单聊聊GraalVM,后续会出GraalVM的实战教程,以及Spring AOT的底层实现原理,希望大家能点赞、分享、在看。
GraalVM到底是何方神圣?相关推荐
- 【一】数据挖掘(DM)到底是何方神圣?
[一]数据挖掘(DM)到底是何方神圣? 什么是数据挖掘? 数据挖掘有什么用处? 数据挖掘怎么做? 在此借助 5W1H 的思想,从整体上了解下数据挖掘,比如什么是数据挖掘.为什么要做数据挖掘.在哪些场景 ...
- 齐天大圣孙悟空的师傅到底是何方神圣?
下面是我引自百度的一段原文: 菩提即是佛教的醒悟真理.灵台方寸山即指人的思想和内心世界. 菩提祖师到底是谁?有三种猜测,其一,认为是如来本人:其二,认为是如来的师兄:其三,认是如来的十大弟子之一,即须 ...
- token 案例,只是测试,功能并不完善(只是看看token 到底是何方神圣)
token 简单理解就是 加密 解密的一个过程 JavaWebToken(加密解密工具) public class JavaWebToken { private static Logger log = ...
- 传说中的RNN到底是何方神圣?
假设你已经知道最基本的人工神经网络模型(也就是全连接的前馈神经网络),那么希望本文可以帮助你理解RNN,也就是传说中的循环神经网络.严格来说,本文是综合了(或翻译了)网上若干最容易理解.写得最棒的文章 ...
- 续写千倍币神话,PlusFo到底是何方神圣?
周星驰的<新喜剧之王>已经上映,但似乎反响平平.是他江郎才尽?黔驴技穷?答案是不!这部电影不仅仅是个喜剧,其中蕴含的道理值得你慢慢体会.影片中的小龙套获得影后的感言发人深省:也许我们会失败 ...
- 拿到华为200万年薪的8个人到底是何方神圣?为什么有人反而不屑?
点击上方"AI算法与图像处理",选择加"星标"或"置顶" 重磅干货,第一时间送达 转载自:计算机视觉联盟 昨天,任正非签发的总裁办电子邮件刷 ...
- 好评率超94%,aigo智能播放器M2 Pro到底是何方神圣?
在手机.平板.电脑等设备的挤压之下,MP3 已经消失殆尽?其实不然,现在的MP3 之所以没有那么热门,最根本的原因是产品功能过于单一.在某些方面,MP3 要比手机更有优势,比如:音质.推力.续航这些都 ...
- 理一次发要4万的店,到底是何方神圣?
这两天被一则新闻刷屏, 杭州一小伙去一家店理发,理发期间服务员推荐其它附加服务项目免费体验, 小伙一听免费决定体验一番,完事结账一看账单,小伙惊呆了,账单上写着,所有项目加起来,总共消费4万块,不过店 ...
- 把机器人建图做成一门极致艺术的SLAM 3.0到底是何方神圣?
机器人在未知场景中,要想实现类人般的智能移动,必须要具备地图构建及导航能力.地图的好坏,直接影响机器人在环境中的定位和导航能力 . 为了帮助机器人适应多种应用环境,思岚优化了软件算法.强化了建图引擎, ...
最新文章
- Parallel并行计算合计数据时错误的原因和解决办法
- id文件夹怎样传入服务器,服务器id怎么设置
- PyTorch基础-Adam优化器使用-06
- 说两句电视剧《东归英雄》
- knex 单表查询_knex.js
- 2.14情人节,程序员该如何绝地反击?
- 如何成为信息安全专家
- PIC18F26K20
- Node.js + Express 4+angularjs随笔小记,不供参考
- 令人困惑的strtotime
- java大师apple_起名大师下载-起名大师app下载 苹果版v8.01-PC6苹果网
- java基础 -- Apache POI将PPT转换成图片
- 【词法分析和语法分析】编译原理实验一(hit)2022-lab1
- 2016年终总结与来年计划
- Mac-工具-IntelliJ IDEA升级2022.1问题
- oracle ssd加速,联合评测 | Intel Optane SSD 有效加速SmartX 超融合在Oracle等场景下的系统性能...
- 180119 杂项-生物特征识别原理和绕过
- 关于干货集中营的一个开源App
- 传输层 TCP UPD 应用场景
- 人脸识别显示内部服务器显示错误,百度人脸识别——人脸搜索,出现222207错误(未找到匹配用户)怎么解决...
热门文章
- 如何巧妙的避开办公室的监(tou)控(kui)工具大势至而不被管理机发现
- 百融榕树使用非Java语言栈,百融榕树具有明显优势
- 什么是POP3、SMTP及IMAP?POP3与IMAP的区别
- 小数点后几位怎么称呼?
- 【转】如何确定我的测试用例覆盖全面-测试面试题
- 大连理工大学Python选修课作业训练5
- Function和Object的鸡先蛋先问题
- 某计算机系的小周,某大学计算机系的小周现在是大二的学生,现在回想起自己在大一时大手大脚花钱还是 - 问答库...
- Pytorch项目实战聊天机器人(02.项目的准备阶段)
- mysql查询_MySQL常用查询