Codename One 3.3
You can read the full release announcement and details here.
Notice that you should always install the latest release of Codename One thru https://www.codenameone.com/download.html
Highlights Of The Release
Faster rendering of backgrounds & Labels
Up until now the logic for rendering the background of the component resided entirely within Component.java
& DefaultLookAndFeel.java
.
This allowed for a simple rendering logic that is implemented in a single place, however it didn't allow us to deeply optimize some operations in a platform specific way. We moved the rendering into CodenameOneImplementation.java
which allowed us to override the logic both on Android & iOS to deliver native grade performance on any device.
Animation Manager, Title Animations & Style Animations
We rewrote the animation logic in Codename One for 3.3.
This broke some backwards compatibility but this was for a good cause as we now have a central class that manages all animation events going forward. This means that you should no longer get odd exceptions when using many animations in sequence.
As part of this enhancement we also added new animation types such as title scroll animation and the ability to animate a style object UIID.
"Remastered" Documentation (ongoing)
We are redoing a lot of the Codename One documentation from scratch with Codename One 3.3. This is ongoing and we barely just started but the new documentation is far more readable, detailed and clear. Moving forward we are confident that our developer guide, JavaDocs & videos will be in aleague of their own!
Material Design Icons
FontImage
has been around for a while but up until now we didn't use it to its full extent. It required getting an icon font, configuring it and we just skipped it for some cases.
With 3.3 we integrated the material design icon font which makes adding flat icons to your application remarkably simple!
Media Playback & Geo Fencing in the Background
We continued the background process trend with 3.3 as we enabled both geofencing (to track device location in the background) and media playback in the background.
PhoneGap/Cordova Compatibility
Codename One always supported embedding HTML & JavaScript but it didn't support embedding things such as the Cordova/PhoneGap API's.
With the new open source project we announced we can now convert many Cordova/PhoneGap apps to
Codename One apps and deliver quite a few compelling advantages.
New hello world project & icon
A major focus of this release was making Codename One useful and attractive right out of the box. As part of that work we replaced the default icon, redid the hello world app to a more impressive (yet simple) demo and updated the default fonts.
New Simplified Native Fonts
Fonts were a difficult subject prior to 3.3. You could either use the portable but ugly system fonts, or go with the gorgeous but flaky TTF fonts. Both don't make sense when Android ships with the great Roboto font and iOS ships with the gorgeous Helvetica Neue font.
We now have support for a new font notation with the native: prefix. This notation (supported by the Designer), allows us to leverage the existing native fonts of the device which look both native and gorgeous.
Terse syntax enhancements
In 3.2 we started moving towards terse syntax for container hierarchy construction and with 3.3 we brought that to fruition. We added methods such as an add method that accepts an image. We added factory encloseIn methods to almost all of the layout managers, we added form constructors that accept layout managers and much more!
ParparVM Performance & Open Source
Our iOS VM has been open source from the start but we didn't encourage its usage outside of Codename One. This changed with 3.3 and we are actively promoting the ParparVM OpenSource project.
Unrelated to that we made a lot of performance improvements to the core VM translation logic, it should be very competitive in terms of generated code to pretty much everything else on the market. Especially with API calls as our entire API is hand-coded and highly optimized.
Properties file format support
We didn't have support for Java venerable Properties file format before 3.3. Surprisingly developers didn't really complain about that ommission as we support XML, CSV & JSON.
Now we can add Properties to that list!
Ending Support for the codescan API
3.3 will be the last release that includes an implementation of the codescan API for QR code/barcode reading. We will remove this API completely and we ask users to migrate their code to use the new codescan cn1lib. When we initially introduced this API we didn't have support for cn1libs and integrated this into the core directly.