Al jaren verbaas ik me over het naast elkaar bestaan van volledig incompatibel app-ontwikkelomgevingen: Een Java variant in Eclipse op Android, Objective-C in Xcode op iOS, en C#/.Net in Visual Studio op Windows Phone. Een goed idee voor een app vergt hierdoor drie (grotendeels) onafhankelijke ontwikkeltrajecten om de volledige smartphone/tablet markt te kunnen dekken. Toen ik onlangs attent werd gemaakt op een tool waarmee het mogelijk is om in één keer een native app voor alle populaire platformen te maken, was mijn interesse snel gewekt.
Codename One is een open source tool wat claimt de Java slogan “write once, run anywhere” weer een stapje verder te brengen. De slogan bovenaan de website van Codename One stelt: “Easily create native apps using Java™ for iOS, Android, Windows, RIM and more!” – Dat is haast te mooi om waar te zijn, dacht ik toen ik dit voor het eerst las.
Het bedrijf Codename One is ontstaan uit het LWUIT project van Sun. De tool compileert Java 1.5 code met bijbehorende resource bestanden tot native code apps voor een groot aantal platformen. Het software is volledig open source, maar om een app voor een specifiek platform te compileren is het erg handig om gebruik te maken van de build servers van Codename One.
Zelf aan de slag
Om uit eerste hand te weten hoe geldig de bovenstaande claims in de echte wereld zijn, besloot ik zelf een app te bouwen voor zowel Android als iOS. De keuze viel op een app om statistieken te verzamelen en delen tijdens basketbalwedstrijden.
De ontwikkeltools blijken redelijk volwassen te zijn, en goed te integreren met Eclipse en NetBeans. Daarnaast blijkt het gebruik van de emulator heel praktisch, omdat deze eenvoudig naar een groot aantal verschillende devices en platformen om te schakelen is.
Doordat Codename One gebruik maakt een “light weight” UI (zoals Swing), is het vrij eenvoudig om ook eigen controls toe te voegen. Het gevolg van deze aanpak is dat hoewel de controls lijken op die van het platform, alles altijd door de app zelf getekend wordt. Het gevolg is dat lang niet alle controls er exact hetzelfde uitzien als de standaard controls van het platform.
Resultaat
Het resultaat van mijn onderzoek is een stabiel werkende applicatie die in de Google Play Store (Android) en in de Apple App Store (iOS) beschikbaar is.
Het blijkt dus werkelijk mogelijk te zijn om met weinig extra inspanning een échte app te ontwikkelen voor vrijwel alle gangbare telefoons en tablets!
Het resultaat van mijn onderzoek is hier te downloaden: