当前位置: 首页 > 软件库 > 开发工具 > 编译器 >

kan-java

Java 动态编译工具
授权协议 EPL
开发语言 Java Groovy
所属分类 开发工具、 编译器
软件类型 开源软件
地区 国产
投 递 者 傅胡媚
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

'kan-java' is '砍-java', speak frankly & literally.

这是一个java代码动态编译工具,也就是能够把String形式的java代码实时地编译为字节码的工具;

“动态编译”工具,其实自jdk1.6发布以来,应该出现过很多,不过kan-java的特点在于 —— 就像它的名字一样 —— 可以选择性地砍掉任意语言特性;

也就是说 —— 这是一个可以在动态编译java代码的同时,对java语言语法做裁剪的动态编译工具。

拥有一个裁剪版本的java,这有怎样的应用场景?

目前最直接的答案是"高性能的内部DSL"

即当我需要一个语法上非常接近普通过程式编程语言的DSL,但却又不想或觉得没必要自己从头实现一个(外部DSL)的时候,就可以考虑以某种现成的过程式通用编程语言为蓝本,通过裁剪其语法达到目的;
而当这种“现成的过程式通用编程语言”被选择为java时,kan-java出场的时刻就到了。

  • 有大量平均水平左右的“工人”可被选择、参与进来 —— 这意味着好招人 有成熟的、大量的程序库可供选择 —— 这意味着大多数项目都是既有程序库的拼装,标准化程度高而定制化场景少 开发工具、测试工具、问题排查工具完善,成熟 —— 基本上没有团队愿意在时间紧、任务重的项目情况下去做没有把握的、基础开发工具类的技术试探 有面向对象特性, 适合大型项目开发 —— 无数大型项目已向世人述说,“面向对象”是开发

  • kan-java 'kan-java' is '砍-java', speak frankly & literally. 这是一个java代码动态编译工具,也就是能够把String形式的java代码实时地编译为字节码的工具; “动态编译”工具,其实自jdk1.6发布以来,应该出现过很多,不过kan-java的特点在于 —— 就像它的名字一样 —— 可以选择性地砍掉任意语言特性; 也就是说 —— 这是

  • kan-java 'kan-java' is '砍-java', speak frankly & literally. 这是一个java代码动态编译工具,也就是能够把String形式的java代码实时地编译为字节码的工具; “动态编译”工具,其实自jdk1.6发布以来,应该出现过很多,不过kan-java的特点在于 —— 就像它的名字一样 —— 可以选择性地砍掉任意语言特性; 也就是说 —— 这是

  • 'kan-java' 就是 '砍-java' 这是一个java代码动态编译工具,也就是能够把String形式的java代码实时地编译为字节码的工具; “动态编译”工具,其实自jdk1.6发布以来,应该出现过很多,不过kan-java的特点在于 —— 就像它的名字一样 —— 可以选择性地砍掉任意语言特性; 也就是说 —— 这是一个可以在动态编译java代码的同时,对java语言语法做裁剪的动态编译工

  • 这个是我看了如何输入数组后自己想的,感觉是要简单一点吧,也比较好想, 感谢CSDN上一些大佬的帮助,三天基本就会做了 互帮互助,有不懂得欢迎提问 package CCF_2021_12_1; /**  * 居然可以这样  * int[] s = new int[n+1];//输入的数组  * int[] f = new int[N];  * f[i]初始值都为0,下面的else处需要考虑到  *

  • java中文转拼音可以用apache的类库,下面的代码是不依赖于任何类库的中文转拼音实现。 public class CharacterParser { private static int[] pyvalue = new int[] { -20319, -20317, -20304, -20295, -20292, -20283, -20265, -20257, -20242, -20230,

  • package com.company.javaalgrithom.btree; /** * @Author:yudx * 算法参考:数据结构(C语言版)238页 */ import java.util.LinkedList; import static java.lang.System.out; public class BTree23<K extends Comparable<K>

  • 位运算的一些技巧 位运算面试题常用技巧 万字长文!位运算面试看这篇就够了! x&(-x):只保留二进制下最后出现的1的位置,其余位置置0 x&(x-1):把x的最后一位的1变为0之后的结果。 剑指 Offer 56 - I. 数组中数字出现的次数 https://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof

  • <script type="text/javascript"> google_ad_client = "pub-8800625213955058"; /* 336x280, 创建于 07-11-21 */ google_ad_slot = "0989131976"; google_ad_width = 336; google_ad_height = 280; // </script> <scrip

  • 数据结构与算法(JAVA)–数组–二分法 有很多图片传上来太麻烦了,所以就缺失了,有的代码很简单,可以直接看,这些 都是我整理的数组的二分法的一些题目,和别人的一些题解,希望方便大家学习, 一维数组 1、基础知识 数组是存放在连续内存空间上的相同类型数据的集合。 (1)创建: 数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度]; 数据类型[] 数组名 = new 数据类型[]

  • importjava.util.Iterator;importjava.util.LinkedHashMap;importjava.util.Set;public classChineseToEnglish2 {private static LinkedHashMap spellMap = null;static{if (spellMap == null) { spellMap= new Link

  • 前言 Page Object(页面对象)模式,是Selenium实战中最为流行,并且被自动化测试同学所熟悉和推崇的一种设计模式之一。在设计测试时,把页面元素定位和元素操作方法按照页面抽象出来,分离成一定的对象,然后再进行组织。 相信每个做自动化测试的同学,一定会遇到这样一个非常头疼的问题,那就是页面变化,如果没有使用Page Object设计模式,这就意味着以前的定位元素方法不能用了,需要重新修改

  • 时间比较,计算差值 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date curDate = df.parse(curDateTime); Date date = d

  • Het principe van onze variabele beloningsregeling is eenvoudig en transparant. Naast een vast maandsalaris en een vakantietoeslag, ontvang je een maandelijks vast te stellen bonus, zijnde een percenta

  •         之前提到、会采用openresty作为网关进行加解密。在实践的过程中、第一步就要调整代码了。我们之前Java采用的是AES/CBC/PKCS5Padding的填充方式,而openresty的aes.lua里面采用的是openssl的、默认的填充方式是AES/CBC/PKCS7Padding的。而Java本身的加密包是不支持这种填充方式的。需要引入新的加密包bcprov-jdk18o

  • 【尚学堂】Java300集零基础适合初学者视频教程_Java300集零基础教程_Java初学入门视频基础巩固教程_Java语言入门到精通_哔哩哔哩_bilibili 详细步骤概述 步骤一:创建类Tushuxitong package edu.tuhsu; /** * @author WYP * @date 2021/4/14 9:10 */ public class Tushuxitong

  • 一、异常日志: 2022-07-04 15:37:52,255 ERROR [http-nio-9202-exec-4] [frond-tmc,,,true] [ExportExcelMoreSheet.addCell] [ExportExcelMoreSheet.java:315] - Set cell value [9748,37] error: java.lang.IllegalStateE

 相关资料
  • 主要内容:1.概述,2.Compiler,3.AdaptiveCompiler,4.AbstractCompiler,5. JavassistCompiler1.概述 在 Java 语言中,大多数情况下,我们已经编写好 Java 类,并编译成 Class 文件进行运行。但是在一些场景下,例如动态代理,需要运用到动态编译的技术 例如,SPI中的 createAdaptiveExtensionClassCode方法中,我们可以看到如下代码: 调用 Compiler#compile(code, cla

  • 我正在重新编写这个问题,因为我认为原文不太清楚。 基本上,我有一个“wrapper”指令,在该指令中,我试图动态地将属性添加到一个已包装(转包)的元素中。我可以让它工作,但Angular似乎不知道一旦添加了新属性。 如果我使用,Angular确实可以识别它们——但代价是加倍编译转置的内容,在这种情况下,它会加倍标记中的

  • 好的,今天我接受了一次采访,多年来我一直在Java编码。采访说“Java垃圾回收机制是一个棘手的问题,我有几个朋友一直在努力弄清楚。你在这方面做得怎么样?”。她是想欺骗我吗?还是我的一生都是谎言,java没有自动垃圾回收机制? 因为据我所知,java有自动垃圾回收机制,你可以调用System.gc()来收集一些资源,但这并不强制对象被销毁。它仍然由JVM决定。 我说错了吗?

  • 我们检查一下PHP语言中get_loaded_extensions()函数的输出,会发现有一些扩展并没有php.ini文件中调用,而它们确实也已经加载到PHP里去了,可以让我们在PHP语言中使用,如standard、Reflection、Core等。它们便是静态编译的,它们没有被编译成so或者dll文件供PHP动态调用,而是直接和PHP主程序编译到一起。 在*nix上执行静态编译 现在,先让我们执

  • 问题内容: 除了Janino之外,还有其他选项可以在v5中即时编译和执行Java代码吗?我知道v6具有Compiler API,但是我需要使用v5 VM。 我基本上需要获取一个包含完整Java类的字符串,对其进行编译并将其加载到内存中。 问题答案: 您想要的是Janino之类的东西。我们已经使用了多年。您给它(接近标准)的代码,并给您类,以便您可以使用它们。它实际上有很多不同的模式,并支持1.5语

  • 本文向大家介绍C#执行js动态编译的方法,包括了C#执行js动态编译的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#执行js动态编译的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。