HTML 5 applications in the browser really seem to be taking off. I've been using src:kit within Google Chrome for a few weeks and love it. I'm an ASP.Net (C#/MVC 3) developer by trade, and in the past did several pieces of WebForms programming.

With Windows 8 app development moving into the trade of local HTML5 apps, and the major smartphone browsers supporting HTML5 installation, as well as many platforms supporting it (PhoneGap and Titanium, for example), are we already/will we soon be at the point that I could create an app that would be fully "installable" to run as a standalone on every platform?

I do realise that a database (or instert-your-data-store-here) would also be necessary, so adding another language in there for middleware would be necessary. C# on Mac/Linux with Mono is possible, but Mono generally only creates a GTK+ Application, so I would likely need to create another wrapper to house the application... I think.

Any suggestions of a better language to use as middleware? I.e. for ease of transportation - I've got far more experience with C# than anything else so would like something from that family if I'll need to do something different.

Basically, how far away are we from this? What still needs to change? Most importantly, if it is possible (which I believe, theoretically it is), what is the big jump between where we are now and when we will be there?

This will eventually turn into a program, so it is a completely practical problem that I'm working my way through (I'll start development after Christmas).

EDIT: To clarify, by 'every' platform, I include at least the following: Windows XP+/Mac OS X/Linux: any distro pretty much in the last 2 years/iOS/Android/Blackberry 5+/Windows Phone 7+

4 Answers
4

With HTML 5 you can create web application front ends that run on the latest generation browsers in desktops, laptops, tablets and mobiles. If you want to support native to hardware operations, basically for tablets and mobiles, you should probably create a native application or a hybrid application (one with HTML code plus native web extensions like Windows 8 -WinRT).

Stick with the HTML approach on the front end and always use a service layer approach to minimize dependencies on the server side. If you have to create a native application you will only create the native front end, and not the service.

I'd say yes - the UI layer should be decoupled from the rest of the application anyway (in a perfect world, obviously...) so exposing your back-end software logic to a HTML-based front-end (note that I consider the web server to be part of the presentation layer) makes perfect sense.

The difficulty with this is that there are some things are are either not supported or just plain difficult to implement with HTML. This is changing rapidly so I'm not sure (but not 100% convinced either) that this is no longer a problem.

For example, you could only get 'push' to the client using polling-via-AJAX, but today we have websockets. You could only get fancy graphics using a plugin like Flash, but today we have WebGL. Once you had slow networks but today we have very fast and low-latency ones.

I think aspects like validation and responsive-ui without having to front-load a ton of data still requires a lot of design thought, but these are solveable problems.

So I'd go for it. Note that there is some interesting frameworks coming along now - especially Wt which changes the drawing commands of Qt from 'raw pixels' to html components so your 'desktop' Qt code will run on the web without any modification. I think that's pretty damn cool.

My theory, despite I'm not so much of a master of programming, is that if HTML5 could do everything we would have no need of other languages and most likely we would dispose of them. There are programmers out there which are specialists in multiple languages including HTML5, and yet they write software in Python, Java, C++ etc.

HTML5 has huge advantages, and indeed anything can be done, but the real question here should be if it can get anything done correctly and accurately. For example a Java game would probably be inferior to a C++ version of the same game due to it's dependencies and Java factors.

There are more supreme programming languages out there, C++ has huge capabilities with little dependencies, and after all, this same question you're asking could've probably been asked 10-20 years ago but with another programming languages, but in the meantime, more were invented.

I think the real answer here is that we'll have to wait, perhaps in a couple of years a new programming language will be created, a superior one which will be cross-platform and usable in any domain and for everything computer-related.

I would think that for back end services (db) you just need a RESTful web services implementation. That should be something you could implement in just about any language on any platform. Some platforms/frameworks will get you there faster obviously. I am not a C# developer so I don't know how difficult it is to do that in C#, but I would think the necessary pieces are there.

There are also some emerging technologies that will securely connect from the browser (HTML5) application to the db, but that does seem a tad risky. Maybe others can comment on the availability of those platforms and how secure they are.