...
| Final Array & Anonymous Class | Generic Constructors | Capture Conversion Idiom | Overloaded Methods Sharing Single Type | Covariant Arrays | Rethrown Exception |
---|---|---|---|---|---|---|
JTL | X | X | X | ? | X | X |
BBQ | X | X | X | ? | X | X |
SOUL | ✓ | ✓ | ✓ |
|
|
|
JQuery | X | X | X | X (*1) | X | X |
.QL (*2) | ✓ | ? | ? | ? | ✓ | ? |
Jackpot | X | ✓ | X | X | X | ✓ ? |
PMD | X | X | X | X | X | X |
*1: can find overloaded methods but not sharing single type: method(?C, ?M1), method(?C, ?M2), likeThis(?M1, ?M2). Tested with operations available in eclipse plugin. Paper describe different operations that don't seem to be supported.
...
- Model: Relational vs Tree
- variable binding (unification) & cross back-reference
- set operators
- readRead/write references
- aggregates (grouping results)
- List pattern matching ? (i.e JTL style for argument list, )
- behavioural pattern matching (SOUL like for AST matching, Jackpot)
- universal quantifiers (forall, exists, no)
- querying style: logic, query-by-example, path, sql
Java Language Features supported
...
Idea: decouple query-by-example from constraints on variables. - two different views-
It seems pure template based languages are not expressive enough and so are pure logic-based queries.
Sweet spot a combination of both mechanisms (which SOUL provides).
Implementation
Tools available
...