Post Image

Can Execute Hint

Display.canExecute(url) provides us with a generic tool to test the availability of a feature before executing a command. This is very useful for inter-app communications and allows us to achieve various things such as launching Google Map instead of Apple Maps on iOS.

Read More
Post Image

Jailbreak/Rooting Detection

iOS & Android are walled gardens which is both a blessing and a curse. Looking at the bright side the walled garden aspect of locked down devices means the devices are more secure by nature. E.g. on a PC that was compromised I can detect the banking details of a user logging into a bank. But on a phone it would be much harder due to the deep process isolation.

Read More
Post Image

TIP: Customize Tabs Behavior

The Tabs component isn't our first attempt at the the multi-tab UI and as such we made a lot of changes to the logic to facilitate a level of flexibility that can answer most use cases e.g. Tabs that can be closed with an X on the top right section or span multiple rows.

Read More
Post Image

Questions of the Week 39

We are ending the enterprise annual promotion today so if you didn't sign up for this special deal this is literally your last chance. This is important as the JavaScript build promotion will expire soon so I suggest taking advantage of this!
We had a lot of updates and new features this week but we decided in advance to skip the update right after the release and so we'll push them out only next week.

Read More
Post Image

HTML Maps, Z-Order Peer & Properties Update

One of the problems with native maps is that they work very differently between the device and the simulator. This is because we use MapComponent on the simulator and as a fallback on the devices where Google Maps isn't available. We just committed a new mode for maps that allows you to use the Google HTML maps as the fallback instead of the MapComponent.

Read More
Post Image

Automatic Build Hints Configuration

We try to make Codename One "seamless", this expresses itself in many small details such as the automatic detection of permissions on Android etc. The build servers go a long way in setting up the environment as intuitive. But it's not enough, build hints are often confusing and obscure. It's just hard to abstract the mess that is native mobile OS's and the odd policies from Apple/Google...

Read More
Post Image

Migrating from Parse to Back4app

A couple of years ago I wrote an app for my spouses yoga studio for managing her student list. I intended to open source it but the code is a bit messy and I can't seem to find the time/energy to clean it up. I used the excellent parse4cn1 library from Chidiebere Okwudire during the height of Parse.

Read More
Post Image

Codename One 3.6 Now Live & Special Sale

Codename One, the "industry defining" Write Once Run Anywhere native mobile app platform for Java developers has just published version 3.6.
We're thrilled with this release whose key features are offline build support and official support for UWP (Universal Windows Platform). Starting with this release we are changing the scope for Codename One: Instead of trying to be "as good as native" we'd like to aim to be "better than native".

Read More
Post Image

Questions of the Week 38

Codename One 3.6 is finally landing early next week, this means that today there is no Friday release and we might skip it next week too so we can rest from this long release process. Once that is out of the way we can finally set our sights on 3.7.
We already have a long wishlist for that release and I hope we'll be able to deliver on that.

Read More
Post Image

Migrating from Digital Ocean to Linode

We haven't talked as much in recent years about what it takes to run Codename One. Our infrastructure and backend are pretty complex with multiple pieces working in cohort to make everything feel like a single product. As part of that we work with 5-10 different backend SaaS providers that sell us various services, this might seem like an "odd" statement since the number should be fixed but it isn't...

Read More