In your onCreate() or onResume():
mJSCore.setCurrentScreen(this, "EPGScreen");
mJSCore.fireJSEvent("native2jsScreenProxy.onResume()");
In your shared JavaScript:
jsCore.js2nativeScreenProxy.showMoodSelectionScreen_(id);
In your Android Activity:
public void showMoodSelectionScreen_(int eventID) {
// your Android code here
}
Thanks Rudy. I’ve been thinking about the different ways we talk about web sites, and mobile apps. I’ve noticed something.\n\nWhen we talk about web sites, what words do we use? We talk about going to a site; navigating it; surfing it; browsing.\nThe metaphors we use are geographical, and imply that we think of the web as a place we visit.\nIf you think about commercial places you visit, you have expectations. Hotels have a front desk.\nRestaurants have tables with menus. Airports have check-in gates. They align on a basic set of expectations and differentiate\non other stuff.\n
How do we talk about mobile apps? We start them, we stop them, we use them, we download them.\nIn our language, apps are objects we collect, keep and employ for a purpose. Sometimes we become\nso familiar with them that we make them verbs. You hammer a nail, you text a friend or google a girl you’re stalking.\n\nWhat do we expect from tools? That they fulfil a single purpose very well. A hammer is the best thing\npossible for banging in a nail. \n\nI think these metaphors hold - we don’t talk about browsing an app, and it seems strange to discuss\nstarting or stopping a web site. We have distinct mental models for these things. This means something.\n\n
Hi, my name’s Tom Hume. I’m the Founder of Future Platforms. We’re an 11-year old software company\nbased in Brighton. We’ve spent more than a decade launching mobile apps. In the last year alone\nwe’ve worked for Nokia, Orange, the BBC, LastMinute, CNBC Europe, the AA, and a host of\nsmaller startups.\n\nAnd in the last year we’ve worked on iPhone, Android, Windows Phone 7, Nokia Qt,\nHP WebOS, J2ME, HTML5, Widget Runtime, WebSDK and probably a couple of others I’ve forgotten.\nWe’re unusual in that we go very broad; we have a team with a deep understanding of the principles\nof mobile app development, and a strong track record of applying this to new platforms.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
And wow, it hurts. You know what the problem is: it’s fragmentation. Right now there are a couple of\nreally popular target platforms, iOS and Android, and a couple of others that look credible (Nokia, WP7).\n\nWell, it’s not just Apple fanboys who want to use apps. It turns out that they have broad appeal, no\nmatter what phone you own.\n\nHandsets are converging around a couple of form factors; they’re differentiating in software.\n\nAnd it’s not getting better. Every year we think it might be, then someone else launches a new\nplatform (thanks, HP), or an old one seems to get a new lease of life, like Blackberry.\n\nWriting a single app for 8 platforms is hard, not to mention expensive.\n
But wait, there’s an answer; and it’s been staring us in the face all along. Every one of these\ndevices has a web browser; the web is a cross-platform means of consuming media. We\ncan write our apps for web browsers, and they’ll work across a range of operating systems\nand platforms - just like on the desktop.\n\nMartin Sorrell of WPP drew a nice distinction when he spoke at MWC this year; his view is that\nyou’ll have a fat head of apps for tasks people need to do repeatedly, fast or well; and a long\ntail of content best served through sites.\n\nThe web is great for delivering media across devices, including mobile devices.\nBut apps aren’t media. They’re not destinations, remember, they’re tools. And what do you want from tools?\n\n
You want efficiency.\nWhen it comes to mobile, you want the best possible use of your limited battery.\nYou want to be minimising your use of the network, allowing for its cost, patchy coverage,\nand physical limitations.\nAnd you don’t want to be stopped from using your tool if there’s no network at all.\nYou have to cope with the offline use case.\n\nAnd there’s another thing. You want consistency with the rest of your device. You want your\napp to look, feel and behave like the rest of your phone, because that’s where your expectations\nof behaviour and performance are set.\n\nAs providers of content, we tend to take a worldview with ourselves at the centre: we think\nour content should present consistently across platforms. If you do this at the expense of the\nexperience for individual users, you’re failing them.\n\n
You want efficiency.\nWhen it comes to mobile, you want the best possible use of your limited battery.\nYou want to be minimising your use of the network, allowing for its cost, patchy coverage,\nand physical limitations.\nAnd you don’t want to be stopped from using your tool if there’s no network at all.\nYou have to cope with the offline use case.\n\nAnd there’s another thing. You want consistency with the rest of your device. You want your\napp to look, feel and behave like the rest of your phone, because that’s where your expectations\nof behaviour and performance are set.\n\nAs providers of content, we tend to take a worldview with ourselves at the centre: we think\nour content should present consistently across platforms. If you do this at the expense of the\nexperience for individual users, you’re failing them.\n\n
You want efficiency.\nWhen it comes to mobile, you want the best possible use of your limited battery.\nYou want to be minimising your use of the network, allowing for its cost, patchy coverage,\nand physical limitations.\nAnd you don’t want to be stopped from using your tool if there’s no network at all.\nYou have to cope with the offline use case.\n\nAnd there’s another thing. You want consistency with the rest of your device. You want your\napp to look, feel and behave like the rest of your phone, because that’s where your expectations\nof behaviour and performance are set.\n\nAs providers of content, we tend to take a worldview with ourselves at the centre: we think\nour content should present consistently across platforms. If you do this at the expense of the\nexperience for individual users, you’re failing them.\n\n
You want efficiency.\nWhen it comes to mobile, you want the best possible use of your limited battery.\nYou want to be minimising your use of the network, allowing for its cost, patchy coverage,\nand physical limitations.\nAnd you don’t want to be stopped from using your tool if there’s no network at all.\nYou have to cope with the offline use case.\n\nAnd there’s another thing. You want consistency with the rest of your device. You want your\napp to look, feel and behave like the rest of your phone, because that’s where your expectations\nof behaviour and performance are set.\n\nAs providers of content, we tend to take a worldview with ourselves at the centre: we think\nour content should present consistently across platforms. If you do this at the expense of the\nexperience for individual users, you’re failing them.\n\n
You want efficiency.\nWhen it comes to mobile, you want the best possible use of your limited battery.\nYou want to be minimising your use of the network, allowing for its cost, patchy coverage,\nand physical limitations.\nAnd you don’t want to be stopped from using your tool if there’s no network at all.\nYou have to cope with the offline use case.\n\nAnd there’s another thing. You want consistency with the rest of your device. You want your\napp to look, feel and behave like the rest of your phone, because that’s where your expectations\nof behaviour and performance are set.\n\nAs providers of content, we tend to take a worldview with ourselves at the centre: we think\nour content should present consistently across platforms. If you do this at the expense of the\nexperience for individual users, you’re failing them.\n\n
You want efficiency.\nWhen it comes to mobile, you want the best possible use of your limited battery.\nYou want to be minimising your use of the network, allowing for its cost, patchy coverage,\nand physical limitations.\nAnd you don’t want to be stopped from using your tool if there’s no network at all.\nYou have to cope with the offline use case.\n\nAnd there’s another thing. You want consistency with the rest of your device. You want your\napp to look, feel and behave like the rest of your phone, because that’s where your expectations\nof behaviour and performance are set.\n\nAs providers of content, we tend to take a worldview with ourselves at the centre: we think\nour content should present consistently across platforms. If you do this at the expense of the\nexperience for individual users, you’re failing them.\n\n
You want efficiency.\nWhen it comes to mobile, you want the best possible use of your limited battery.\nYou want to be minimising your use of the network, allowing for its cost, patchy coverage,\nand physical limitations.\nAnd you don’t want to be stopped from using your tool if there’s no network at all.\nYou have to cope with the offline use case.\n\nAnd there’s another thing. You want consistency with the rest of your device. You want your\napp to look, feel and behave like the rest of your phone, because that’s where your expectations\nof behaviour and performance are set.\n\nAs providers of content, we tend to take a worldview with ourselves at the centre: we think\nour content should present consistently across platforms. If you do this at the expense of the\nexperience for individual users, you’re failing them.\n\n
You want efficiency.\nWhen it comes to mobile, you want the best possible use of your limited battery.\nYou want to be minimising your use of the network, allowing for its cost, patchy coverage,\nand physical limitations.\nAnd you don’t want to be stopped from using your tool if there’s no network at all.\nYou have to cope with the offline use case.\n\nAnd there’s another thing. You want consistency with the rest of your device. You want your\napp to look, feel and behave like the rest of your phone, because that’s where your expectations\nof behaviour and performance are set.\n\nAs providers of content, we tend to take a worldview with ourselves at the centre: we think\nour content should present consistently across platforms. If you do this at the expense of the\nexperience for individual users, you’re failing them.\n\n
And if you’re building your app using web technologies - that is, if you’re using the web\nto produce something which mimics a native app or tries to fool the user into thinking\nit is one, here’s what you’re doing:\n\nYou’re taking the operating system. And you’re running a browser on top, probably\ninside an application framework like the excellent PhoneGap. And then you’re probably\nusing a third party JavaScript library like JQuery on top of that. And then you’re writing\nyour app.\n\nAll these layers, to create something that looks like the thing at the bottom of the stack.\n\nThis doesn’t work - it doesn’t perform or feel like a native app. And it’s wasteful and\ninefficient. If you don’t believe me, go and download the demonstration apps from \nsome of the vendors of these toolkits, and run them on the best hardware you can find.\nSee how they’re a bit sluggish; a bit slow. Realise that these are apps written by the folks\nwho wrote the platform - they’re probably at peak efficiency. Consider that these apps\naren’t doing anything other than user-interface work that might slow them down (yours will).\n\nWe went through all this last year. Like everyone, we were suffering from platform fatigue.\nWe wanted an answer; it’d be good for our staff, good for our margins, and good for our\ncustomers if this worked. We’ve launched a few web apps for mobile; we’ve tried this approach,\nand we found that if you weren’t ambitious with your user interface, and weren’t trying to\nmake something look like a native app, then it was OK. But we wanted better than that, so\nwe had a think about it.\n\nAnd we came up with something counterintuitive. We want to keep the effort involved in \nworking across platforms down; that means sharing some code. We need a consistent\nenvironment in which to execute that code, whether native apps are written in Java, Objective-C\nor C#. And the web browser is there, on every platform.\n\nBut we strongly believe that UI needs to be native. So we thought you could turn everything on its head.\n
And if you’re building your app using web technologies - that is, if you’re using the web\nto produce something which mimics a native app or tries to fool the user into thinking\nit is one, here’s what you’re doing:\n\nYou’re taking the operating system. And you’re running a browser on top, probably\ninside an application framework like the excellent PhoneGap. And then you’re probably\nusing a third party JavaScript library like JQuery on top of that. And then you’re writing\nyour app.\n\nAll these layers, to create something that looks like the thing at the bottom of the stack.\n\nThis doesn’t work - it doesn’t perform or feel like a native app. And it’s wasteful and\ninefficient. If you don’t believe me, go and download the demonstration apps from \nsome of the vendors of these toolkits, and run them on the best hardware you can find.\nSee how they’re a bit sluggish; a bit slow. Realise that these are apps written by the folks\nwho wrote the platform - they’re probably at peak efficiency. Consider that these apps\naren’t doing anything other than user-interface work that might slow them down (yours will).\n\nWe went through all this last year. Like everyone, we were suffering from platform fatigue.\nWe wanted an answer; it’d be good for our staff, good for our margins, and good for our\ncustomers if this worked. We’ve launched a few web apps for mobile; we’ve tried this approach,\nand we found that if you weren’t ambitious with your user interface, and weren’t trying to\nmake something look like a native app, then it was OK. But we wanted better than that, so\nwe had a think about it.\n\nAnd we came up with something counterintuitive. We want to keep the effort involved in \nworking across platforms down; that means sharing some code. We need a consistent\nenvironment in which to execute that code, whether native apps are written in Java, Objective-C\nor C#. And the web browser is there, on every platform.\n\nBut we strongly believe that UI needs to be native. So we thought you could turn everything on its head.\n
And if you’re building your app using web technologies - that is, if you’re using the web\nto produce something which mimics a native app or tries to fool the user into thinking\nit is one, here’s what you’re doing:\n\nYou’re taking the operating system. And you’re running a browser on top, probably\ninside an application framework like the excellent PhoneGap. And then you’re probably\nusing a third party JavaScript library like JQuery on top of that. And then you’re writing\nyour app.\n\nAll these layers, to create something that looks like the thing at the bottom of the stack.\n\nThis doesn’t work - it doesn’t perform or feel like a native app. And it’s wasteful and\ninefficient. If you don’t believe me, go and download the demonstration apps from \nsome of the vendors of these toolkits, and run them on the best hardware you can find.\nSee how they’re a bit sluggish; a bit slow. Realise that these are apps written by the folks\nwho wrote the platform - they’re probably at peak efficiency. Consider that these apps\naren’t doing anything other than user-interface work that might slow them down (yours will).\n\nWe went through all this last year. Like everyone, we were suffering from platform fatigue.\nWe wanted an answer; it’d be good for our staff, good for our margins, and good for our\ncustomers if this worked. We’ve launched a few web apps for mobile; we’ve tried this approach,\nand we found that if you weren’t ambitious with your user interface, and weren’t trying to\nmake something look like a native app, then it was OK. But we wanted better than that, so\nwe had a think about it.\n\nAnd we came up with something counterintuitive. We want to keep the effort involved in \nworking across platforms down; that means sharing some code. We need a consistent\nenvironment in which to execute that code, whether native apps are written in Java, Objective-C\nor C#. And the web browser is there, on every platform.\n\nBut we strongly believe that UI needs to be native. So we thought you could turn everything on its head.\n
And if you’re building your app using web technologies - that is, if you’re using the web\nto produce something which mimics a native app or tries to fool the user into thinking\nit is one, here’s what you’re doing:\n\nYou’re taking the operating system. And you’re running a browser on top, probably\ninside an application framework like the excellent PhoneGap. And then you’re probably\nusing a third party JavaScript library like JQuery on top of that. And then you’re writing\nyour app.\n\nAll these layers, to create something that looks like the thing at the bottom of the stack.\n\nThis doesn’t work - it doesn’t perform or feel like a native app. And it’s wasteful and\ninefficient. If you don’t believe me, go and download the demonstration apps from \nsome of the vendors of these toolkits, and run them on the best hardware you can find.\nSee how they’re a bit sluggish; a bit slow. Realise that these are apps written by the folks\nwho wrote the platform - they’re probably at peak efficiency. Consider that these apps\naren’t doing anything other than user-interface work that might slow them down (yours will).\n\nWe went through all this last year. Like everyone, we were suffering from platform fatigue.\nWe wanted an answer; it’d be good for our staff, good for our margins, and good for our\ncustomers if this worked. We’ve launched a few web apps for mobile; we’ve tried this approach,\nand we found that if you weren’t ambitious with your user interface, and weren’t trying to\nmake something look like a native app, then it was OK. But we wanted better than that, so\nwe had a think about it.\n\nAnd we came up with something counterintuitive. We want to keep the effort involved in \nworking across platforms down; that means sharing some code. We need a consistent\nenvironment in which to execute that code, whether native apps are written in Java, Objective-C\nor C#. And the web browser is there, on every platform.\n\nBut we strongly believe that UI needs to be native. So we thought you could turn everything on its head.\n
Here’s what we’ve done. We’ve created a bridge for each platform, to allow native code\nto talk to a JavaScript interpreter. Every platform has a web browser; they all let you run\nJavaScript. We then write our application logic in JavaScript, and have a consistent set\nof libraries to handle basic functionality - location lookups, database use, networking.\nAll the stuff that should be the same in web browsers, but isn’t quite.\n\nAnd then we write the user interface, as native. So it’s fast; efficient; and we can do\nevery trick in the book, every new piece of sparkle that Apple or Google roll out to their\noperating systems once or twice a year - it’s all there for us.\n\n\n
I’m not going to dwell on this, but here’s how simple the code is. \nA couple of lines of boilerplate code, then a single line of JavaScript can call into your Android UI.\nAnd you shift as much code as possible into JavaScript\n
And this isn’t theoretical; it’s not something we’ve trialled; our largest app launch of the year,\nthe official app for Glastonbury Festival, uses it.\n\nThis is a complex app, with a very snappy user interface for scrolling through an EPG of \nbands playing over 3 days. 1500 different acts, lots of data. It’s also designed to be offline;\nthe app syncs data down and stores it locally, so you can turn off your networking or\nbe comfortable in the festival site, which has poor coverage\n\nWe share all the application logic, all the syncing code, between the Android and Qt versions.\nYou can’t tell; they’re native apps.\n\nAnd our pessimistic early modelling showed us that we could save 30% effort when working\nacross 3 platforms with this approach; we think that with practice, and having done this\non one large app, we can increase that significantly.\n
And this isn’t theoretical; it’s not something we’ve trialled; our largest app launch of the year,\nthe official app for Glastonbury Festival, uses it.\n\nThis is a complex app, with a very snappy user interface for scrolling through an EPG of \nbands playing over 3 days. 1500 different acts, lots of data. It’s also designed to be offline;\nthe app syncs data down and stores it locally, so you can turn off your networking or\nbe comfortable in the festival site, which has poor coverage\n\nWe share all the application logic, all the syncing code, between the Android and Qt versions.\nYou can’t tell; they’re native apps.\n\nAnd our pessimistic early modelling showed us that we could save 30% effort when working\nacross 3 platforms with this approach; we think that with practice, and having done this\non one large app, we can increase that significantly.\n
And this isn’t theoretical; it’s not something we’ve trialled; our largest app launch of the year,\nthe official app for Glastonbury Festival, uses it.\n\nThis is a complex app, with a very snappy user interface for scrolling through an EPG of \nbands playing over 3 days. 1500 different acts, lots of data. It’s also designed to be offline;\nthe app syncs data down and stores it locally, so you can turn off your networking or\nbe comfortable in the festival site, which has poor coverage\n\nWe share all the application logic, all the syncing code, between the Android and Qt versions.\nYou can’t tell; they’re native apps.\n\nAnd our pessimistic early modelling showed us that we could save 30% effort when working\nacross 3 platforms with this approach; we think that with practice, and having done this\non one large app, we can increase that significantly.\n
What did we notice doing this?\n\nThe Android port happened last; and it was the fastest (took half the time of Qt or iOS)\nWe got to fix back-end bugs once, in the JavaScript; fixes worked everywhere.\nOur testing effort on the back-end was effectively doubled-up. When our testers looked at Android, \nthey were implicitly testing the Qt back-end and vice versa.\n\nAnd our developers could focus their effort on the user interface, where it’s needed most.\n\n\n\n\n\n- obfuscation was tricky\n- probably not appropriate for single-platform apps\n- tooling\n\n
What did we notice doing this?\n\nThe Android port happened last; and it was the fastest (took half the time of Qt or iOS)\nWe got to fix back-end bugs once, in the JavaScript; fixes worked everywhere.\nOur testing effort on the back-end was effectively doubled-up. When our testers looked at Android, \nthey were implicitly testing the Qt back-end and vice versa.\n\nAnd our developers could focus their effort on the user interface, where it’s needed most.\n\n\n\n\n\n- obfuscation was tricky\n- probably not appropriate for single-platform apps\n- tooling\n\n
What did we notice doing this?\n\nThe Android port happened last; and it was the fastest (took half the time of Qt or iOS)\nWe got to fix back-end bugs once, in the JavaScript; fixes worked everywhere.\nOur testing effort on the back-end was effectively doubled-up. When our testers looked at Android, \nthey were implicitly testing the Qt back-end and vice versa.\n\nAnd our developers could focus their effort on the user interface, where it’s needed most.\n\n\n\n\n\n- obfuscation was tricky\n- probably not appropriate for single-platform apps\n- tooling\n\n
What did we notice doing this?\n\nThe Android port happened last; and it was the fastest (took half the time of Qt or iOS)\nWe got to fix back-end bugs once, in the JavaScript; fixes worked everywhere.\nOur testing effort on the back-end was effectively doubled-up. When our testers looked at Android, \nthey were implicitly testing the Qt back-end and vice versa.\n\nAnd our developers could focus their effort on the user interface, where it’s needed most.\n\n\n\n\n\n- obfuscation was tricky\n- probably not appropriate for single-platform apps\n- tooling\n\n
So why am I telling you this? Let me be honest - we’re a software business, and I talk at events\nlike these because it’s the best way for me to reach an audience of potential customers and\nshow off about how great we are. And I hope that someone out there will come and have a\nchat afterwards, and we can work on something.\n\nBut what I’ve shown you today isn’t for sale. It’s not proprietary; it isn’t patented. You could take this\napproach and use it yourself, and that would be fine - we’ve road-tested it for you and checked\nthat it works. You can download the apps which use it and look at them yourself.\n\nNext time you hear the issue of web vs native apps being debated, I’d like you to consider\nthat it isn’t that simple; that there a difference between how we use web sites and how we use\napps that is both psychological and technical. And I’d like you to be aware that there’s lots\nof ways to deliver a great user experience, and lots of ways to do so cost-effectively.\n\nThanks\n