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

Janino

Java™ 编译器
授权协议 BSD
开发语言 Java
所属分类 开发工具、 编译器
软件类型 开源软件
地区 不详
投 递 者 邢同
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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);

 



  • 前言: 项目中引用了这个库,主要是在logback中使用到。 一、 Janino简介         Janino 是一个极小、极快的 开源Java 编译器(Janino is a super-small, super-fast Java™ compiler.)。Janino 不仅可以像 JAVAC 一样将 Java 源码文件编译为字节码文件,还可以编译内存中的 Java 表达式、块、类和源码文件

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

  • 一、引入依赖 spring-boot-dependencies里已经申明了janino的版本,spring-boot项目直接引入依赖即可 <dependency> <groupId>org.codehaus.janino</groupId> <artifactId>janino</artifactId> </dependency> 二、新建classloader // 使

 相关资料
  • 我使用maven命令来清理、构建整个项目、创建war并部署到服务器。我不能使用Intellij来做这件事,因为我只有社区版。它在与intellij相同的目录中构建项目。 为了加快速度,我编写了一个脚本,可以在本地“target”目录中找到比服务器中更新的已编译文件,并进行复制。虽然一切正常,但问题是Intellij并没有将使用maven编译的类视为应该跳过并重新构建整个项目的类。 目前它的工作原理

  • 词法分析器 语法分析器 语义分析及中间代码生成 代码优化 代码生成

  • 编译器 编译器将用一种语言编写的代码转换为另一种语言,而无需更改程序的含义。还期望编译器应该使目标代码高效且在时间和空间方面得到优化。 编译器设计原理提供了翻译和优化过程的深入视图。编译器设计涵盖了基本的转换机制以及错误检测与恢复。它包括词法,语法和语义分析作为前端,以及代码生成和优化作为后端。 为什么要学习编译器设计? 计算机是软件和硬件的平衡组合。硬件只是机械设备的一部分,其功能由兼容的软件控

  • 准备工作 Ubuntu 16.04 $ apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev unzip texinfo device-tree-compiler dosfstools libusb-1.0-0-

  • 借助 FuelWise™ 补充能量助手,在训练课期间保持活力。FuelWise™ 提供三项功能,提醒并帮助您在长时间训练期间补充能量和保持足够的能量水平。这些功能包括智能碳水提示、手动碳水提示和饮水提示。 对于任何要求严格的耐力型运动员来说,在长时间运动期间保持足够的能量水平和水分供给至关重要。为了保持最佳状态,您需要在长跑或训练课过程中定时为身体补充碳水化合物和饮水。借助碳水提示和饮水提示这两个

  • 借助 FuelWise™ 补充能量助手,在训练课期间保持活力。FuelWise™ 提供三项功能,提醒并帮助您在长时间训练期间补充能量和保持足够的能量水平。这些功能包括智能碳水提示、手动碳水提示和饮水提示。 对于任何要求严格的耐力型运动员来说,在长时间运动期间保持足够的能量水平和水分供给至关重要。为了保持最佳状态,您需要在长跑或训练课过程中定时为身体补充碳水化合物和饮水。借助碳水提示和饮水提示这两个

  • Skype™     何谓 Skype 事前准备 联系人名单 如何通话 所有拨打记录 其他机能 需付费的机能