在线执行动态的Java代码,或者运行时动态编译加载java源码实现例如动态策略、动态配置等业务。我们大致就需要有以下流程:

#mermaid-svg-aIJVYE5t6EFpeK0L {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-aIJVYE5t6EFpeK0L .error-icon{fill:#552222;}#mermaid-svg-aIJVYE5t6EFpeK0L .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-aIJVYE5t6EFpeK0L .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-aIJVYE5t6EFpeK0L .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-aIJVYE5t6EFpeK0L .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-aIJVYE5t6EFpeK0L .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-aIJVYE5t6EFpeK0L .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-aIJVYE5t6EFpeK0L .marker{fill:#333333;stroke:#333333;}#mermaid-svg-aIJVYE5t6EFpeK0L .marker.cross{stroke:#333333;}#mermaid-svg-aIJVYE5t6EFpeK0L svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-aIJVYE5t6EFpeK0L .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-aIJVYE5t6EFpeK0L .cluster-label text{fill:#333;}#mermaid-svg-aIJVYE5t6EFpeK0L .cluster-label span{color:#333;}#mermaid-svg-aIJVYE5t6EFpeK0L .label text,#mermaid-svg-aIJVYE5t6EFpeK0L span{fill:#333;color:#333;}#mermaid-svg-aIJVYE5t6EFpeK0L .node rect,#mermaid-svg-aIJVYE5t6EFpeK0L .node circle,#mermaid-svg-aIJVYE5t6EFpeK0L .node ellipse,#mermaid-svg-aIJVYE5t6EFpeK0L .node polygon,#mermaid-svg-aIJVYE5t6EFpeK0L .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-aIJVYE5t6EFpeK0L .node .label{text-align:center;}#mermaid-svg-aIJVYE5t6EFpeK0L .node.clickable{cursor:pointer;}#mermaid-svg-aIJVYE5t6EFpeK0L .arrowheadPath{fill:#333333;}#mermaid-svg-aIJVYE5t6EFpeK0L .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-aIJVYE5t6EFpeK0L .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-aIJVYE5t6EFpeK0L .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-aIJVYE5t6EFpeK0L .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-aIJVYE5t6EFpeK0L .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-aIJVYE5t6EFpeK0L .cluster text{fill:#333;}#mermaid-svg-aIJVYE5t6EFpeK0L .cluster span{color:#333;}#mermaid-svg-aIJVYE5t6EFpeK0L div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-aIJVYE5t6EFpeK0L :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

Java源码文本
Java源码文本
字节码
Class类
前端
编译器
数据库
类加载器
方法执行器
执行结果

其中主要需要我们去实现的就是:

  1. 编译器(在线Java 动态运行Java源代码-编译器);
  2. 类加载器(在线Java 动态运行Java源代码-类加载器);
  3. 方法执行器(在线Java 动态运行Java源代码-执行器);
  4. 处理器(在线Java 动态运行Java源代码-处理器)

源码已开源至Github,
如果无法访问,可访问Gitee。
欢迎大家PR、提Issue,如果可以,给个小星星Star哦。

此处mark很好的学习资源。

在线Java 动态运行Java源代码相关推荐

  1. 在线Java 动态运行Java源代码-执行器

    当我们通过类加载器获得Class后,就可以通过常用反射手段,调用类方法了. 反射调用方法的要素:Class类,方法名,方法参数,方法返回值. Class类:已经通过前面的类加载器获取到了: 方法名:需 ...

  2. 在线Java 动态运行Java源代码-处理器

    处理器主要的作用是串起编译器.类加载器.执行器,对外提供统一的方法调用实现动态运行Java源代码的整个流程,以及暂存或缓存已编译加载好的Class类优化整个流程执行效率. 因字节码对边界系统来说用处不 ...

  3. 在线Java 动态运行Java源代码-编译器

    1.获取JDK编译器主要有两种方式(当然大神也可以有三种,自己写编译器): 如果运行的环境System.getProperty("java.home")中配置了JDK,则直接通过T ...

  4. java 动态转换器,Java 编程的动态性,第 5 部分: 动态转换类

    Java 编程的动态性,第 5 部分: 动态转换类 在经过一段时间的休息之后,Dennis Sosnoski 又回来推出了他的 Java 编程的动态性 系 列的第 5 部分.您已在前面的文章中看到了如 ...

  5. java heroku_Heroku运行Java

    java heroku 如果您是像我这样的Java迷,那么您有个好消息值得振奋. Heroku现在运行Java! 嗯,与其他流行的" Web"语言(如PHP / RoR)不同,Ja ...

  6. java获取vm运行参数_如何获取在Java中运行Java VM的版本?

    java获取vm运行参数 To get the version of running VM (Virtual Machine) in Java, we use the getProperties() ...

  7. java application_运行java application时,总是报错

    运行java application时,总是报以下错误 Exception in thread "main" org.openqa.selenium.SessionNotCreat ...

  8. java获取vm运行参数_如何获取在Java中运行Java VM的名称?

    java获取vm运行参数 To get the name of running VM (Virtual Machine) in Java, we use the getProperties() met ...

  9. 一个java程序_从另一个java程序运行java程序

    我正在研究一个简单的java程序.它只是编译并执行另一个java程序.我正在使用Runtime.exec()函数进行编译和运行.编译没有问题.但是当它运行时,如果第二个程序需要输入来从键盘读取,我不能 ...

最新文章

  1. 参与开源项目,结识技术大牛!CSDN“开源加速器计划”招募志愿者啦!
  2. 科技公司最常用的50款开源工具,提升你的逼格~
  3. atom 代码都是白色 怎么显示颜色_IBC1.0完成,ATOM为什么没涨?
  4. 使用深度学习TensorFlow框架进行图片识别
  5. 牛客网【每日一题】4月29日题目精讲 Symmetric Matrix
  6. KMP算法的java实现
  7. python语言程序设计实践教程答案实验六_Python程序设计实践教程
  8. 中国移动云智融合峰会 与您相约揽胜九天
  9. 索引会自动更新吗_mysql的B+树中数据存放结构和索引常见问题你会吗?
  10. Virtio: An I/O virtualization framework for Linux | 原文
  11. java8中一个极其强悍的新特性Stream(非常实用)
  12. paip.android 手机输入法制造大法
  13. 怎么修改HTML中样式的项目序号,给Ol的序号设置样式,怎么做?
  14. 【资源分享】Go语言并发之道 [美] 凯瑟琳(Katherine Cox-Buday)著 PDF 下载
  15. 搜款网根据ID取商品详情 API
  16. windows2003中了一键还原7.9的招了
  17. photoshop图层解锁及不能解锁的原因
  18. 值得收藏-装修攻略全
  19. Mapbox浅析(快速入门Mapbox)
  20. RT-thread相关教程汇总

热门文章

  1. 【图像分割】GrabCut分割
  2. 腾达fh450虚拟服务器,腾达(Tenda)FH450路由器设置上网方法
  3. Android 适配18:9 和 16:9 屏幕尺寸比例的问题
  4. revoke mysql_浅谈MySQL中授权(grant)和撤销授权(revoke)用法详解
  5. R语言使用plot函数可视化数据散点图,使用cex.sub参数自定义设置次标题的字体大小(subtitle)
  6. 关于Importerror:Filepath looks like a hdf5 file but h5py is not available 解决
  7. CAD教程之CAD序号绘制注意事项
  8. 如何通过摄像头进行拍照
  9. 并非从0开始的c++ day15
  10. iPhone专属的“留声机”