Codename One also allows you full access to each platform’s native APIs via native interfaces. Native interfaces are easy to create in Codename One. You just create a Java interface that extends Native Interface, then use the Codename One plugin to generate stubs for the native implementation.
Then you just fill in those stubs with your native code. Using native interfaces, you can even integrate native UI widgets into your app seamlessly.
The Codename One runtime
consists of two layers:
You can also make use of 3rd-party native libraries via Native interfaces. You can embed native libraries directly in your project’s “native” directory, or you can use build hints to add dependencies in cocoapods (iOS), gradle (Android), and Nuget (UWP).
There is already a wide assortment of cn1libs developed by both Codename One and third-party developers. Some notable “cn1libs” include Google Maps support, Websocket Support, and Parse support.