Summer is finally over and the kids are going back to school/kindergarten so it's time to go back to our regularly scheduled posts. I won't be posting as often as before as I'll dedicate more time for support/development activities but still there's a lot to write about...Read More
You might have noticed we've been a bit slow with updates over the past couple of weeks as we're dealing with a bit of a backlog. With the kids on holiday from school it's harder to keep up not to mention our travel plans for the summer. As such we're officially in summer vacation until September.Read More
The native low level camera API on Android is a disaster. It's often cited as one of the worst API's on Android. To make matters worse there are two separate API's
Camera2 (yes really). You need to use
Camera2 where it's available but that means no support for older devices. To solve this we picked the Android Camera Kit library when we started building our low level camera support. This proved to be a mistake.
New JSON and XML declarative notations for building user interfacesRead More
We are thrilled to announce the release of Codename One 6.0 - Chat. Codename One is an open source "Write Once Run Anywhere" mobile platform for Java and Kotlin developers!
Codename One Build is one of the biggest overhauls to the Codename One workflow since its inception. We also refined and updated many underlying technologies e.g. the xcode 10.1 migration,
WKWebView support, push replies, badges on Android and much more.
We're entering code freeze later today which means no further commits will be made. After the code freeze only reviewed commits can be cherry picked. Only critical bugs will be fixed at that point.
We will push out a new plugin update and tools tomorrow morning. They will be labeled 6.0 and serve as release candidates. If there are issues we'll push out further updates during the week.
Codename One 6.0 AKA Chat will launch on February 27th. We're pushing this release a week back to finish the open issues. We will enter code freeze on the 20th exactly one week from today.Read More
Over the past month Apple started sending out warnings that they will no longer accept apps built with older SDK's starting this March. To preempt that we will update our servers to use xcode 10.1 over the next couple of weeks. This change should be seamless for the most part but some odd behaviors or bugs usually rise as a result of such migrations.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 are thrilled to announce the release of Codename One 5.0 - Social. Codename One is an open source "Write Once Run Anywhere" mobile platform for Java and Kotlin developers!
We postponed the release of this version since it's so packed with big changes. We made CSS a first class citizen in Codename One and made CSS updates live (no recompile necessary). We moved from screenshots in iOS launches to storyboards. Added support for newer JDK's. Migrated to Android API level 27. Moved our entire build server infrastructure. Redid push notification and so much more...
Codename One 5.0 AKA Social will launch on September 19th. We pushed this release back to include support for crucial features such as JDK 11/OpenJDK support. With these features in place and a slew of other features we are gearing towards 5.0 GA. Tomorrow (Friday) we will push out plugin version 4.5 for all IDE'. This new version is effectively release candidate 1 for the 5.0 version.Read More
A while back we introduced Codename One Settings which superceded the old approach built in the IDE itself. This allowed us to consolidate code and move faster. That's how we were able to implement more wizards for things like CSS support etc.Read More
In February I wrote about a new/improved way to build for iOS without the screenshot process. That was a bit ahead of its time as the xib build didn't disable the screenshot process yet. This is now fixed and it's turned on by default now. That means that if you send an iOS build it won't go through the screenshot generation process.Read More
I'm answering questions in the Code Ranch this week about Create an Uber Clone in 7 Days. So far I've had some pretty great ones, if you have a question join the conversation for a chance to win a free copy. To qualify just ask in the Android forum and make sure to qualify it with "Create an Uber Clone in 7 Days:" so I will notice the question.Read More
Starting this weekend builds sent using the old plugin or an old project will fail. You will need to update the plugin to 4.3 (or 4.0.3 in NetBeans) or newer. This is an important phase in removing App Engine from our build stack and moving to a new system.Read More
The most common question we get about Codename One is: "Is Codename One Free". The direct answer is "Yes" but we don't want to mislead. You can work with the open source code, which is just as free as any other project. But it's not for the faint of heart...
The build servers have quotas so we won't go out of business. This is perceived by developers as "not free" but since no one else offers build servers I have an issue with that perception. To battle that perception we're increasing the build quotas.
Over the weekend we migrated a huge amount of code to the new build servers. In this post I'll try to cover three separate things. I'll explain the architecture/history and process of the migration. What worked, what didn't work and lessons learned. And finally how this will impact Codename One users moving forward.Read More
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.
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).
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.
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.Read More
This weekend we pushed out an update that also included new versions of the GUI builder and the designer. We didn't update the plugins but we still think it warrants the 4.1 version moniker even though we don't support it in versioned builds. Due to one of the enhancements we added in this update we had a regression in command behavior that we fixed with an update within a few hours.Read More
When we introduced support for z-ordering of peer components in Codename One we listed two major targets. The first was already available: Map. The second was still pending: Camera.
Our current `Capture` API is very high level and removes a lot of the control from the developer. In order to give developers a high level of control we created Camera Kit.
A while back Google announced that starting in August 2018 they will no longer accept applications targeting API levels below 26. With that in mind we plan to migrate our builds to use API level 27 which brings with it a lot of great new features but will probably break some things as we go through the migration. Please read this post carefully, I'll try to cover everything.Read More
We are thrilled to announce the release of Codename One 4.0 - Taxi. Codename One is an open source "Write Once Run Anywhere" mobile solution for Java and Kotlin developers!
This new release overhauled the way Codename One is updated, added support for Progressive Web Apps (PWA's), overhauled device skins & updated the backend iOS build tools. A major focus of this release is better support for peer (native) components, stability, unit testing and continuous integration.
I already teased about the surprises I got from our annual survey results and there are still quite a few surprises but as more people filled out the survey some of the big surprises tamed and a lot of interesting results emerged. I also found the comments very interesting so I'll go over the numbers/comments and provide my thoughts. If you think I misinterpreted the results please let me know...Read More
A few weeks ago I announced the xcode 9.2 mode and was rather happy that we can take our time with the migration. Unfortunately, that wasn't meant to be. Apple will require all new submissions to use xcode 9 within the next few months so it makes no sense to keep 7.3 as the default. This weekend we will flip the switch and builds will default to 9.2.Read More
Every time we switch a version of xcode in the build servers things go haywire because of minor behavioral changes from Apple. Over the holidays we started a long and painful migration to xcode 9.2 which required an update to the Mac OS versions on our servers. Thankfully this wasn't as bad as the old xcode 5 to 7.3 migration where the old build code literally stopped working...Read More
PWAs (Progressive Web Apps) are an extremely hot topic right now, and Codename One apps are very well suited to being deployed this way. In case you haven't been following the PWA buzz, the idea is that it's a web app that behaves like a native app. When they are first loaded in a user's browser, they behave like a normal responsive web app, but users can install them to their home screen just like native apps. At which point, they can behave as "offline-first" apps. Parts of this have been available for quite some time, but the concept of PWA brings a lot of little things under a single umbrella.Read More
The other day I sent out an email alert mentioning the Uber clone release and price change for the course on the 30th. I also mentioned upcoming modules in February which caught some attention. I wanted to clarify some things and answer some of the repeat questions I've been getting. I also have a lot of updates to make so I'll include some of those below.Read More
I've been so busy I just don't have time to blog as much as I should. I do hope next month will be better in this regard (more on that below) but right now I have to make an important announcement. There are new chip vulnerabilities I'm sure you heard a lot about specifically Meltdown & Spectre. Thankfully we are at a layer that shouldn't be impacted by these issues but we need to update our servers and will be doing so over the course of the next few days (possibly more as patches get updated).Read More
I hope you all had a great time over the holidays, I was working a lot but was able to enjoy the relative quiet of the holiday period to get some stuff done. There are a lot of new features I'd like to update you about and I will over the next few weeks (albeit slower than usual). Despite my best efforts I still didn't finish the full Uber clone app course but I'm getting REALLY close. There isn't that much work left to do though and I'm starting to trickle out the module lessons.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. As I mentioned before we are still working but only partially due to the holidays. We still got a lot of things out and have a lot more coming up. I will blog more about it in January. In the meantime, I'll leave another teaser for my current project...Read More
I've been remarkably busy with the Uber clone application. Cloning Uber proved to be pretty easy but writing the material about it is much harder so I'm taking longer than I anticipated to finish everything. I'm already up to slide 200 and I've barely started... I think I might end up with more than 1,000 slides in this module!Read More
Before I go into the details a quick announcement, we need to update some of our push servers. We will have a short amount of downtime on Sunday December 3rd around 8AM GMT. This update should be very fast and barely noticeable but it might impact some push message deliverability for a short period.Read More
We are thrilled to announce the release of Codename One 3.8. Codename One is an open source "Write Once Run Anywhere" mobile solution for Java developers!
This new release significantly refines the native look and feel of Codename One, it brings the GUI builder to a new level with styling support. It finally adds Mac OS appstore distribution support which means all the major appstores are now supported targets for Codename One applications.
Codename One 3.8 should land one week from now and from later today we are effectively in code freeze. Please update to the release candidate of 3.8 tomorrow morning to help us track some last minute bugs and regressions. As is usually our process we will release updates as necessary with code reviews and next week we won't have the usual set of releases as we'll take some time off.Read More
We will enter code freeze for Codename One 3.8 next week and have a lot of things to clear off the table in order to get there!
The first order of business is that there will be no Codename One 3.9... Instead we will go right to 4.0 and switch to major version number update scheme only.
I did a lot of work on the developer guide PDF making it more suitable to print, as part of this work I submitted the guide to Amazons KDP which means you can now order a physical book of the developer guide. I reduced the page count significantly for lower cost and image size requirements. As a result the book is much smaller but contains the exact same information in a denser package.Read More
So you know how you write a blog post just before you go on vacation, press publish and never check that it actually got published... Funny thing, that's exactly what I did and the blog post mentioning that I was on "vacation" for a couple of weeks never got published. Anyway, other people have been busy while I was "away" but I got a couple of things done too including animated gif support.Read More
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.Read More
With version 3.7, we have revamped the GUI builder with a designer that allows you to position your elements precisely where you want them. The experience should be closer to what you find in graphical design applications like Photoshop rather than the more rigid "drop in the slot" approach in previous versions of the GUI builder. There are caveats to be aware of with this approach, but overall, it should empower you to build beautiful UIs with greater ease than before.Read More
Codename One 3.7, the "Write Once Run Anywhere" mobile solution for Java developers is now live!
This exciting new release brings with it a surprising new overhaul of the Codename One GUI builder which now includes support to "auto-layout" allowing developers to place components with the ease of Photoshop or Illustrator..
You know that feeling before going on stage to talk or perform. It's a knot in your stomach but also an exhilarating sense of excitement about what's to come... I've got that fidgety feeling of "can't wait to get it out" and yet I feel there is so much more to do.Read More
Thanks for all the great feedback on my last post, I got some wonderful app suggestions from some of you and some interesting questions. Overall, there were more than 100 comments and emails so I apologize if I took too long to answer some of you. I already mentioned the focus of these coming courses is to let you create apps in a more practical form: "cook book" style.
But while I talked a bit about the narrative and the course I didn't explain exactly how or why this will work effectively.
3.7 is almost here... Later today we will enter the week long code freeze where only critical issues are fixed. We'll publish the plugin release candidate for 3.7 soon and it will include some interesting new things that I haven't discussed at all!Read More
I talk to a lot of mobile developers or those who are starting out in the field and by far the number one problem is getting a refined sublime app. There are too many difficulties and pitfalls along the way and the end result is often "sub par" in terms of the UI you want to achieve.
We too bare responsibility for that. We focus too much on the technology and too little on making "gorgeous" easy. I want you to join me in changing that narrative...
In the bootcamp we didn't build just one big app, we built two... Or infinity... The first app was a restaurant ordering system that allows you to pick dishes from a menu and add them to a shopping cart. The second app was an "app builder" that allows you to customize the first app and then generate a native app based on that for your specific restaurant.Read More
We received some interest related to Kotlin over the past couple of years and this has risen noticeably in the past month or so. Up until now we tried to be very focused on Java which is why we didn't add support to other JVM languages even though this shouldn't be too hard. But Kotlins similarity to Java and its special relationship to Android make it an ideal second language for us.Read More
You might have noticed that I haven't been committing as much code recently. It's because I've been working on 3 new online Codename One courses. One of my main goals with the bootcamp was to improve my video skills and modernize course materials. I'm well on my way with both and created pretty exhaustive materials so far.Read More
We released an important fix for an issue with daylight saving in north America (DST), if you are experiencing weird issues only on iOS that could be attributed to time problems then please send a new build to see if the fix works correctly. Our iOS VM code made some assumptions about DST which were apparently false. We chose to release it outside of our regular update schedule due to the significance of this issue.Read More
I might have been unclear with about the bootcamp materials. It's possible I implied that the materials will be available later. They won't...
It would be unfair to our bootcamp participants if the thing they pay for is then made available for free. There will be some content that we will make available some content that will be available as paid material (a course) and some content that will be 100% exclusive.
I want the bootcamp to sell out fast. Since the number of spots is very limited this should be doable. To make this happen we are adding to the bootcamp...Read More
I'm going to build a new mobile startup within 2 weeks and teach some of you how that is done while doing that. Most people might assume I'm talking about one of those "MVP" cardboard startups... This isn't the case!
We'll build a real ground breaking app with a server component that handles storage, push and a few other things you wouldn't expect and I plan to fit the whole thing in a two week time frame.
Thanks for all the comments and interest on the previous post. In that post I discussed the importance of great app design and showed some of the cool newish demos I built to highlight the general direction. I also talked about the importance of personal mentorship especially with new/elaborate mobile technologies where everything is different.Read More
Thanks again to everyone who answered my questions. I got tons of valuable feedback on our work & what you would like to learn. It was super helpful and I'm grateful to all of you as you are literally shaping how this bootcamp (and the future of Codename One). I'm sorry if I was brief in some of the thank you emails, it took some time as I wrote them all personally and worked well into the night the other day.Read More
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