Jinq: LINQ-style Queries in Java
summary
A Java library implements LINQ-style queries for Java 8 by translating lambda expressions into SQL at runtime, claiming no compiler or VM changes and relying on bytecode analysis plus symbolic execution of lambda bytecode to extract predicates and projections from control‑flow paths. Lambdas are handled by serializing and reinterpreting their serialized form, which forces serializable lambdas required and serializable closures; works for databases but has overhead and API restrictions compared to Java Streams.
AI-written summary · about
chapters (18)
- 0:00Intro
- 0:52Embedding Database DSLS in Java 8
- 4:29LINQ Syntax
- 5:32Conceptual Model: LINQ-Style Queries
- 6:38In Reality: Lazy Evaluation of DB Queries
- 8:15How Does This All Work?
- 8:58Same Code, Different Bytecode
- 9:52Understand Code by Executing It
- 12:28Query Generation
- 13:03Same Code, Different "Bytecode"
- 13:34Paths through Control Flow Graph
- 13:56Execute Code Symbolically in Each Path
- 15:36Analyze Both Paths
- 15:56Merge Analysis of Paths
- 17:01Different "Bytecode", Same Analysis
- 17:42Lambda Deserialization
- 18:22Serialization Limitations
- 20:30Conclusion
related talks
53mLambdas in Java: A Peek Under the Hood
39mImplementing Lambda Expressions in Java
06mOffers a View Into Lambda Development
44mIt’s Java, but Not As We Know It
01h 07mJava SE: Lambdas, Streams & Future Directions
01h 06mProject Lambda: Simplifying Concurrent Programming in Java SE 8
45mWhat Java Compiles To
02h 09mJava 8 Lambdas Hands-On-Labs
