TLDR: ParparVM is now up to 2.8x faster, and produces binaries that are 15%-20% smaller than before.Read More
When building an iOS debug version of the app we only build a 32bit version to save build time. Otherwise the build will take almost twice as long as every file would be compiled twice. This worked well and was also fast enough. However, Apple started sending warnings to old 32bit apps and mistakes our apps as such.Read More
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".
Our eclipse IDE support has been around for quite a while now but has never stood up to the quality and update pace of NetBeans. Recently even our IntelliJ/IDEA support has surpassed the quality of our eclipse plugin and the blame should be on us.Read More
We will release Codename One 3.6 on the 16th of January, this means we will enter code freeze on the 9th during which only critical bugs will be fixed with peer review. Since Codename One is a SaaS product release cycles aren't as crucial for most of us but they provide a framework both for versioned builds and for us to focus on the more mundane aspects of product maintenence.Read More
Happy holidays, Merry Christmas, happy new year to all. All of us here at Codename One hope you have a lovely vacation if you are taking one. Since half of our readership is from countries that celebrate these holidays it seems like a good time to take a short blogging vacation as well.Read More
We usually just add a new feature and then tell you about it in these posts but properties is a special case and this post is intended not just as a tutorial but as a solicitation of feedback...
We committed properties as a deprecated API because we aren't sure yet. This could be a very important API moving forward and we want as much peer review as possible over this.
The next plugin update will add support for native interfaces in UWP. This opens the door for you to really dig into the native features of Windows if you wish to do so. Crucially, this will also allow us to push forward with windows support on some of the cn1libs that require native functionality.Read More
We are launching a partners page in the website that will refer to consultants that we recommend/approve. If you are a software development company that works with Codename One we'd like to feature you in our website and provide the following benefits...Read More
I've recently noticed that distribution build sizes were identical for appstore and debug builds which wasn't the case before the xcode 7.x migration we did a while back. This shouldn't be the case as it indicates that the standard debug builds include both the 64bit and 32bit code which is redundant during debugging.Read More
We've mentioned the progress we made with the Universal Windows Platform support in the past. This support is moving at a very fast pace...
By now we support
SQLite as well as
Capture and a slew of other features that weren't available for the initial beta. At this rate we think that 3.6 can actually include a production version of the UWP port!
As we discussed before October will be relatively slow, this means that our original plan of a December release for 3.6 will be challenging and produce a sub-par release. In the interest of making 3.6 a more significant release we decided to postpone it to January 16th 2017.Read More
Last week we merged the new Android peer code into the main branch. That means that we can no longer support the
android.newPeer flag as all non-versioned requests will use the new peers. This is a good thing as it will allow us to focus on one implementation moving forward.
If you relied on the
android.newPeer build hint it will no longer be available starting with this update. When you build for 3.5 you will still get the old behavior if you define that hint but otherwise it will be ignored. This is a precursor step to merging the newPeer branch into the main branch. It's an important step to help us move forward with one code base!
The UWP (Universal Windows Platform) port is finally stable enough to get an app into the Microsoft store. Steve published out Solitaire demo into the Microsoft appstore and it passed thru the whole process. You can download it, install it on your device and try it.Read More
One of the biggest changes we made in the past couple of years was the introduction of Java 8 language support features and making it the default target. We are now ready for the next step...Read More
We tried migrating to the new iOS build servers before and decided to revert the change due to xcode crashes. After a lot of work we think the new server code is ready for production. We will try to migrate to these new servers again on the 28th of August (Sunday) to minimize impact if something goes horribly wrong.Read More
We hoped to get the xcode 7 migration on the build servers out before version 3.5 but the change had problems and we chose to revert. We postponed the change so we can get 3.5 out of the door...
This Sunday we'll deploy a server update that should be the first step in the migration.
We are thrilled to announce the immediate availability of Codename One 3.5!
Version 3.5 is a huge release that includes the long awaited Windows Universal Platform (UWP) support and brings the new GUI builder out of beta.
It's tough to pick up a new toolchain like Codename One. There's so much to learn...
A lot of our developers come from the Android world and even though Codename One is much simpler than Android porting the first app to Codename One is still painful.
Today we are going into code freeze for Codename One 3.5 which is due one week from now, because of the fast release cycle we don't need more than a week of code freeze to stabilize our current release.
The code freeze applies to the Codename One libraries and ports as those are the parts that are inherent to the release.
We are preparing for the 3.5 code freeze which should go into effect on July 26th. We are still not sure about the full set of features that will make it into 3.5 as the release is pretty close by now. However, we already have some cool tentative plans for 3.6 and beyond that we are already sketching out.Read More
A couple of weeks ago we detailed a plan to migrate to the new xcode 7.x build servers. We tried this migration over the weekend and while for most developers this worked rather nicely for some there were issues that we can't explain so we decided to revert the change and regroup.Read More
Are you interested in selling your custom made themes, templates & libraries for Codename One?
Eric Dodji Gbofu founder of Codename One Fr and author of the French language Codename One book is launching a Codename One store.
After many months of work and effort put in by all of us but especially by Steve Hannah and Fabrício Carvalho Cabeça we are finally live with the Windows Universal Platform (AKA UWP) native build target!
As far as I know Codename One is the only native option for Java developers to build native Windows UWP apps.
We announced our plans to migrate to the newest version of xcode recently and so far these plans have gone rather well with most tests passing without a problem. We did decide to disable bitcode by default which means the new build hint `ios.bitcode` will now default to `false` to avoid issues with some libraries that are still not up to date.Read More
Managing your project dependencies and 3rd party extensions among the hard to navigate list of cn1libs has always been challenging. We are now tackling this problem in the new settings UI which is scheduled to launch for all IDE's this Friday.Read More
The corporate server offering has always been controversial and problematic both within Codename One & for the customers who bought that service. We struggled a lot with trying to get it just right but with every installation we ran into a painful reminder of exactly why we chose to use the cloud. After discussing this with our existing corporate customers we came to the conclusion that we need something better that would still address the requirement of offline building.Read More
While the Codename One skin file format is trivial it is a bit under documented, to partially alleviate this problem we created a simple tool: Skin Designer.
This tool allows us to create a device skin from two images (landscape & portrait). This skin file can then be used with the Codename One simulator & also contributed so other developers can enjoy it!
One of my pet peeves when we switched to github was that email notifications never worked for me. For most repositories I had to setup my own account just to get emails. I'm guessing that this is a common problem for those of us who are used to emails notifying us of changes.Read More
We were stuck on an "old" version of xcode in the build servers. This hasn't been a big deal for most features but in some cases we are running into issues e.g. in using the full capabilities of the new iPad or 3d touch. The reason for this is Apples backwards compatibility policy.Read More
With the 3.4 release we discussed the process of modernizing the demos and also mention that we would continue the trend of building Codename One on top of itself. We now have a rough outline of what we are going to do possibly starting with the next plugin update.Read More
Up until Marshmallow (version 6) Android used a rather obtuse permission system that very few end users understood. With API level 23 (Marshmallow) Android finally shifted to a structure that makes more sense similarly to iOS. Marshmallow asks a users permission the first time an API is used e.g. when accessing contacts the user will receive a prompt whether to allow contacts access.Read More
The NetBeans plugins.netbeans.org site has been down for another weekend and has been down again today. This isn't ideal as we like the convenience the official plugin center affords in our update process. However, this blocks installs and updates of our plugin most of which originate from NetBeans.Read More
For years we treated support with a "we'll meet our developers where they are" attitude which is problematic now that we have more than 6 free support channels!
Notice that we didn't include the email/phone support for pro/enterprise users in the list of 6 channels...
We are thrilled to announce the immediate availability of Codename One 3.4!
Version 3.4 brings with it refinement and stability as its core features, this is a trend that we are very pleased with and intend to carry it on to version 3.5.
Fabricio just submitted a pull request that Steve merged to provide support for Windows Phone 8.1 in our new UWP (Universal Windows Platform) port of Codename One.
This is huge news as it means we can fully migrate to the new port without leaving developers behind!
Today we are going into code freeze for Codename One 3.4 which is due one week from now, because of the fast release cycle we don't need more than a week of code freeze to stabilize our current release.
The code freeze applies only to the Codename One libraries and ports as those are the parts that will be inherent to the release.
We just published a new introduction to Codename One video, that we hope will set the bar for future videos from us (or at lease set the bar for the more important videos). This initial one is focused on NetBeans but we intend to publish similar videos for IntelliJ/Eclipse shortly. You can check out this video in the How Do I section right here.Read More
Our current IntelliJ/IDEA plugin is seriously behind the times. In our recent survey it was very easy to spot IDEA developers who were significantly less satisfied with Codename One than the rest of the developer community.The IDEA plugin doesn't include basic capabilities such as...Read More
Our existing Windows Phone port has already gone thru 3 rewrites and a community rewrite and we are hard at work on the 4th rewrite (or 5th counting the community port). However, we decided to take a radically different direction with the new port and with backwards compatibility to allow better scale.Read More
We just made our first weekly release today, in the coming weeks when you send a build or update the client libraries you should get a new version every Friday. We hope this will help us provide better consistency between the docs/device builds and the simulator.Read More
Starting with the next update of Codename One (later this week) we will switch
Toolbar on as the default for all newly created projects. This doesn't mean much for most of us as existing projects won't be affected, however if you are creating a new project this means you won't need to create a
Toolbar for every
Form and that we won't have to deal with as many issues related to the native Android title.
We are trying to improve the visibility of Codename One within search engines and as part of that we think we can also help you guys improve your visibility. When you submit your apps to the app gallery we provide dofollow links to your website/app store listings. We'd appreciate if you place dofollow links back to https://www.codenameone.com/ which you can place in a very hidden/unobtrusive way. This helps us increase our page rank and as a result will improve your page rank as we link back to you.Read More
I've been remarkably busy working on issues and documentation so I neglected an important announcement I had to make. Over the weekend we flipped the default build from gradle back to ant. So effectively if you don't set any build hint the behavior will be
android.gradle false which should work fine for most of you. This is temporary but we felt it was necessary as a stopgap measure.
We are thrilled to announce the immediate availability of Codename One 3.3!
With version 3.3 was tumultuous, we made a lot of earth shattering changes to performance, animations, fonts and many other things. As a result we have a ground-breaking release that requires a step back.
With 3.4 we want to tone down on the "big ticket changes" and work heavily on product refinement. We are already hard at work updating our docs and refining our general process..
We've been working feverishly to get Codename One 3.3 out of the door next week. Tomorrow morning we will finally have the codefreeze branch for 3.3 and we'll be able to focus on getting the docs/release in order.
The release should be on the 27th of the month and we should ideally get the plugins out of the door within the next couple of days.
JavaDoc source code embeds suck!
I love JavaDoc but it didn't age well. When you work with other tools (e.g. in the Microsoft world) suddenly the embedded samples look amazing and "search" functionality is just built in!
Why can't we have that?
JDK 9 is introducing new support for search but source embeds can be so much better and are a crucial learning tool...
We released a new version of the introducing Codename One video almost a month ago but we just neglected to highlight it in the blog. Our old videos are pretty dated by now and we use far better toolchains for video production today, so we are in the process of redoing all our old videos. This is a long and tedious process that we do while producing newer content, fixes and moving forward. So the timeline of such updates is quite volatile. Check out the new video below.Read More
We wrote quite a bit about the architecture of the new VM we built for iOS and why we built it. Up until recently we always viewed it as a Codename One specific tool. Something that would only be useful for us. We used open source because "that is our way" and didn't give it much thought after that.
It started to dawn on us recently that this tool could be useful for other developers that might take it in a different direction from our original intention. We also came to the conclusion that this might not be a bad idea altogether.
So we are are effectively launching the Codename One VM as ParparVM and it includes a lot of interesting benefits.
After a discussion with some members of the community we decided to shift the weight of our support efforts to StackOverflow from our existing google group discussion forum. Notice that we will still answer questions in the discussion forum but we strongly prefer using StackOverflow (don't forget to use the codenameone tag).
There are issues with StackOverflow which is why we are keeping the existing group and will still answer questions/issues there but the benefits far outweigh the issues:
Today we dealt with some push messages overloading our servers, some of the apps developed in Codename One are remarkably successful and as a result our push servers got bogged down.
To mitigate that and prevent service interruptions we moved all push activity to the new servers, this effectively means that a push operation on the old servers will map to the new servers seamlessly. This also means that we no longer support the null push target even for the old push servers. Its just too expensive to support on scale of 150M+ devices.
We just released the first version of the open source CN1Cordova project on github. This means you can take a common Cordova/PhoneGap app, import it into NetBeans and build a native app using our cloud build servers without any changes!
Before we delve into the exact process of converting an app lets start by reviewing the exact benefits PhoneGap/Cordova developers can gain from Codename One. You can also check out the video tutorial and slides below.
A common trick for animating Components in Codename One is to set their preferred size to 0 and then invoke
animateLayout() thus triggering an animation to hide said component. There are several issues with this trick but one of the biggest ones is the fact that
setPreferredSize has been deprecated for quite a while.
We are thrilled to announce the immediate availability of Codename One 3.2!
Version 3.2 sets the pace for many upcoming features & migration processes such as the new cloud infrastructure for push servers, modernized GUI builder etc. Codename One 3.3 is currently scheduled for January 27th and should continue the trend of iterative changes that form a larger platform evolution arch.
The new Codename One CSS library enables you to create entire themes using only CSS, but in this post, I’m going to focus on its ability to automatically generate image backgrounds and borders for your apps.Read More
This is the third and final instalment in a series on integrating 3rd party native SDKs in your Codename One application. If you missed the first two chapters, I recommend you begin with part one before reading this tutorial, as it provides much needed context for the procedures described here.Read More
Codename One 3.2 is scheduled for Tuesday the 27th of October. In keeping with our successful 3.1 release we'll use a very short one week code freeze on the 20th of October at which point we will only commit crucial fixes with code review. I hope we can land quite a few new features for the release, the GUI builder is getting very close although its still a very rough product and will only be featured as a "technology preview" showing the direction we are heading rather than a final product.Read More
This blog post is part two in a three-part series on integrating 3rd party native SDKs into Codename One application. I recommend you start with part one in this series as it will give you much-needed context to understand the procedures described in part two and three.Read More
We are happy to announce support for local notifications on iOS and Android. Local notifications are similar to push notifications, except that they are initiated locally by the app, rather than remotely. They are useful for communicating information to the user while the app is running in the background, since they manifest themselves as pop-up notifications on supported devices.Read More
This past Thursday, we held our fourth webinar, and the topic was how to incorporate 3rd party native libraries into a Codename One app. I used the recently released FreshDesk cn1lib as a case study for this webinar. As the topic is a little involved, I decided to break it up into two webinars. In part one, we focused on the public API and architecture involved in developing a wrapper for a native SDK, and walked through the native implementation for Android.Read More
Our GUI builder is the result of many twists and turns in our product line mostly due to corporate bureaucracy hacks and last minute deadlines from our days at Sun. Its also written using Swing which is pretty much a dead end API that isn't seeing any maintenence and since FX is even worse off there isn't much hope for the tools future.Read More
Codename One provides extensive support for designing beautiful user interfaces, but it isn't necessarily obvious to new developers how to achieve their desired results. A common workflow for app design includes a PSD file with mock-ups of the UI, created by a professional designer.Read More
A couple of weeks ago I created a simple social network app as part of the Codename One webinar. This app provided functionality similar to the Facebook app.Read More
We are starting the complete overhaul of our push implementation that will allow us to deliver improved push related fixes/features and provide more reliability to the push service. When we designed our push offering initially it was focused around the limitations of Google App Engine which we are finally phasing out. The new servers are no longer constrained by this can scale far more easily and efficiently for all requirements.Read More
On Thursday morning we rolled the cameras for chapter 2 of our exciting new webinar series. This time around there were far fewer (though not zero) technical issues, and we were able to share a productive hour of mobile app development in the company of our fellow coders.Read More
We decided to discontinue support for building without a certificate, this support was added initially because generating an iOS certificate was so difficult and we wanted developers to see that "it works" before committing to the expense. However, this process is wrought with bugs that are often hard to trace back and error prone. Added to that is the fact that we now have the new certificate wizard which makes the process simpler thus removing the final blocker (no need for a Mac).
We will block this functionality in the build servers by next week and thru the plugin after that.
When StartApp first launched a few years ago, they were a unique innovative new monetization channel to make money on Android.Read More
Tuesday morning I held a webinar on Java mobile development using Codename One. First of all, I'd like to thank all who signed up and attended. Unfortunately there were some technical difficulties with the Webinar software that caused some major glitches. Double thanks to those who endured and stayed to the end. We've learned from this experience and we will do better in future webinars.Read More
Codename One already has two separate socket APIs: a low-level API similar to java.net.Socket and a higher-level event-based approach. So why do we need WebSockets?Read More
We are thrilled to announce the immediate availability of Codename One 3.1!
Version 3.1 is the first release in our fast pace release cycle of 4 releases per year. It brings stability, bug fixes and great new features to the table. The biggest highlights of this release are support for Java 8 and simplified certificate generation for iOS. Check out the list below for more details.
We just entered code freeze preparing for the release of Codename One 3.1. This is a one week freeze that is scheduled to end on July 28th after the release of the new version. In the next week we will only be working on critical bugs for stability and won't add new features.
After the release of 3.1 we will start aiming for 3.2 currently scheduled for the end of October as part of our new 3 month release cycle.
Its been a busy month and getting busier by the moment, we are preparing for App Engines suspension of its blobstore service which will be coming around soon. This effectively means older crash report email functionality will be stopped for older apps (just rebuild the app for the emails to work again).
We are also getting ready for Codename One 3.1 which we have tentatively scheduled for July 27th. This release will include a weeks worth of code freeze and will be the first of our new policy for faster release schedules.
So you have finished your app and tested it on the simulator. Everything looks good. You're now ready to proceed with testing on your iPhone. You select the "Send iOS Debug Build" menu item and wait for the build server to work its magic, but then you're faced with a notice that iOS builds require a valid certificate and provisioning profile. What a hassle!Read More
When we introduced Codename One initially we limited the API to CLDC level which is roughly a subset of Java 1.3, we then added support for a subset of Java 5 and we are now adding Java 8 language features!
Thanks to some work from Steve and the great work done by the guys from the Retro Lambda project we were able to add compatibility to the major Java 8 features, most notably lambda expressions. This is highly experimental and some features might not work but so far it seems things are functioning rather smoothly.
Facebook & Google login have been a source of a bit of pain mostly because of the obtuse and confusing documentation from both companies. Chen spent some time writing up tutorials for both Facebook Login & Google Login that should help you get started with applications that use such login options.Read More
Eric Dodji Gbofu has been working on a Codename One book in French for the past year and it finally came out!
I'm still waiting on my copy mostly to show to French speakers we meet (I have a very hard time picking languages), I'm pretty sure its a cool book. Chen and I wrote the forward for the book, I trust Eric did a great job in it just like he has done with Codename One Fr.
You can order the book either directly thru the publishers site (which is apprently the preferred way) or thru Amazon.
We are in the process of migrating the storage implementation from App Engine to Amazons S3 storage as part of our bigger migration away from App Engine. If you experience issues related to build results please let us know so we can iron out potential regressions.
We are deploying this change in a way that makes it very easy to toggle this on/off and in case S3 builds prove to be an issue we will be able to revert them quickly.
Google has just announced that it is deprecating cloud storage and effectively a major part of App Engine that we are relying on. To make matters worse the window of time to its removal is quite short so we don't have enough time to rewrite and adapt all the various API's and tools that rely on this API.
We have already started the process of migrating off App Engine completely both due to rising costs and Googles horrible service/support. This will also allow us to finally support many long standing user requests such as more powerful push API's etc. since we will no longer be held back by App Engines limitations.
Our pricing has been inconsistent with the rest of the industry for quite some time specifically the price of the basic subscription which is a losing tier. Based on Industry norms the basic subscription should be far more expensive and doesn't come close to covering the costs of running Codename One's extensive cloud infrastructure. So on June 1st we will raise the price of the basic subscription to 19USD which is still very affordable. Notice that if you are a current subscriber or sign up before June 1st you can keep paying at the 9USD rate!
However, if you let your subscription lapse we will not be able to recover it and you would need to switch to the 19USD level...
We are thrilled to announce the immediate availability of Codename One 3.0!
You can check out the press release and full announcement here.
Devices have sensors such as accelerometer, GPS and up until now our support for them was relatively basic.
Chen recently introduced a cn1lib that includes support for various types of sensors on the device. Check it out if you need support for such API's.
When Codename One packages applications into native apps we hide a lot of details to make the process simpler. One of the things we had an issue with is
getResource/getResourceAsStream both of which are problematic since they support hierarchies and a concept of package relativity.
That's a concept that is problematic in iOS, generally everything about file access within the bundle in iOS is a bit problematic to accomplish in a cross platform way because Apple tries so hard to "simplify" and ends up creating fragmentation for us.
Its been a long weekend, but now that its finally over the long and tedious migration to github is almost completely behind us. Make sure to update your URLs to the new repository at https://github.com/codenameone/CodenameOne/. There are still some references to the old google code repository in the plugins etc. so you should update them when we release the next update. Furthermore, if you used our custom update centers make sure your update center doesn't reference a googlecode URL!Read More
As you may know Google is ending support for Google code effectively forcing us to migrate to github. While we like a lot of things about github their 1gb per workspace restriction makes the migration process rather difficult since we have to manually delete some histories for binary files we committed into SVN.
Making matters worse, Google's so called "automated tools" are ridiculously simplistic and don't support anything like this or migration of more than 1000 issues!
The new Codename One website is finally live now and you can check it out in all its glory at codenameone.com. There are several things you need to know in order to make the transition smooth...Read More
This website/blog has gotten really long in the tooth, we would have replaced it ages ago but since the build server is so tightly integrated in the code the effort to migrate was just too big. So recently we finally made the effort and migrated large blocks of code to be far more generic and we are now working hard on moving more than 3 years of content to the new website...Read More
We just released a new online course on Udemy called "Learn Mobile Programming By Example With Codename One". Before a single day went by we already have over 600 students enrolled which is pretty cool. This course is based on the videos we made for the Dr. Sbaitso demo and the PropertyCross demo with some additional videos thrown in to tie everything together and introduce Codename One.Read More