Latest posts from Codename One.
Blog

Course Updates
I hoped to finish migrating all of the material from the original bootcamp to the new courses but got delayed due to external influences. There isn’t much left so I’m sure I’ll be done with the existing modules in early August and get started on the first of the new modules. If you haven’t kept up I added a lot of modules over the past few weeks covering a very wide set of subjects such as animations, tablet support, cloud server setup and much more. ...

Fractional Padding/Margin, Rounded Border, Ripple, Caps, Google Connect
We’ve been very busy the past few weeks despite the summer time but August is always problematic, I will personally take some time off from the blog next week and near the end of August. To allow that I want to clear my table from a lot of the features that went into Codename One over the past couple of weeks and didn’t get sufficient or any documentation… ...

Tutorial – Localization and Internationalization (i18n/l10n)
Localization and internationalization are probably some of the most important features for a modern app. Most frameworks tuck on localization as an afterthought as authors of such frameworks are often born in the states… Codename One integrates localization, deep into the framework. It becomes transparent and invisible… We plan to make a lot of enhancement to the localization process which is why I was hesitant on releasing this update. However, we don’t have an ETA for these updates and I don’t think that’s a valid reason to delay the release any further. One of the nice things with our new video system is that this would be relatively easy to edit with new information as it becomes available… ...
Pixel Perfect – Material Buttons part 2
Last week I wrote about the effort of revitalizing the native themes in Codename One and I’m not sure if I got the point across as I would have liked it. So this week before I go into the changes and work we’re doing I’d like to take a step back and explain how everything works and why we need a native theme… __ To implement the features this week we made some big changes check out the section titled changes for the gist of this… In order to adapt an application to OS conventions Codename One loads an internal theme that matches the given OS. This is a theme we developed for every OS we support. We then load your theme on top of that theme and you can override various default behaviors. ...

Tutorial: How to Add Support for other JVM Languages
As you may have already read, we have just added support for Kotlin in Codename One. In this post, I elaborate on some of the behind the scene work that was involved in bringing Kotlin to Codename One. What is a JVM Language? A JVM Language is any programming language that can be compiled to byte-codes that will run on the JVM (Java Virtual Machine). Java was the original JVM language, but many others have sprung up over the years. Kotlin, Scala, Groovy, and JRuby come to mind as well-established and mature languages, but there are many others. ...

TIP: Animate Line Under Button
I got a question the other day about a UI design for an upcoming Codename One app. In this UI the title floated on top of the content as the content scrolled past and tabs were a part of the title area in the style of material design. Our tabs component predated material design by many years and wasn’t designed for this sort of UI. When you scroll out of a tab it scrolls out. Using it for this sort of UI doesn’t make much sense. The solution was to use a custom title area with two toggle radio buttons representing each tab with a line below to indicate the selected button. ...

Tutorial – Native Interfaces
Our original How Do I video covering native interfaces was pretty old by now and needed a serious refresh. I created a new one that goes into a lot of the details although can’t go as deep as the subject matter is pretty huge to begin with. I see a lot of developers shy away from using native interfaces which is partially understandable. A big reason for picking Codename One is to avoid native. But this isn’t so bad or hard, if you get stuck implementing a native interface we are here to help you with that. Just ask us here, on stack overflow or in the discussion forum and we’ll help you with your issues. ...
Pixel Perfect – Material Buttons
I’ve mentioned before that our biggest priority in 3.8 is refining the UI design of Codename One applications. This is a difficult task as it is so vague. There are so many small things we can do, when they are viewed in unison they seem approachable but as we start going thru the tasks priorities muddle. That’s why we need feedback from you guys on what bothers you about the UI and its refinement. ...

Kotlin Support Public Beta
We were prepared for an uphill effort in terms of getting Kotlin up and running… Turns out that getting the basic support out of the door was much easier than expected with a few expected caveats that will hopefully be acceptable moving forward. Steve did pretty much all of the work on this, I asked him to write a post where he explains the challenges as this isn’t the first time he ported a JVM language to Codename One. ...

TIP: Edit the Docs for Fun and Profit
On occasion I answer a question on stackoverflow, the discussion forum or elsewhere and I get a response of the form of: “this wasn’t clear from the docs”. We improved the docs but befitting a huge project run by engineers without a technical writer in sight this is a bit of a problem… The thing is that this is a problem you can fix regardless of your level in engineering or in English. ...

Tutorial – Using Push Notification
Push gets a lot of support queries, it’s a hard subject to wrap your head around especially with all of the conflicting and shifting landscape around it. To make matters worse every OS conceptualizes it very differently. I go into some of the really advanced stuff such as fallback behavior in the advanced course but basic stuff is still a crucial first step. So I adapted some of the material from there and re-did the push How Do I? video to use the newer API’s and settings. Check out that page for the full transcript of the video. ...

Terse REST API
When discussing the features Chen slipped in just in the last minute of 3.7 I mentioned there were two such features but only discussed the desktop skin. The second one is a more terse/logical API for calling REST web services using the builder pattern. I actually discussed this briefly in the how do i video for networking & web services near the end. But that’s one of those details that might have easily been missed in that video… ...