56,966 blogs · [ { "id": "01a0e70b-2afc-7346-84ce-8efbdddc995e", "title": "OpenTelemetry Support from App to Database", "url": "https://www.codenameone.com/blog/follow-a-tap-with-opentelemetry/", "published_at": "2026-09-28T00:00:00+00:00" }, { "id": "01a0e70b-2afc-7346-84ce-8efbdea49053", "title": "JPA Inspired ORM from SQLite to PostgreSQL", "url": "https://www.codenameone.com/blog/orm-session-from-phone-to-server/", "published_at": "2026-09-27T00:00:00+00:00" }, { "id": "01a0e70b-2afc-7346-84ce-8efbdeb7e40b", "title": "iOS 27 Glass You Can Choose, Measure, and Test", "url": "https://www.codenameone.com/blog/ios-27-glass-you-can-test/", "published_at": "2026-09-26T00:00:00+00:00" }, { "id": "01a0e70b-2afc-7346-84ce-8efbdf3dfae6", "title": "Apple Shouldn't Dictate Your App's Redesign Schedule", "url": "https://www.codenameone.com/blog/who-decides-your-app-redesign/", "published_at": "2026-09-25T00:00:00+00:00" }, { "id": "01a0d7a6-f682-7228-b95a-da4e55a554af", "title": "The Java Compiler That Became Its Own Test Case", "url": "https://www.codenameone.com/blog/parparvm-compiles-itself/", "published_at": "2026-09-24T00:00:00+00:00" }, { "id": "01a0d7a6-f682-7228-b95a-da4e5689fa03", "title": "A Desktop Theme Has to Know About the Mouse", "url": "https://www.codenameone.com/blog/native-desktop-themes-experiment/", "published_at": "2026-09-23T00:00:00+00:00" }, { "id": "01a0d7a6-f682-7228-b95a-da4e56bbcac3", "title": "Xcode 27: The Build Settings That Can Stop a Release", "url": "https://www.codenameone.com/blog/xcode-27-build-settings/", "published_at": "2026-09-22T00:00:00+00:00" }, { "id": "01a0c503-5067-7344-816d-6c7db4758863", "title": "The Hard Part of Invite a Friend Is the Install", "url": "https://www.codenameone.com/blog/invite-link-through-app-store/", "published_at": "2026-09-21T00:00:00+00:00" }, { "id": "01a0c503-5067-7344-816d-6c7db52be9f6", "title": "One Vault, from Your Phone to the Browser", "url": "https://www.codenameone.com/blog/vault-encryption-browser-phone/", "published_at": "2026-09-20T00:00:00+00:00" }, { "id": "01a0c503-5067-7344-816d-6c7db601b6da", "title": "One Java Model from the App to PostgreSQL", "url": "https://www.codenameone.com/blog/java-backend-shared-models/", "published_at": "2026-09-19T00:00:00+00:00" }, { "id": "01a0c503-5067-7344-816d-6c7db6163604", "title": "We Didn't Want to Build Another Java Server", "url": "https://www.codenameone.com/blog/why-another-java-server/", "published_at": "2026-09-18T00:00:00+00:00" }, { "id": "01a0b0b8-1bb6-73c9-8dd5-fd4ec7a5a7fa", "title": "Android 17 Without the Last-Minute Scramble", "url": "https://www.codenameone.com/blog/android-37-readiness-location-button/", "published_at": "2026-09-17T00:00:00+00:00" }, { "id": "01a0b0b8-1bb6-73c9-8dd5-fd4ec81a4032", "title": "Javadoc That Feels Like Your Website", "url": "https://www.codenameone.com/blog/javadoc-hugo-markdown-doclet/", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0b0b8-1bb6-73c9-8dd5-fd4ec8ee79a9", "title": "Native Drag and Drop Meets Cross-Device Continuity", "url": "https://www.codenameone.com/blog/continuity-restoring-work/", "published_at": "2026-09-15T00:00:00+00:00" }, { "id": "01a0b0b8-1bb6-73c9-8dd5-fd4ec9794df5", "title": "Faster Starts, Less JavaScript Overhead", "url": "https://www.codenameone.com/blog/startup-cost-before-first-paint/", "published_at": "2026-09-14T00:00:00+00:00" }, { "id": "01a0b0b8-1bb6-73c9-8dd5-fd4eca77de05", "title": "Faster Maps: Chasing Swiss Speed", "url": "https://www.codenameone.com/blog/hashmap-misses-probe-sequence/", "published_at": "2026-09-13T00:00:00+00:00" }, { "id": "01a094e6-6b6b-7253-90f8-84fd4fbeb210", "title": "What Go Taught Us About Java Garbage Collection", "url": "https://www.codenameone.com/blog/parparvm-gc-small-heaps/", "published_at": "2026-09-12T00:00:00+00:00" }, { "id": "01a094e6-6b6c-7039-8987-21e73f7e4c7d", "title": "Lies, Damn Lies and Benchmarks", "url": "https://www.codenameone.com/blog/performance-work-between-benchmarks/", "published_at": "2026-09-11T00:00:00+00:00" }, { "id": "01a08761-bdc8-723a-a513-e24889a80725", "title": "Pick One Contact Without Asking for the Address Book", "url": "https://www.codenameone.com/blog/private-contact-picker/", "published_at": "2026-09-09T00:00:00+00:00" }, { "id": "01a08761-bdc9-71eb-93f0-141f47f1da7b", "title": "We Stopped Waiting for Platform Changes to Find Us", "url": "https://www.codenameone.com/blog/platform-deprecation-watch/", "published_at": "2026-09-08T00:00:00+00:00" }, { "id": "01a08761-bdc9-71eb-93f0-141f4885ff0e", "title": "Fill an SMS Verification Code Without Reading the Inbox", "url": "https://www.codenameone.com/blog/sms-otp-autofill/", "published_at": "2026-09-07T00:00:00+00:00" }, { "id": "01a08761-bdc9-71eb-93f0-141f4892296e", "title": "A Mac App, Not an iOS App on a Mac", "url": "https://www.codenameone.com/blog/native-appkit-mac-port/", "published_at": "2026-09-06T00:00:00+00:00" }, { "id": "01a08761-bdc9-71eb-93f0-141f49171114", "title": "A Dialog Can Now Be a Native Desktop Window", "url": "https://www.codenameone.com/blog/dialogs-in-native-windows/", "published_at": "2026-09-05T00:00:00+00:00" }, { "id": "01a08761-bdc9-71eb-93f0-141f4939200a", "title": "VoIP, VPN, and the Build System Behind Them", "url": "https://www.codenameone.com/blog/voip-vpn-builders/", "published_at": "2026-09-04T00:00:00+00:00" }, { "id": "01a08761-bdc9-71eb-93f0-141f4a3354e3", "title": "Build Hints That Fail Before the Build Server", "url": "https://www.codenameone.com/blog/compile-time-build-hints/", "published_at": "2026-09-02T00:00:00+00:00" }, { "id": "01a08761-bdc9-71eb-93f0-141f4b050ee1", "title": "Rootless Jailbreak Detection: Updating the Signals, Not the Claim", "url": "https://www.codenameone.com/blog/rootless-jailbreak-detection/", "published_at": "2026-09-01T00:00:00+00:00" }, { "id": "01a08761-bdc9-71eb-93f0-141f4b5a9422", "title": "Watch Follow-Through: Complications, Tiles, and a Companion Wear APK", "url": "https://www.codenameone.com/blog/watch-complications-wear-companion/", "published_at": "2026-08-31T00:00:00+00:00" }, { "id": "01a08761-bdc9-71eb-93f0-141f4c358eeb", "title": "UWB and Nearby Devices: Distance, Direction, Association, and Transport", "url": "https://www.codenameone.com/blog/uwb-nearby-devices/", "published_at": "2026-08-30T00:00:00+00:00" }, { "id": "01a08761-bdca-7360-ae06-06cf912c515b", "title": "Put App Documents in the System File Browser", "url": "https://www.codenameone.com/blog/documents-in-system-file-browser/", "published_at": "2026-08-29T00:00:00+00:00" }, { "id": "01a08761-bdca-7360-ae06-06cf913d8bc2", "title": "One App, More Than One Native Window", "url": "https://www.codenameone.com/blog/native-desktop-windows/", "published_at": "2026-08-28T00:00:00+00:00" }, { "id": "01a08761-bdca-7360-ae06-06cf91f75234", "title": "App Intents: One Java Declaration for Siri, Spotlight, and Shortcuts", "url": "https://www.codenameone.com/blog/app-intents-siri-spotlight-shortcuts/", "published_at": "2026-08-27T00:00:00+00:00" }, { "id": "01a08761-bdca-7360-ae06-06cf9272a534", "title": "CodeScanner.scan(): Barcode Scanning Without Rebuilding the Camera Pipeline", "url": "https://www.codenameone.com/blog/camera-vision-scanners/", "published_at": "2026-08-26T00:00:00+00:00" }, { "id": "01a08761-bdca-7360-ae06-06cf928876ed", "title": "Tapjacking Protection: Rejecting Android Touches Behind an Overlay", "url": "https://www.codenameone.com/blog/tapjacking-protection/", "published_at": "2026-08-25T00:00:00+00:00" }, { "id": "01a08761-bdca-7360-ae06-06cf9374e029", "title": "One Java API for HomeKit, Matter, and Google Home", "url": "https://www.codenameone.com/blog/smart-home-homekit-matter/", "published_at": "2026-08-24T00:00:00+00:00" }, { "id": "01a08761-bdca-7360-ae06-06cf93a0f4f6", "title": "JavaScript Find in Page: DOM Text Above the Codename One Canvas", "url": "https://www.codenameone.com/blog/javascript-dom-text-search/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a08761-bdca-7360-ae06-06cf949e0e33", "title": "Watch Apps: One Codebase, Two Real Applications", "url": "https://www.codenameone.com/blog/watch-apps-phone-channel/", "published_at": "2026-08-22T00:00:00+00:00" }, { "id": "01a08761-bdca-7360-ae06-06cf953b1006", "title": "SQLite Across Every Port: One Contract, One Encrypted File Format", "url": "https://www.codenameone.com/blog/sqlite-portable-encrypted/", "published_at": "2026-08-21T00:00:00+00:00" }, { "id": "01a08761-bdca-7360-ae06-06cf95fc66c4", "title": "App Hardening: One Obfuscation Pipeline Across Every Port", "url": "https://www.codenameone.com/blog/app-hardening-cross-platform/", "published_at": "2026-08-15T00:00:00+00:00" }, { "id": "01a08761-bdca-7360-ae06-06cf964654b0", "title": "The Third-Generation GUI Builder: One Workspace for Every Form", "url": "https://www.codenameone.com/blog/third-generation-gui-builder/", "published_at": "2026-08-14T00:00:00+00:00" }, { "id": "01a08761-bdca-7360-ae06-06cf96960482", "title": "App Shield: Your Server Should Not Trust the App Calling It", "url": "https://www.codenameone.com/blog/app-shield-server-attestation/", "published_at": "2026-08-07T00:00:00+00:00" }, { "id": "01a08761-bdca-7360-ae06-06cf96b640b6", "title": "Why Codename One Is Moving Beyond Maven Central", "url": "https://www.codenameone.com/blog/maven-central-cloudflare-r2/", "published_at": "2026-08-04T00:00:00+00:00" }, { "id": "01a08761-bdca-7360-ae06-06cf97ab3414", "title": "A Polyline Is Not a Route", "url": "https://www.codenameone.com/blog/road-following-map-routing/", "published_at": "2026-08-03T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-7660803e2bf6", "title": "On-Device AI and MCP on Every Port", "url": "https://www.codenameone.com/blog/on-device-ai-mcp-loopback/", "published_at": "2026-08-02T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76608101508d", "title": "Health Data Without Fake Certainty", "url": "https://www.codenameone.com/blog/health-api-false-certainty/", "published_at": "2026-08-01T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766081bdef9d", "title": "Push V3: One Message From Your Server to Every Surface", "url": "https://www.codenameone.com/blog/push-v3-new-cloud/", "published_at": "2026-07-31T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76608221daa8", "title": "Compact Strings Cut Character Storage in Half", "url": "https://www.codenameone.com/blog/compact-strings-parparvm/", "published_at": "2026-07-29T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766082c37176", "title": "A Lightweight Rich Text Component Without a Web View", "url": "https://www.codenameone.com/blog/rich-text-without-webview/", "published_at": "2026-07-28T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76608372e34d", "title": "Pure Codename One Text Editing Without Native Overlays", "url": "https://www.codenameone.com/blog/text-input-without-native-overlay/", "published_at": "2026-07-27T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76608447dabb", "title": "Bluetooth Support Across Every Codename One Target", "url": "https://www.codenameone.com/blog/bluetooth-beyond-ble/", "published_at": "2026-07-26T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-7660849e5fe6", "title": "Calendar API: Local Calendars, Cloud Sync, and Conflict Handling", "url": "https://www.codenameone.com/blog/calendar-is-not-add-event/", "published_at": "2026-07-25T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766085772c39", "title": "The Codename One JavaScript Port Is Now Free and Open Source", "url": "https://www.codenameone.com/blog/javascript-free-open-source/", "published_at": "2026-07-24T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-7660863de172", "title": "Port Support You Can Trace Back to a Green Test", "url": "https://www.codenameone.com/blog/tested-port-support/", "published_at": "2026-07-22T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766086b14028", "title": "Your Codename One App Can Be an MCP Server", "url": "https://www.codenameone.com/blog/codename-one-mcp-server/", "published_at": "2026-07-21T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76608723ff84", "title": "Accessibility Semantics: The UI Tree You Cannot See", "url": "https://www.codenameone.com/blog/accessibility-semantics/", "published_at": "2026-07-20T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766087bac83f", "title": "Widgets, Live Activities, and Dynamic Island From One Java API", "url": "https://www.codenameone.com/blog/widgets-live-activities-dynamic-island/", "published_at": "2026-07-19T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-7660884eefc2", "title": "Codename One Settings Is Now a Standalone Tool", "url": "https://www.codenameone.com/blog/standalone-codename-one-settings/", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-7660885471e2", "title": "Own Your Pixels: Native Fidelity on Your Schedule", "url": "https://www.codenameone.com/blog/pixel-perfect-is-a-test/", "published_at": "2026-07-17T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766088910e16", "title": "Store Submissions As Code: App Store, Google Play, And Huawei AppGallery", "url": "https://www.codenameone.com/blog/automated-store-submissions/", "published_at": "2026-07-13T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766088a72c00", "title": "AR And VR In Java: ARKit, ARCore, And A Virtual Room You Can Debug", "url": "https://www.codenameone.com/blog/ar-vr-support-simulation/", "published_at": "2026-07-12T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766088da861b", "title": "The Certificate Wizard Is Now A Standalone App, And It Stopped Impersonating You", "url": "https://www.codenameone.com/blog/standalone-certificate-wizard/", "published_at": "2026-07-11T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766089d3e6c3", "title": "How We Beat HotSpot Performance (By Cheating, But Not Like That)", "url": "https://www.codenameone.com/blog/beating-hotspot-performance/", "published_at": "2026-07-10T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76608a33d0eb", "title": "Game Builder Tutorial 3: Build a First-Person 3D Dungeon", "url": "https://www.codenameone.com/blog/game-builder-3d-dungeon/", "published_at": "2026-07-09T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76608adad124", "title": "VideoIO, PCM Mixing And Timed Whisper Captions", "url": "https://www.codenameone.com/blog/videoio-audio-mixer-whisper/", "published_at": "2026-07-08T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76608b736a99", "title": "Versioned Builds Are Back, With Master Builds For Fast Verification", "url": "https://www.codenameone.com/blog/versioned-builds-master/", "published_at": "2026-07-07T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76608c03fca5", "title": "Commerce And Secrets Without An IAP Tax", "url": "https://www.codenameone.com/blog/commerce-secrets-without-iap-tax/", "published_at": "2026-07-06T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76608c26d28a", "title": "Motion, Stylus, Trackpads And Foldables In The Core", "url": "https://www.codenameone.com/blog/motion-input-form-factors/", "published_at": "2026-07-05T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76608cd92bfb", "title": "CarPlay And Android Auto From One Codename One API", "url": "https://www.codenameone.com/blog/carplay-android-auto-codename-one/", "published_at": "2026-07-04T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76608d34f4f3", "title": "More Surfaces, Same Deal: Cars, Sensors, Commerce, Video And Builds", "url": "https://www.codenameone.com/blog/one-codebase-more-surfaces/", "published_at": "2026-07-03T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76608d39b3bf", "title": "Game Builder Tutorial 2: Build a Blackjack Card Game (Duke Jack)", "url": "https://www.codenameone.com/blog/game-builder-board-game/", "published_at": "2026-07-02T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76608dffa5ab", "title": "Device Integrity And App Review: RASP, Attestation, And Asking For Ratings Right", "url": "https://www.codenameone.com/blog/device-integrity-and-app-review/", "published_at": "2026-07-01T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76608efaf37b", "title": "Apple TV And Android TV: One Codebase, And CSS @media For The Living Room", "url": "https://www.codenameone.com/blog/apple-tv-and-android-tv/", "published_at": "2026-06-30T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76608fb0e768", "title": "A Privacy-First Analytics API: One Facade, A Provider SPI, And A Consent Gate", "url": "https://www.codenameone.com/blog/privacy-first-analytics/", "published_at": "2026-06-29T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76608fea5cc4", "title": "Rich Text And Code Editing: RichTextArea And A Syntax-Highlighting CodeEditor", "url": "https://www.codenameone.com/blog/rich-text-and-code-editing/", "published_at": "2026-06-28T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766090b3d4f9", "title": "Maps You Control: A Pure-Vector MapView And Pluggable Native Providers", "url": "https://www.codenameone.com/blog/vector-and-native-maps/", "published_at": "2026-06-27T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766090ccbdac", "title": "Funding Open Source Without The Bait And Switch: Analytics, Native Maps, TV And More", "url": "https://www.codenameone.com/blog/funding-open-source-without-the-bait-and-switch/", "published_at": "2026-06-26T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-7660914aa42c", "title": "Game Builder Tutorial 1: Build a 2D Platformer — Duke's Coffee Run", "url": "https://www.codenameone.com/blog/game-builder-2d-platformer/", "published_at": "2026-06-25T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766091605407", "title": "The Codename One Game Builder: Draw The Level, Code The Rules", "url": "https://www.codenameone.com/blog/the-codename-one-game-builder/", "published_at": "2026-06-23T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76609243ed7f", "title": "Seamless Crash Protection That Symbolicates Native Crashes", "url": "https://www.codenameone.com/blog/seamless-crash-protection/", "published_at": "2026-06-22T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766092c77996", "title": "Just Watch", "url": "https://www.codenameone.com/blog/native-apple-watch-and-wear/", "published_at": "2026-06-21T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-7660934b8850", "title": "Java To Native Linux App: One 5MB Binary, x64 And Arm", "url": "https://www.codenameone.com/blog/java-to-a-native-linux-app/", "published_at": "2026-06-20T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-7660938aecb8", "title": "Native Linux, Apple Watch, A Game Builder And Crash Protection", "url": "https://www.codenameone.com/blog/native-linux-apple-watch-game-builder-crash-protection/", "published_at": "2026-06-19T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766093c17d12", "title": "Print Anywhere, And Put Your Cards In Apple Wallet", "url": "https://www.codenameone.com/blog/printing-and-apple-wallet/", "published_at": "2026-06-16T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766093f4b633", "title": "Java To A Native Windows EXE: No JVM, 5MB, x64 And Arm", "url": "https://www.codenameone.com/blog/native-windows-port-no-jvm/", "published_at": "2026-06-15T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766094c9b621", "title": "Build Games In Java: Sprites, Box2D Physics And Low-Latency Sound", "url": "https://www.codenameone.com/blog/game-development-api-box2d/", "published_at": "2026-06-14T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766094de6d68", "title": "3D Graphics Without Writing Shaders: The Portable GPU API", "url": "https://www.codenameone.com/blog/portable-3d-graphics-api/", "published_at": "2026-06-13T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766095b02a7e", "title": "Native Java Win32, 3D Gaming, Printing and Wallet", "url": "https://www.codenameone.com/blog/native-java-win32-3d-gaming-printing-and-wallet/", "published_at": "2026-06-12T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76609610a0ab", "title": "Background Work, Push Topics, And Richer Notifications", "url": "https://www.codenameone.com/blog/background-execution-and-push/", "published_at": "2026-06-09T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766096ed0326", "title": "A New Advertising API, Built From The Ground Up", "url": "https://www.codenameone.com/blog/modern-advertising-api/", "published_at": "2026-06-08T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766096fa5f4d", "title": "WebSockets, gRPC, And GraphQL In The Core", "url": "https://www.codenameone.com/blog/websockets-grpc-and-graphql/", "published_at": "2026-06-07T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766097b04353", "title": "Your Codename One App, Now A Native Mac App", "url": "https://www.codenameone.com/blog/mac-native-builds-and-desktop-integration/", "published_at": "2026-06-06T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766097ddd5cd", "title": "Mac Native Builds, Live Protocols, And Open Issues Under 350", "url": "https://www.codenameone.com/blog/mac-native-grpc-graphql-and-fewer-open-issues/", "published_at": "2026-06-05T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766098a42c77", "title": "We Will Not Sabotage Your Code", "url": "https://www.codenameone.com/blog/we-will-not-sabotage-your-code/", "published_at": "2026-06-03T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-7660999df1f2", "title": "OpenAPI, ORM, SVG and Lottie", "url": "https://www.codenameone.com/blog/build-time-codegen/", "published_at": "2026-06-01T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-766099c12f03", "title": "AI, OAuth, And Other Platform APIs In The Core", "url": "https://www.codenameone.com/blog/platform-apis-in-the-core/", "published_at": "2026-05-31T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76609a32ffc3", "title": "On-Device Debugging And JUnit 5", "url": "https://www.codenameone.com/blog/developer-workflow-debug-and-junit/", "published_at": "2026-05-30T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76609a8c9b8b", "title": "Metal Default, A New Build Cloud, And A New Format", "url": "https://www.codenameone.com/blog/metal-default-new-build-cloud-and-a-new-format/", "published_at": "2026-05-29T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76609ade9f3b", "title": "NFC, Crypto, Biometrics, And A New Build Cloud", "url": "https://www.codenameone.com/blog/nfc-crypto-biometrics-and-build-cloud/", "published_at": "2026-05-22T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76609b2f39a1", "title": "Skills, Java 17, And Theme Accents", "url": "https://www.codenameone.com/blog/skills-java17-and-theme-accents/", "published_at": "2026-05-15T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76609bdcab4d", "title": "Metal and Skins", "url": "https://www.codenameone.com/blog/metal-and-skins/", "published_at": "2026-05-08T00:00:00+00:00" }, { "id": "01a08761-bdcb-72e9-b92e-76609cb02688", "title": "Liquid Glass, Material 3, And A Lot Of Plumbing", "url": "https://www.codenameone.com/blog/liquid-glass-material-3-modern-native-themes/", "published_at": "2026-05-01T00:00:00+00:00" } ] posts Claim your blog
Back to CodeName One
Blog · corpus.blog/blogs/codenameone.com/posts

CodeName One

codenameone.com

2026