Latest posts from Codename One.
Blog

New Build Cloud
This is important! We will replace the entire build infrastructure of Codename One over this weekend. That means that you might see disruptions in service through the weekend but please report them to us as we might not be aware! We are finally removing the last remaining pieces of the horrible mess that is Google App Engine from our backend code. This is a huge job and is sure to cause some disruption. ...

Moving Away from Intercom
A few years ago a consultant convinced us to integrate Intercom into our website. In retrospect this was a mistake which I’ll discuss in more depth below. We are migrating away from Intercom right now… That means that if you have an email address or ongoing chat history with us in Intercom it might get lost! Worse. If you unsubscribe this might also get lost due to the migration process (sorry about that!). We’re moving to a new far better system (crisp). ...

ToastBar Return Value
Last week I pushed out an enhancement to ToastBar that changed the static showMessage methods. I made them return the Status object instead of void which would allow more control of the toast message after it’s shown. Unfortunately, I totally forgot that I can’t do that without breaking some binary compatibility. In Java return types create a distinct method signature, so even though the language doesn’t allow you to do this: ...

Native Logging and Certificate Wizard Downtime
I’ve been so busy with the book I completely missed a lot of things I should have blogged about and one such thing is the NativeLogsReader cn1lib which has been in the extension manager for a while now. The NativeLogsReader cn1lib was created by Francesco Galgani to include native logging into the Codename One log. A lot of times we get on device failures that are really hard to track. In those cases we ask users to connect cables and try to view the native logs to search for clues. With this library you can see native output even without physical access to the device! ...

Uber Clone Book
I’ve been working on a book form of the Uber Clone module in the course. I finished the principal writing quite a while back but unlike the course a book requires more back and forth. I’ve already gone through the first review cycle and it has made the book much better as a result. There is still a lot to do as I would like the result to be sublime. ...

Right SideMenu and Tab Order
As I mentioned the other day, we have a lot of new features and announcements. Today I’d like to discuss the upcoming right side menu bar and new tab order functionality. Right SideMenu The old SideMenuBar supported the placement of the menu anywhere we want. We could place it in the left/right/top or bottom. The problem was that this support was painfully unreliable and inconsistent. When we migrated to the Toolbar API we ignored that support and only included the left side menu support. For some of us this isn’t a big deal. Just a small limitation. However, if your app is localized to an RTL language this might be a problem. ...
Set Properties, Density PR and Short Material Icon Syntax
I have a lot to write about so today I’ll only focus on two of the several PR’s we handled over the last month. I’ll try to cover more over the rest of the week. Also as a friendly reminder we will migrate to API level 27 this Friday and the price of the online course including the Facebook/Uber clone apps will go up next week… If you didn’t sign up yet this is your chance. ...

Moving to API Level 27 and Facebook Clone is DONE!
This is important: We’ll update the build tools & build target to API level 27 with next weeks update (June 8th). We HIGHLY recommend you check your app before we flip the switch! I also just uploaded the final lesson in the Facebook Clone App which is now fully live in the online course. I’ve discussed the build target 27 migration before. We wanted to do it in May but the work on the Facebook clone pushed that back so it will have to wait. You can test this right now by setting the build hints: ...
Lightweight Picker, Device Detection and More
One of the worst components in Codename One is the picker component. It’s origin lies in the migration to iOS 7 where the native picker introduced a 3d effect that was hard to replicate with our old graphics layer. We had no choice. We used a native widget for that picker and regretted that decision ever since. It looks bad on the simulator, it misbehaves and with every update from Apple things break. This has again proven to us the importance of the lightweight architecture of Codename One! ...

Live CSS Update
Up until last Friday CSS support has been a second class citizen, with the release of Codename One 4.2 we’re making CSS a core feature. We also improved the builtin CSS support extensively! Changes you make to a CSS file will instantly reflect in the simulator. You don’t need to compile or do anything special. When you launch the simulator we open a CSS watcher thread that automatically recompiles & deploys the CSS whenever you save. ...

Spatial, Pluggable SQLite
One of our enterprise accounts is working on a complex GIS application that needs fine grained control over mapping. In this case features such as native maps aren’t useful. For some GIS applications the old MapComponent is more useful as it allows working with domain specific data. One of the features he needed was spatial support in the builtin SQL database. When we initially implemented sqlite support we just delegated all the SQL calls to the OS native equivalents and called it a day. This works well for 98% of the cases but there are two big use cases that are missing by default in Android & iOS: Spatial queries & Security. ...

Facebook Clone Slow Landing
I mentioned before that I’m really behind on the Facebook Clone module but at least I was able to release the first few lessons by today which makes it fit into an April deadline. I’ll try to release new lessons every day so we can do have the full module out before the end of May. At that point I’ll release two new modules during June. The new Facebook Clone is similar to the Uber clone in some regards and also very different: ...