Unlike other Java to Objective-C solutions, Java-Objective-C Bridge doesn't require any code generation of class stubs. It allows you to use any Objective-C libraries and frameworks from Java without having to write any native code. In addition to being able to use Objective-C objects, it allows you to pass Java objects to the objective-c runtime as delegates, so that you can write an entire Cocoa application in Java. The bridge provides 3 levels of abstraction. At the lowest level, it provides wrappers around the Objective-C runtime functions. At a slightly higher level of abstraction, it provides a procedural API to send messages to the Objective-C runtime. At the highest level of abstraction, it provides a Proxy class that serves as a wrapper around any Objective-C object that allows you to work with it in Java almost the same as if you were in Objective-C.