百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
P

procyon

> 编程语言
开源

Procyon 是一套 Java 元编程工具,包括丰富的反射 API、基于 LINQ 的表达式树 API 用于运行时代码生成,以及 Java d

1.2K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

Procyon 是一套 Java 元编程工具,包括丰富的反射 API、基于 LINQ 的表达式树 API 用于运行时代码生成,以及 Java d

Procyon is a suite of Java metaprogramming tools focused on code generation and analysis. It includes the following libraries:

  1. Core Framework
  2. Reflection Framework
  3. Expressions Framework
  4. Compiler Toolset (Experimental)
  5. Java Decompiler (Experimental)

The Procyon libraries are available from Maven Central under group ID org.bitbucket.mstrobel.

Core Framework

The procyon-core framework contains common support classes used by the other Procyon APIs. Its facilities include string manipulation, collection extensions, filesystem/path utilities, freezable objects and collections, attached data stores, and some runtime type helpers.

Reflection Framework

The procyon-reflection framework provides a rich reflection and code generation API with full support for generics, wildcards, and other high-level Java type concepts. It is based on .NET's System.Reflection and System.Reflection.Emit APIs and is meant to address many of the shortcomings of the core Java reflection API, which offers rather limited and cumbersome support for generic type inspection. Its code generation facilities include a TypeBuilder, MethodBuilder, and a bytecode emitter.

For more information, see the Reflection Framework topic.

Example

final Type map = Type.of(Map.class);
final Type rawMap = map.getErasedType();
final Type> boundMap = map.makeGenericType(Types.String, Types.Integer);

System.out.println(map.getDeclaredMethods().get(1));
System.out.println(rawMap.getDeclaredMethods().get(1));
System.out.println(boundMap.getDeclaredMethods().get(1));

System.out.println(boundMap.getGenericTypeParameters());
System.out.println(boundMap.getTypeArguments());

Output

public abstract V put(K, V)
public abstract Object put(Object, Object)
public abstract Integer put(String, Integer)
[K, V]
[java.lang.String, java.lang.Integer]

Expressions Framework

The procyon-expressions framework provides a more natural form of code generation. Rather than requiring bytecode to be emitted directly, as with procyon-reflection and other popular libraries like ASM, procyon-expressions enables code composition using declarative expression trees. These expression trees may then be compiled directly into callbacks or coupled with a MethodBuilder. The procyon-expressions API is almost a direct port of System.Linq.Expressions from .NET's Dynamic Language Runtime, minus the dynamic callsite support (and with more relaxed rules regarding type conversions).

Example

…

Output

() => for (String item : [one, two, three, four, five])
    System.out.printf("Got item: %s\n", new Object[] { item })

Got item: one
Got item: two
Got item: three
Got item: four
Got item: five

Compiler Toolset

The procyon-compilertools project is a work in progress that includes:

  1. Class metadata and bytecode inspection/manipulation facilities based on Mono.Cecil
  2. An optimization and decompiler framework based on ILSpy

The Compiler Toolset is still early in development and subject to change.

Decompiler Front-End

procyon-decompiler is a standalone front-end for the Java decompiler included in procyon-compilertools. All dependencies are embedded in the JAR for easy redistribution. For more information about the decompiler, see the Java Decompiler wiki page.

Powered by Procyon

Check out these third party products based on Procyon! Are you using Procyon in one of your projects? Contact me (email / twitter) if you would like it listed here.

  • SecureTeam Java Decompiler
    A JavaFX-based decompiler front-end with fast and convenient code navigation. Download it, or launch it directly from your browser.

  • Bytecode Viewer is an open source Java decompilation, disassembly, and debugging suite by @Konloch. It can produce decompiled sources from several modern Java decompilers, including Procyon, CFR, and FernFlower.

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Java

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言