授权协议: BSD
开发语言: Java
操作系统: 跨平台
收录时间: 2013-04-02
提 交 者: mj4738

Janino是一个超级小但又超级快的Java™ 编译器. 它不仅能像javac工具那样讲一组源文件编译成字节码文件,还可以对一些Java表达式,代码块,类中的文本(class body)或者内存中源文件进行编译,并把编译后的字节码直接加载到同一个JVM中运行. Janino不是一个开发工具,  而是作为运行时的嵌入式编译器,比如作为表达式求值的翻译器或类似于JSP的服务端页面引擎

JANINO被整合到Apache Commons JCL项目和JBoss Rules/Drools项目

JANINO可以被用于静态代码分析或者对代码进行修改

JANINO可以被配置成使用javax.tools.JavaCompiler的接口(只在JDK1.6中可用)

特性:
    Janino的主要设计目标是保持编译器体积小和功能简单, 同时提供几乎和javac 1.4兼容的编译器. 我(作者)不喜欢为了一个简单的应用程序夹带大量的类库

Janino实现了如下Java语言中的要素:
包声明、类导入声明、类定义声明、接口定义声明
继承,包括使用extends和implements关键字
静态成员类型声明

内部类,包括成员内部类,匿名内部类,局部内部类
类初始化,实例初始化
属性和方法声明
局部变量声明
类变量,实例变量的初始化
代码块语句
if .. else语句
for循环,while循环、do ... while循环
try ... catch ... finally语句
throw语句、 return语句、break语句、continue语句、switch关键字、synchronized关键字
8种基本数据类型(boolean, char, byte, short,int,long,float,double)
赋值符号(=,+=,-=,*=,/=,&=,|=,^=,%=,<<=,>>=,>>>=)
三目条件运算符(... ? ... : ... )
逻辑运算符(&& || & | !)
位运算符 (& | ^ >> << >>>)
数值运算符(* / % + - )
字符串连接运算符(+)
圆括号表达式
属性读写(例如 System.out)
父类成员属性的读写和父类成员函数的调用(super.meth(); super.field = x;)

例子:

// Compile the expression once; relatively slow.
ExpressionEvaluator ee = new ExpressionEvaluator(
    "c > d ? c : d",                     // expression
    int.class,                           // expressionType
    new String[] { "c", "d" },           // parameterNames
    new Class[] { int.class, int.class } // parameterTypes
);
 
// Evaluate it with varying parameter values; very fast.
Integer res = (Integer) ee.evaluate(
    new Object[] {          // parameterValues
        new Integer(10),
        new Integer(11),
    }
);
System.out.println("res = " + res);

 



展开阅读全文

Janino 的相关资讯

还没有任何资讯

Janino 的相关博客

Java日志框架-logback配置文件多环境日志配置(开发、测试、生产)(原始解决方法)

说明:这种方式应该算是最通用的,原理是通过判断标签实现。 <!-- if-then form --> <if condition="some conditional expres...

Springfox与SpringMvc集成实现接口文档化

SpringMvc提供的接口可以通过Swagger框架实现接口文档化、本文通过实例提供集成环境。实现Springmvc暴露的服务文档可访问、方...

logback打印错误日志到邮箱

logback打印错误日志到邮箱

基于drools创建自己的关系操作符

我们知道drools提供了12种关系操作符 但是有些时候这12种操作符依然不能满足我们的业务需求,我们可以扩展自己的操作符,下面...

Spark Codegen浅析

作者:周克勇,花名一锤,阿里巴巴计算平台事业部EMR团队技术专家,大数据领域技术爱好者,对Spark有浓厚兴趣和一定的了解,目...

折腾Java设计模式之解释器模式

解释器模式 解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客...

JAVA 日志系统【 logback]

LogBack 浅析,针对之前第二篇博文不清楚的地方进行有易的补充。

TSParser (Java MPEG2 Analyzer)

TSParser is a powerful cross-platform DVB/ MPEG stream analyzer. It works well under Windows, Linux, and Mac OS....

logback 常用配置详解(三) <filter>

详细整理了logback常用配置 不是官网手册的翻译版,而是使用总结,旨在更快更透彻的理解其配置 logback 简介 logback常用配置...

缓存架构之借助消息中间件RabbitMQ实现Redis缓存实时更新实战演练

缓存架构之借助消息中间件RabbitMQ实现Redis缓存实时更新实战演练 一、背景介绍 前面,我们花了大量的时间来介绍消息中间件R...

评论 (0)

加载中
更多评论
0 评论
35 收藏
分享
在线直播报名
返回顶部
顶部