Applications vs. Webapps

Started by
29 comments, last by Servant of the Lord 9 years, 11 months ago

Some background: currently working on an application at work, and it is a Java application. We're adding a bunch of stuff that just doesn't fit into the GUI very well. Creating reports, sending them to the server to run, displaying currently submitted reports, viewing the results, that kind of stuff. I spent all last week just trying to figure out how to get everything into the tab on the GUI. So far I have been unsuccessful.

I think all these things, because they live on the server, should be in a webpage and not the application. My boss doesn't think so. Because there is no editor for creating the report on the web (and it would be too costly) then the report stuff should live with the app.

OK. My questions:

What is the difference between a webapp and an applications? I couldn't express my views very well, but I know that the web is better suited for some tasks than a web page. He argued that you can stick anything in an app that you can on a webpage, and it's easier, plus you don't need a server.

I can't put my finger on why this wrong, but having done both webapps and applications, I know this isn't true.

Anyone have a better way of expressing this so he'll understand? Or maybe I'm crazy, and he's right. Tell me why.

I think, therefore I am. I think? - "George Carlin"
My Website: Indie Game Programming

My Twitter: https://twitter.com/indieprogram

My Book: http://amzn.com/1305076532

Advertisement

On a side note, he uses a Mac for everything. It occurred to me that mac apps are more like web pages than Java programs. For example, the App store on my mac has links at the top, and forward/back buttons, and an unlimited vertical canvas to display everything.

Is there some kind of GUI toolkit for this stuff I missed?

I think, therefore I am. I think? - "George Carlin"
My Website: Indie Game Programming

My Twitter: https://twitter.com/indieprogram

My Book: http://amzn.com/1305076532

When I think of a "webapp", what comes to mind is some sort of RESTful web service. At my last job that's exactly how we generated all of our report-type stuff, via REST endpoints. In that particular domain space, he'd be right -- you can totally just represent an app interface with a web page.

Outside of that, I'm less sure what you're getting at.


Outside of that, I'm less sure what you're getting at.

I'm not concerned with the technology. It is more of a philosophical answer I'm looking for. Something like:

All things being equal, a solution that will [insert requirements] is better as an application, a solution that will [insert requirements] is better suited as a bunch of web pages, and a solutions that will [insert requirements] doesn't really favor one or the other.

I feel like the current requirements would be better suited for a web app, but it is just a feeling. I don't have a good argument.

I think, therefore I am. I think? - "George Carlin"
My Website: Indie Game Programming

My Twitter: https://twitter.com/indieprogram

My Book: http://amzn.com/1305076532

A webapp is just an application that runs in the browser using web technology like html, javascript, xhr, etc.

Pros:

- user does not need to install the software

- user does not need to update the software

- cross platform

- sandboxed (browser separates app and os)

- rich design language (css)

Cons:

- requires internet access at all times (except if you do advanced stuff like html5 application cache)

- javascript

- can be slower than a native app

- browser differences can make development difficult

- sandboxed (if the app needs access to "unsafe" os functions you're SOL)

Pros:
- requires internet access at all times (except if you do advanced stuff like html5 application cache)


Sounds like a con to me.

Cons:
- javascript


It is extremely debatable whether that's a pro, a con, or just irrelevant. Especially given that a great many web apps _aren't_ written with JavaScript these days but rather CoffeeScript or TypeScript or ES6 (Traceur) or Java (GWT) or some other transpiler; you can even use C++ if you really want thanks to projects like Emscripten.

--

Ultimately, web apps are just apps that use the browser as their platform instead of Qt or Java or whatever "native" platform you'd choose otherwise. From a technical standpoint, it's all about the features of the platform you want.

Modern browsers are extremely rich and capable of doing many of the things a native app can do at near-equivalent speeds. If you don't already have a concrete technical reason why a native app is better, the overwhelming odds are that the web app approach will save you time and money in the long run, as the Web is cheaper and easier to develop for than almost any native app framework (save maybe the HTML5 app frameworks).

From business' perspective, the lack of a need to install is the killer feature of Web apps. Metrics show that only a small fraction of the people who come to your website will bother to download any app, and then only a small fraction of the people who download it run an installer (on mobile devices downloading == installing, but not on the PC), and then only a small fraction of the people who install it actually run it. I've seen metrics for a few different sorts of apps showing these same trends.

Flash games took off so well in the early days of the F2P Web Game market precisely because there were zero barriers between a user showing interest in the product and being inside the app. HTML5 apps are the modern incarnation of that. (1) User clicks link, (2) user is in app, (3) ???, (4) profit.

Sean Middleditch – Game Systems Engineer – Join my team!

Yep that actually belongs in the con list. Dont know how it ended up there.
As for transpilers. Didn't really think of that. Good point.
Im not against pure JavaScript either. Just thought that might be a negative for people who are used to other languages.
Modern browsers are extremely rich and capable of doing many of the things a native app can do at near-equivalent speeds. If you don't already have a concrete technical reason why a native app is better, the overwhelming odds are that the web app approach will save you time and money in the long run, as the Web is cheaper and easier to develop for than almost any native app framework (save maybe the HTML5 app frameworks).

The caveat here however is that "Modern Browsers" aren't an automatic when dealing with users, whether in the corporate or consumer space.

That said, I'm going to assume this is an in-house product, since most apps with that description tend to be. In which case, it's fine, since you typically don't need to develop for the nasty cases (i.e. IE, pardon the pun).

HTML/CSS are fantastic for lightweight UI needs. Full-featured client GUI toolkits tend to bring a lot of baggage with them because of their complexity. Do you need half a dozen checkboxes, tabs, and other fancy widgets (in which case HTML 5 is often still perfectly suited), or do just need maybe a file upload box and a table with some download links?

Biggest advantage for native apps is higher speed, read this for instance:

https://www.facebook.com/notes/facebook-engineering/under-the-hood-rebuilding-facebook-for-ios/10151036091753920

In addition, not all native (advanced) features are availible to webapps.

Another reason for choosing native apps is that it will get some free promotion from the Google Play/App store. If you build an webapp youll need to do your own advertising. The advertising itself will be easier for a webapp however and with the large amount of applications in the app stores your native app will most likely get only a slight attention the first day when it appears in the 'new apps' category.

There are pros and cons for each, ultimately you might just want to write 3/4 apps: webapp, android and ios (and perhaps windows)

This depends on the succes of your app.

I'd go for a web page if there is some framework/application/service that is designed to do what you want to do. Say, Oracle's APEX is made for that sort of "business" stuff, reports, client lists, inventory lists, etc. So if you know your way around it, you might get something working real fast (disclaimer: I hate it and I think its awful, but its a good example).

That said, if the application required isn't something that could be catered from a known framework/application, and requires quite a bit of custom functionality, I'd go for a desktop app. I'd prefer it in Java + JavaFX/Swing so you can get OSX/Linux compatibility without much further thought and using standard GUI toolkits. If you target only Windows, .NET with WPF is probably a better choice.

For server connections, report generators and "enterprise frameworks", both Java and C# got plenty of options for whatever database/environment you're working afaik.

If you need also mobile compatibility, you could roll a desktop Java application restricting yourself to whatever Dalvik supports only so make Android deployment possible, or just use one of the several frameworks out there that support exporting to Adroind/iOS/etc.

With web sites this aspect isn't as tough since pretty much any web site framework out there is kinda prepared to provide you the tools to have a mobile version of the website working if the mobile device doesn't supports the full site as it is already.

I wouldn't do any "heavy" app in a web site. There could be plenty of time/work lost if the work being done through the app needs lots of interaction and/or the internet connection in the place isn't good enough.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

This topic is closed to new replies.

Advertisement