Codename One was created in 2006 by Chen Fishein at Sun Microsystems to address device fragmentation issues with LWUIT. In 2010, Chen and Shai quit Sun Microsystems and formed Codename One to expand the scope of LWUIT. Codename One uses virtual machines and tools to build cross-platform mobile apps with a common API, supports plugins for IDEs, and provides cloud-based builds to abstract differences between devices. It has grown to support over 40,000 developers and 10 releases with JavaScript, UWP, and desktop platforms by 2017.
2. History
2006 2008 2010 2012 2014 2016
The Beginning
Chen Fishein starts the LWUIT
project at Sun Microsystems
with goals of ending device
fragmentation
Open Source
Sun Microsystems Open
sources LWUIT at Java One
A new Beginning
Chen & Shai quit Sun
Microsystems and form
Codename One. The project
has far greater scope and
ambition than LWUIT
100M Installs
Codename One grows &
expands both in scope and
use
Maturity
By January 2017
Codename One had 10
releases, added support for
JavaScript, UWP & Desktop
platforms. The bourgeoning
developer community was
40k strong
3. ✦Virtual machine for all devices
✦API for all devices
✦IDE Plugins to build mobile
applications
✦Set of tools, simulator, GUI builder,
theme designer
✦Cloud based build system to abstract
device differences
What’s Codename One?
}
Fun Fact
We came up with the name
Codename One as a placeholder
until we find an actual name
Eventually we kept it because it
makes these distinct tools act as
“one”
4. Virtual machine for all devices
✦iOS doesn’t support Java & disallows JIT.
Codename One’s open source ParparVM
translates Java bytecode to C code so it can be
compiled with xcode
✦Windows UWP works with a .net VM subset,
Codename One ported iKVM (a Java .net runtime)
so it will work with Universal Windows Platform
✦For web support Codename One uses TeaVM
which translates Java bytecode to JavaScript
5. API for all devices
✦Common API abstracting mobile device
functionality mainly UI
✦Clearly defined porting layer implemented for all
supported platforms
✦Lightweight UI approach
✦Focus on simplicity, portability & common use
cases & statically linked
6. IDE Plugins
✦Codename One includes plugins for IntelliJ/IDEA,
NetBeans & Eclipse
✦These plugins hide the complex details of
installing/setting up Codename One
✦They are mostly a thin layer around the tools
7. Tools
✦Build tools - based on Ant, invoked by IDE for
cloud builds and other capabilities
✦Device Simulator
✦Resource Editor/Designer - provides theming,
localization, image management and old GUI
builder
✦New GUI Builder - standalone GUI builder tool
replacing the old one within the designer
8. Cloud Build
✦Macs, Windows & Linux machines in the cloud
perform the actual native app build process
✦This is abstracted by the build tools to provide a
unified experience
✦Removes the need to install custom software and
configure it to very specific requirements
✦A major reason Codename One is so simple to
use
10. Lightweight Frameworks Heavyweight Frameworks
Draws widgets Native widget for every user widget
Handles widget events & user input Thin API
Layout, theming & all functionality
is handled by framework
Layout etc. are handled by OS
Framework provides tools Mix of framework tools and OS tools
Lightweight vs. Heavyweight
11. Lightweight Frameworks Heavyweight Frameworks
Portable Matches OS Conventions
Customizable Performant (debatable)
Consistent (also in performance) Consistent with OS
Easy to use Access to native OS features
Lightweight vs. Heavyweight
12. Lightweight In Codename One
✦Allows native peer - e.g. Google Maps, Video etc.
✦Lightweight components can reside on top or
below native peers
✦Performant - uses gaming API’s (e.g. OpenGL) to
get native performance. Performance is
consistent across devices
✦Very customizable