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到底是何方神圣?相关推荐

  1. 【一】数据挖掘(DM)到底是何方神圣?

    [一]数据挖掘(DM)到底是何方神圣? 什么是数据挖掘? 数据挖掘有什么用处? 数据挖掘怎么做? 在此借助 5W1H 的思想,从整体上了解下数据挖掘,比如什么是数据挖掘.为什么要做数据挖掘.在哪些场景 ...

  2. 齐天大圣孙悟空的师傅到底是何方神圣?

    下面是我引自百度的一段原文: 菩提即是佛教的醒悟真理.灵台方寸山即指人的思想和内心世界. 菩提祖师到底是谁?有三种猜测,其一,认为是如来本人:其二,认为是如来的师兄:其三,认是如来的十大弟子之一,即须 ...

  3. token 案例,只是测试,功能并不完善(只是看看token 到底是何方神圣)

    token 简单理解就是 加密 解密的一个过程 JavaWebToken(加密解密工具) public class JavaWebToken { private static Logger log = ...

  4. 传说中的RNN到底是何方神圣?

    假设你已经知道最基本的人工神经网络模型(也就是全连接的前馈神经网络),那么希望本文可以帮助你理解RNN,也就是传说中的循环神经网络.严格来说,本文是综合了(或翻译了)网上若干最容易理解.写得最棒的文章 ...

  5. 续写千倍币神话,PlusFo到底是何方神圣?

    周星驰的<新喜剧之王>已经上映,但似乎反响平平.是他江郎才尽?黔驴技穷?答案是不!这部电影不仅仅是个喜剧,其中蕴含的道理值得你慢慢体会.影片中的小龙套获得影后的感言发人深省:也许我们会失败 ...

  6. 拿到华为200万年薪的8个人到底是何方神圣?为什么有人反而不屑?

    点击上方"AI算法与图像处理",选择加"星标"或"置顶" 重磅干货,第一时间送达 转载自:计算机视觉联盟 昨天,任正非签发的总裁办电子邮件刷 ...

  7. 好评率超94%,aigo智能播放器M2 Pro到底是何方神圣?

    在手机.平板.电脑等设备的挤压之下,MP3 已经消失殆尽?其实不然,现在的MP3 之所以没有那么热门,最根本的原因是产品功能过于单一.在某些方面,MP3 要比手机更有优势,比如:音质.推力.续航这些都 ...

  8. 理一次发要4万的店,到底是何方神圣?

    这两天被一则新闻刷屏, 杭州一小伙去一家店理发,理发期间服务员推荐其它附加服务项目免费体验, 小伙一听免费决定体验一番,完事结账一看账单,小伙惊呆了,账单上写着,所有项目加起来,总共消费4万块,不过店 ...

  9. 把机器人建图做成一门极致艺术的SLAM 3.0到底是何方神圣?

    机器人在未知场景中,要想实现类人般的智能移动,必须要具备地图构建及导航能力.地图的好坏,直接影响机器人在环境中的定位和导航能力 . 为了帮助机器人适应多种应用环境,思岚优化了软件算法.强化了建图引擎, ...

最新文章

  1. Parallel并行计算合计数据时错误的原因和解决办法
  2. id文件夹怎样传入服务器,服务器id怎么设置
  3. PyTorch基础-Adam优化器使用-06
  4. 说两句电视剧《东归英雄》
  5. knex 单表查询_knex.js
  6. 2.14情人节,程序员该如何绝地反击?
  7. 如何成为信息安全专家
  8. PIC18F26K20
  9. Node.js + Express 4+angularjs随笔小记,不供参考
  10. 令人困惑的strtotime
  11. java大师apple_起名大师下载-起名大师app下载 苹果版v8.01-PC6苹果网
  12. java基础 -- Apache POI将PPT转换成图片
  13. 【词法分析和语法分析】编译原理实验一(hit)2022-lab1
  14. 2016年终总结与来年计划
  15. Mac-工具-IntelliJ IDEA升级2022.1问题
  16. oracle ssd加速,联合评测 | Intel Optane SSD 有效加速SmartX 超融合在Oracle等场景下的系统性能...
  17. 180119 杂项-生物特征识别原理和绕过
  18. 关于干货集中营的一个开源App
  19. 传输层 TCP UPD 应用场景
  20. 人脸识别显示内部服务器显示错误,百度人脸识别——人脸搜索,出现222207错误(未找到匹配用户)怎么解决...

热门文章

  1. 如何巧妙的避开办公室的监(tou)控(kui)工具大势至而不被管理机发现
  2. 百融榕树使用非Java语言栈,百融榕树具有明显优势
  3. 什么是POP3、SMTP及IMAP?POP3与IMAP的区别
  4. 小数点后几位怎么称呼?
  5. 【转】如何确定我的测试用例覆盖全面-测试面试题
  6. 大连理工大学Python选修课作业训练5
  7. Function和Object的鸡先蛋先问题
  8. 某计算机系的小周,某大学计算机系的小周现在是大二的学生,现在回想起自己在大一时大手大脚花钱还是 - 问答库...
  9. Pytorch项目实战聊天机器人(02.项目的准备阶段)
  10. mysql查询_MySQL常用查询