From e1cc2e4a52700fddfaf8332ad35b1dc727552317 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Thu, 9 Apr 2026 16:20:40 +0300 Subject: [PATCH] Added blog post on Swift/Kotlin support for April 10th --- ...-kotlin-native-interfaces-faster-base64.md | 280 ++++++++++++++++++ ...kotlin-native-interfaces-faster-base64.jpg | Bin 0 -> 49619 bytes 2 files changed, 280 insertions(+) create mode 100644 docs/website/content/blog/swift-and-kotlin-native-interfaces-faster-base64.md create mode 100644 docs/website/static/blog/swift-and-kotlin-native-interfaces-faster-base64.jpg diff --git a/docs/website/content/blog/swift-and-kotlin-native-interfaces-faster-base64.md b/docs/website/content/blog/swift-and-kotlin-native-interfaces-faster-base64.md new file mode 100644 index 0000000000..01dfa5baa7 --- /dev/null +++ b/docs/website/content/blog/swift-and-kotlin-native-interfaces-faster-base64.md @@ -0,0 +1,280 @@ +--- +title: Swift and Kotlin Native Interfaces, Faster Base64, and More +date: '2026-04-10' +author: Shai Almog +slug: swift-and-kotlin-native-interfaces-faster-base64 +url: /blog/swift-and-kotlin-native-interfaces-faster-base64/ +description: The biggest change this week is that native interfaces now support Swift on iOS and Kotlin on Android. +feed_html: 'Swift and Kotlin Native Interfaces, Faster Base64 The biggest change this week is that native interfaces now support Swift on iOS and Kotlin on Android.' +--- + +![Swift and Kotlin Native Interfaces, Faster Base64](/blog/swift-and-kotlin-native-interfaces-faster-base64.jpg) + +The biggest change this week is that [native interfaces now support Swift on iOS and Kotlin on Android](https://github.com/codenameone/CodenameOne/issues/3274). + +This is still highly experimental like most of the new features you read about in these posts. The main value here is simplified integration of native code which more often is coming with Kotlin or Swift sample code. + +## Native Interfaces Now Support Swift and Kotlin + +Native interfaces are one of the most important features in Codename One. They guarantee you won't be stuck if you need something that we can't/won't deliver. They let our community extend Codename One in ways we couldn't possibly imagine. + +Native interfaces let us keep the application in shared Java code, while still reaching into native APIs when we need platform-specific functionality. + +Until now, the generated implementation flow was based on: + +- **Java** for Android (with the additional Android native APIs) +- **Objective-C** for iOS + +Both still work. Both are still supported. Both are still the default. + +Some Android developers work in Kotlin. iOS developers increasingly work in Swift. Supporting those languages in native interfaces was a long time request in our issue tracker. + +Native interface implementations can now be written as: + +- **Java or Kotlin** on Android +- **Objective-C or Swift** on iOS + +That makes the feature much more natural to use in real-world projects. + +### Typical File Locations + +| Platform | Typical file locations for native interface implementations | +| --- | --- | +| Android (Java/Kotlin) | `android/src/main/java/com/mycompany/myapp/MyNativeImpl.java`
`android/src/main/java/com/mycompany/myapp/MyNativeImpl.kt` | +| iOS (Objective-C/Swift) | `ios/src/main/objectivec/com_mycompany_myapp_MyNativeImpl.h`
`ios/src/main/objectivec/com_mycompany_myapp_MyNativeImpl.m`
`ios/src/main/objectivec/com_mycompany_myapp_MyNativeImpl.swift` | + +By default, the generation process still produces the traditional Java and Objective-C stubs. That is intentional. We do not want to disrupt existing projects or workflows. + +But if you want Swift and Kotlin stubs instead, you can enable them explicitly: + +```bash +mvn cn1:generate-native-interfaces \ + -Dcn1.generateNativeInterfaces.swift=true \ + -Dcn1.generateNativeInterfaces.kotlin=true +``` + +That keeps the default conservative, while offering support for newer languages. + +### Swift on iOS + +On iOS, the "Generate Native Sources" tool still produces the Objective-C files you would expect: + +- `com_mycompany_myapp_MyNativeImpl.h` +- `com_mycompany_myapp_MyNativeImpl.m` + +If Swift generation is enabled, it will produce: + +- `com_mycompany_myapp_MyNativeImpl.swift` + +The main detail to keep in mind is that the runtime still expects the same implementation naming convention. So if you implement the class in Swift, you should keep the generated implementation name and annotate it with `@objc(...)` so the runtime can discover it properly. + +That's an important detail that gives us the best of both worlds. The runtime model stays stable, while developers get to write the native side in Swift instead of Objective-C. + +### Kotlin on Android + +The Android side is even more straightforward. + +You can still implement the generated class in Java: + +```text +android/src/main/java/com/mycompany/myapp/MyNativeImpl.java +``` + +Or you can now implement it in Kotlin: + +```text +android/src/main/java/com/mycompany/myapp/MyNativeImpl.kt +``` + +Some Android APIs, SDK samples, and documentation are Kotlin-first now. When you are integrating something native, it might be the path of least resistance. + +Kotlin support makes native interfaces feel much more at home in the Android ecosystem. + +As a sidenote, native Android Java code should also support JDK 17 level syntax with current builds. This is something we introduced a while back, but it didn't make it to the blog because we couldn't find the relevant issue. + +## Base64 Performance Improved Dramatically + +The other major item in this update is Base64 performance (and performance in general). + +Base64 sits in all kinds of important paths: encoded assets, payload handling, persistence, transport, auth flows, and platform bridges. If it is slow, you feel it in places that are hard to diagnose and annoying to optimize. + +We improved both **encoding** and **decoding** on **Android** and **iOS**. + +This includes a new API that lets developers **reuse a buffer**, which helps reduce GC thrashing in hot paths. That is useful if you are tuning performance-sensitive code directly. + +But even if you do nothing and just use the API the way you always did, performance still improves significantly. + +### Android Results + +On Android, the old implementation was behind native performance, especially for decoding. + +Before these improvements: + +- encode was **7.8% slower** +- decode was **112.3% slower** + +After these improvements: + +- encode is **73.4% faster** +- decode is **61.3% faster** + +That is a very significant swing, especially on decoding. But I especially love how our API beats the pants off of Android's native API... + +### iOS Results + +On iOS, the gap was even larger. + +Before these improvements: + +- encode was **245.1% slower** +- decode was **319.6% slower** + +After these improvements: + +- encode is now **39.7% slower** +- decode is **98.9% slower** + +That is still not parity, but it is a massive improvement. + +The interesting part is that to get to this performance boost, we improved some APIs in ParparVM that should impact the entire application. The biggest change was a significant improvement to array access logic which should make looping over arrays MUCH faster. + +It is also one of those cases where platform internals matter a lot. Base64 on iOS is a very heavily optimized native capability. It likely uses low-level implementation tricks and probably leans on SIMD support in ways we do not currently match. + +Our current goal on this front is to beat the native iOS performance too, which we plan to achieve with SIMD support in ParparVM. We have some work in progress on that front which I hope will land soon. + +I think ParparVM should outperform "native" Objective-C/Swift since it doesn't have the overhead of ARC or message passing. It does have the GC overhead, but that shouldn't impact most applications since our gc is concurrent. Based on these results, we're not there yet. + +## Playground Keeps Getting Better + +The new [Playground](/playground/) is still in the early stages, but it is already becoming more useful. + +This update includes slightly improved theming, and a download button that lets you take a Playground project and continue experimenting with it inside the IDE. + +That is a small addition with a lot of practical value. + +A playground is great for trying ideas quickly, but good experiments tend to stop being experiments. Sometimes a quick prototype turns into a real component, a test case, a support sample, or the start of a feature. Being able to move that work into the IDE directly makes the Playground much more than a toy. + +The Java language support in Playground and its design are currently our top priorities. + +## Sheet Now Supports a Title Component API + +`Sheet` now supports a proper title component API. + +That gives us a much better way to build richer sheet headers instead of treating the title as just a string. + +For example: + +```java +private Sheet createSheet(Sheet parent, String title) { + Sheet newSheet = new Sheet(parent, title); + Label titleIcon = new Label(); + FontImage.setMaterialIcon(titleIcon, FontImage.MATERIAL_IMAGE, 3f); + titleIcon.setUIID("SheetTitleIcon"); + Label titleLabel = new Label(title); + titleLabel.setUIID("SheetTitleText"); + newSheet.setTitleComponent(BoxLayout.encloseYCenter(titleIcon, titleLabel)); + Container content = newSheet.getContentPane(); + content.setLayout(BoxLayout.y()); + content.add(new Label("Sheet content")); + content.add(new Button("Primary Action")); + content.add(new Label("Secondary details")); + newSheet.getCommandsContainer().add(new Button("Edit")); + return newSheet; +} +``` + +This is the sort of API that gives you more control without making the component harder to use. + +You can add icons, custom styling, better hierarchy, and a more polished presentation without resorting to hacks. That makes `Sheet` more flexible in the places where visual structure really matters. + +## Native Simulator Fonts Are More Correct + +We also improved the way `native:*` fonts behave in the Java SE simulator. + +This is one of those areas where "close enough" often isn’t actually close enough. Typography affects spacing, wrapping, alignment, and general visual feel. If the simulator is using the wrong font family, the UI can look right enough to pass casual inspection but still differ in exactly the places that matter on the device. + +The simulator now tries to use installed iOS-family fonts when running with an iOS simulator skin: + +- **San Francisco / SF Pro** first +- then **Helvetica Neue** + +If those fonts are not available on the host machine, it falls back to bundled **Roboto** fonts so behavior remains predictable. + +That gives us a better approximation of real iOS rendering without making the simulator fragile. + +### Can Codename One Bundle Apple's Fonts? + +No. + +Codename One does not bundle Apple’s proprietary fonts. + +If you want exact iOS typography on Windows or Linux, you will need to install those fonts separately under your own Apple license terms. + +In practice: + +- **macOS** users will usually already have the relevant fonts +- **Windows/Linux** users can install San Francisco / SF Pro through [Apple’s official channels](https://developer.apple.com/fonts/) +- if the fonts are not installed, Roboto fallback still works, but text metrics may differ from real iOS devices + +This is the right compromise. Better fidelity where possible, safe fallback where necessary. + +## `Dialog.show()` Can Now Use `InteractionDialog` Mode + +Dialogs are useful, but they have always been awkward around `PeerComponent` content. + +If your app uses things like: + +- `MapContainer` +- Browser components +- Video +- Other native peer-backed views + +Then you have probably run into situations where a normal `Dialog` can trigger odd behaviors such as the background suddenly turning white. + +This happens because a `Dialog` is technically a separate `Form` that grabs a screenshot of the previous `Form` and shows it in the background. That works well for simple cases, but since native components are rendered in a separate thread/ hierarchy, we can't reliably grab a screenshot of them. + +The workaround is to avoid `Dialog` altogether in such cases. We have `InteractionDialog` which relies on layered panes to provide the same experience as a `Dialog` and even allows "floating dialog" behavior (hence the "interaction" part). The problem is that `Dialog.show()` variants are common in the code and very convenient to use. + +To address that, dialogs now support a mode where `Dialog.show()` can use an **InteractionDialog** instead. + +You can enable it globally with: + +```java +Dialog.setDefaultInteractionDialogMode(true); +``` + +Or through the theme hint: + +```text +defaultInteractionDialogModeBool=true +``` + +This is especially relevant for apps that lean heavily on maps, browser content, or native-embedded views in general. + +If that sounds like your app, this is probably worth enabling. + +## Bug Fixes and Enhancements of Note + +A few smaller fixes in this update are worth mentioning too: + +- Tapping the status bar on iOS should finally scroll to the top correctly +- Fixed a ToastBar regression in which extra padding was added at the top +- Material icons in `Tabs` now update their color to match the label color +- Javadocs now include the Java APIs we support again, not just the Codename One APIs + + +## Closing Thoughts + +Thanks to those who took the time to annotate the issues that they found important in the issue tracker. Despite adding new RFEs this week were still able to reduce the issue count to 499, which is fantastic. + +If you submitted an issue in the past, please go to the [issue tracker](https://github.com/codenameone/CodenameOne/issues) and filter based on your account. Make sure that all your issues are still applicable. Close what's irrelevant and comment on what isn't. We're doing that work ourselves, and it's a slow-tedious task. + +Thank you! + +--- + +## Discussion + +_Join the conversation via GitHub Discussions._ + +{{< giscus >}} \ No newline at end of file diff --git a/docs/website/static/blog/swift-and-kotlin-native-interfaces-faster-base64.jpg b/docs/website/static/blog/swift-and-kotlin-native-interfaces-faster-base64.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9a3f0c5371c05708e8824e18e5e5bc5fa8f0a616 GIT binary patch literal 49619 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 RWEWMzg#yelH^3DA{(meMA_D*b literal 0 HcmV?d00001