Slashdot Mirror


Native Apps Are Dead, Long Live Native Apps

cardoni writes "Dan Yoder, CTO at Border Stylo, offers insights on the current state of simultaneous iPhone / Android development using PhoneGap and his thoughts on the debate over native apps versus Web apps. Quoting: 'One problem with the debate is that it’s a false dichotomy, since you can embed a Web browser within a native application. And, conversely, you can extend an embedded Web browser to provide access to native APIs. The two alternatives have not been mutually exclusive for years now. And, focusing on the strengths of native applications ignores the benefits of Web applications. For example, there’s the appeal of writing code that will run on a variety of different devices, ranging from mobile phones, to tablets, to laptops, even to gaming consoles. Virtually every major device platform now sports a Web browser, and it can often be discreetly embedded within a native application. To boot, much of this code can be tested using a Web browser, which enables more easily automated testing. It’s also easier to find Web developers than it is to find native developers.'"

20 of 168 comments (clear)

  1. When all you have is a hammer... by flyingsled · · Score: 5, Insightful

    Everything looks like a nail. Web apps are nice and play in a certain application space. Same with Native apps. Saying that one is "better" than another isn't fair since the apps themselves are different, with different constraints (how do I access a file on the users local filesystem seamlessly from a web app?). If I was going for "I'm going to write an application to conquer the world" approach, I would probably want it to run on iPhone and Android, so a web app is probably a good option. However, if I know my application is fixed to one piece of hardware (the newest iPhone for example) a native app is better since I can access more of the hardware with a native application.

    1. Re:When all you have is a hammer... by pushing-robot · · Score: 3, Insightful

      Exactly. If your app uses basic business logic and you want to maximize your audience, write a web app. If you need the best possible performance, write a native app.

      Next thread: The debate over stacks versus queues continues. Which will win?

      --
      How can I believe you when you tell me what I don't want to hear?
    2. Re:When all you have is a hammer... by jd2112 · · Score: 2

      Next thread: The debate over stacks versus queues continues. Which will win?

      I'm working on a 'First In-Random Out' queuestack. That should settle that argument...

      --
      Any insufficiently advanced magic is indistinguishable from technology.
    3. Re:When all you have is a hammer... by Dr.+Eggman · · Score: 2

      I came off a project not long ago which involved a web app-running browser embedded in a native app. There was even a decent reason why: Users could pre-enroll online or walk-in at a dedicated station. Either way, the same steps had to be preformed at least once, before the rest of the application (which was native because it involved special hardware) did the rest.

      All I can say was, it was...er, an experience.

      To begin, the Web application was powered by Java while the Native application was run by C#/.Net. Don't let anyone tell you these two play nice, because they certainly don't; there were bizarre display issues present in the Native app that didn't happen in any other browser we were testing on (including IE.) Nevermind the challenges presented by getting the two applications to communicate and coordinate in order to provide a seamless integrated interface; we really should have relied more on Web Services than we did (but the reasons behind that are a whole other story.) Most importantly, in order to integrate the two well, you need a developer or developers who understand how to write good web apps as well as good native apps (also, in this case a developer who knows C# and Java, which I eventually came to.) I think you hit the nail on the head with your post; these are two very different things with their own strength domains. I'll just add that mixing them is questionable for most solutions, difficult for all of them (Fun, though!)

      --
      Demented But Determined.
  2. Web Or Native it doesn't matter by zbobet2012 · · Score: 3, Interesting

    "It’s also easier to find Web developers than it is to find native developers." A good programmer shouldn't really care what level he is working in, best practices etc. are fundamentally the same. Every decent programmer I know has dabbled in everything from assembler to javascript, at the very least. The good ones have written large applications in both or more. Making this a useless dichotomy, because whatever the application a poor programmer can drag an entire team or application down on his own.

    1. Re:Web Or Native it doesn't matter by Dahamma · · Score: 4, Interesting

      "It’s also easier to find Web developers than it is to find native developers." A good programmer shouldn't really care what level he is working in, best practices etc. are fundamentally the same. Every decent programmer I know has dabbled in everything from assembler to javascript, at the very least.

      Let's face it - it's easier to find a web developer because web development is easier. I'm sure a lot more primarily C++ programmers have used Javascript than vice-versa. A significant number of "web developers" come from an artistic/graphic design background and have probably never even used a compiler. And that's not a knock on web developers any more than you'd knock a pediatrician for not being a pediatric surgeon...

    2. Re:Web Or Native it doesn't matter by Ruke · · Score: 3, Interesting

      While that's fine in theory, there's still the matter of experience on a platform to take into account. While a good programmer will be able to implement HeapSort in both Javascript and C, there's still the matter of whether he's familiar with Interface Builder's delegation system, or if he's got the DOM box model down pat. A good programmer should be able to pick up these skills in (relatively) short order, but some times you just want someone who's already an expert.

  3. lowest common denominator by Bram+Stolk · · Score: 4, Insightful

    Well... running on many platforms sounds nicer than it actually is.
    You tend to end up with an app that is tailored to the lowest common denominator of the platforms.
    If you want to shine, you will want to go native.

    --
    Bram Stolk http://stolk.org/tlctc/
    1. Re:lowest common denominator by whiteboy86 · · Score: 2

      Those exec fools at RIM (BlackBerry) and Windows (WP7) think that if they gave us some crazy "modern" non-native development environment then somehow developers will cheer.

      They should gave us straight C to low latency audio, straight C to OpenGL and straight C to input, that is it. With all this we can optionally compile JavaScript, Python, browser you name it... but without native access no serious dev. will even try to download their "innovative" SDK.

      And please stop selling us Java, we know enough already. iOS is such a success due to slick apps that are native, can't you see the difference between non-native vs. native example Android vs. iOS ?

  4. Different UI conventions by pjlehtim · · Score: 3, Informative

    Android and iOS have very different UI conventions. TFA mentions the problem but then ignores it. By using PhoneGap (or any of the other similar products) you still need to build two different apps if you want to get good results. Just look at PhoneGap's featured apps examples. Almost every single one of them is written for iOS. If you bring them to Android users wont accept them as native. They will feel wrong. I wrote a post about this very problem into my blog few weeks back: http://www.androiduipatterns.com/2011/06/differences-between-android-and-ios-ui.html Benefit of PhoneGap etc. is that you can use web technologies to write the apps. It is a false hope, though, if you expect to "write once, run everywhere". Juhani

    1. Re:Different UI conventions by PCM2 · · Score: 2

      Just look at PhoneGap's featured apps examples. Almost every single one of them is written for iOS. If you bring them to Android users wont accept them as native.

      And then, don't most Android handsets have custom vendor skins? Web apps won't ever blend seamlessly with every Android UI. And the user experience on Android 3.x is fairly distinct from Android 2.x, too. Any development tool that really aims to help your apps be more "cross-platform" will let you target different platforms, not shoehorn the same UI into all of them.

      --
      Breakfast served all day!
  5. Better to be redundant than totally miserable. by Anonymous Coward · · Score: 4, Interesting

    If you're a native application developer, I suspect that you'd be absolutely miserable if you ever had to work on web apps full-time.

    Web app development is challenging for all of the wrong reasons. Whether it's having to use horrid languages like JavaScript or PHP, or dealing with broken browsers like IE6, or dealing with shitty MySQL databases "designed" by people who didn't understand even basic relational theory, you won't find much enjoyable about it.

    At least native applications are often built using real programming languages like C and C++. Even semi-native languages like Java, C# and, dare I say it, VB.NET, are much, much, much more enjoyable to use than JavaScript or PHP, or dealing with broken HTML, or fighting with stylesheets.

    I'm glad I was able to retire without having to do too much web development. Everything about it was decades behind where native applications were at the time, and things still haven't changed.

  6. Also with web apps by Sycraft-fu · · Score: 4, Insightful

    It really does become the "Write once, debug everywhere," thing. Unless you are using very simple HTML and pretty much no interactivity, at which point you are a web site not a web app, you are going to have to have a shitload of "gotchas" and different cases. Not just for major different platforms like Android, Windows, etc but for different browsers.

    Now if you want to do all that, well and good, but be serious about the amount of effort it takes and the amount of time savings, if any, over doing things native.

    For complex applications, there isn't a "Just write it once," way of doing things.

  7. The Native App Will Never Die... by FlyingGuy · · Score: 4, Interesting

    and the reason is that with all the utility of HTML / CSS / JavaScript it is still brittle

    DOM is getting even more bloated, inefficient and slow. CSS is out of control and when put to the extreme it is like reading RegEx that you didn't write that has 400 expressions in one string. That coupled with differences in even handling the box model between IE and everyone else is enough to drive a sane person over the edge, especialy with the kludges in CSS that were glued on to handle those problems.

    JavaScript is supposed to be the language used to manipulate the Document Object but it was so poorly implemented that jQuery was required to make it reasonably useful.

    For those reasons people keep writing native apps that work correctly the first time out of the gate.

    --
    Hey KID! Yeah you, get the fuck off my lawn!
  8. Re:Way I see it... by PopeRatzo · · Score: 2

    The way I see it, a web app is a new kind of application.

    Unfortunately, the more the big companies try to push everything into a web app, the worse it's going to be for those of us that want apps to make stuff instead of apps to consume stuff.

    Web apps are to native apps what 1970s TV was to 1970s cinema.

    And this comment is one that only a handful of people will understand because I haven't worked hard enough to make my point clear.

    I don't mind the growth of web apps, but I've noticed a certain stagnation to native apps lately that I suspect is because of it. I hope it's just temporary.

    --
    You are welcome on my lawn.
  9. Battery life by firewood · · Score: 2

    Software people sometimes forget physical limitations. Web apps require more CPU cycles for the same work (even if just to run a JIT compiler), more CPU cycles will consume more of the user's battery life, and battery energy density isn't getting that much better over time.

  10. If you assume... by sgage · · Score: 2

    ... that Web access is going to continue to be cheap, fast, and always-on, then web apps and the whole cloud thing makes some sort of sense. Though there are still privacy and security issues.

    But I don't assume that Web access is going to continue to be cheap, fast, and always-on. I sincerely hope that I'm wrong.

  11. Huh? by Marvin_Runyon · · Score: 2

    Dan Yoder

    Who?

    CTO at Border Stylo

    Again, who?

    Native Apps Are Dead

    Oh, that again, whatever...

  12. Jobs pushed this once.... by __aazsst3756 · · Score: 2

    Remember when Steve Jobs stood on stage and told developers they did not need to code native apps, because the iOS would ship with an awesome web browser? Didn't go too well, and they were forced to release native app support. Then Rubenstien left Apple to help build WebOS at Palm, that also did not support native apps. They may die someday, but it will not be any time soon.

  13. Better to learn your tools than be miserable. by SanityInAnarchy · · Score: 2

    Whether it's having to use horrid languages like JavaScript or PHP,

    JavaScript isn't a bad language. It's not a great language, but it's much better than it's given credit for.

    PHP is, however, a pretty bad language. Maybe it's gotten better recently, but it's not a great choice -- especially when, on the server, you have options.

    or dealing with broken browsers like IE6,

    That does suck. Last time I did web development, it took something like an hour a week. But that's really not bad, in the scheme of things.

    We also eventually decided to drop IE6 when we noticed how little of our traffic included it -- we targeted at least IE7, which was much better in that respect.

    or dealing with shitty MySQL databases "designed" by people who didn't understand even basic relational theory,

    In this case, you're in the same boat as with PHP -- that is, you're working with legacy code developed by shitty developers. You find the same shit everywhere.

    Or you can use languages that are actually enjoyable on the server side, and work with designers who actually do understand databases.

    At least native applications are often built using real programming languages like C and C++.

    I'd prefer JavaScript to C++, but then, I hate static types. But I'm confused that anyone in their right mind would prefer C to JavaScript. C, really?

    Even semi-native languages...

    What do you mean "even"? I mean...

    like Java, C# and, dare I say it, VB.NET,

    Are you really saying C and C++ are more enjoyable than the above?

    And people are taking you seriously?

    I could see the argument that they are more "powerful", in some sense. More efficient, certainly, in the hands of someone who knows what they're doing. But more enjoyable?

    I enjoy not having to debug segfaults anymore. Let's start with that.

    or dealing with broken HTML,

    How is this any worse than, say, dealing with a broken GUI widget?

    or fighting with stylesheets.

    This is probably the worst part of web development right now, so I do agree with you there.

    But I'd still rather fight with stylesheets than fight with manual memory allocation in C and C++, or with making Java, C#, and VB.NET programs actually cross-platform -- or even be sure they work on everyone's machine. There are far fewer popular browsers than there are ways people will fuck up Windows.

    Everything about it was decades behind where native applications were at the time, and things still haven't changed.

    Oh, they have changed.

    There are aspects which are decades ahead of native apps now, but there are also aspects which are decades behind.

    --
    Don't thank God, thank a doctor!