There’s good news and bad news for web developers: the bad news is that the continuing transition away from the desktop has led to a bewildering array of options when it comes to choosing a development tool; the good news (and it’s very good) is that these tools share a lot in common, so learn any of them and you’re 80% of the way to learning the rest. This is because most of them conform, to a greater or lesser extent, to the ECMA standards. There’s also something wonderfully democratic about web applications. Armed with little more than a cheap Linux web server running Apache, MySQL and PHP, the back-bedroom programmer can create and deploy to anyone with a browser, at almost zero financial cost.
Compare that with developing desktop applications and the contrast is obvious. I can’t think of a single worthwhile desktop development tool that’s free for commercial purposes, and the typical startup cost for a desktop developer runs into hundreds or thousands of pounds. Developing for the desktop also limits your product’s market – are you developing for Windows, Macintosh or Linux? You must choose and, if it’s Windows, do you need to support 98 as well as newer versions? If so, .NET programming languages are ruled out because prospective customers are unlikely to appreciate being forced to download a huge framework before they can even install it. If it’s Macintosh, do you need to support OS 8/OS 9 as well as OS X? If it’s Linux, how much choice do you have in professional development tools?
REALbasic is one programming tool that can cater for all these scenarios: indeed, it’s the only one I know of. The fundamental differences between the Windows, Linux and Mac operating systems mean it’s no trivial task to create a version for all of them, but it is do-able. The downside is that REALbasic isn’t quite as good in any of these environments as a tool specific to that environment. I developed a sophisticated desktop application in REALbasic because the client wanted support for Windows 98 with an interface that looks like Microsoft Word 2003! So much of the Word interface now derives from the .NET Framework that it’s almost impossible to replicate in what’s essentially a Win32 tool.
None of this is an issue for the web application developer. In theory, it’s possible to create a sophisticated web application that will look and behave like a native application in any browser, running on any operating system – a universal application from a single code base. Of course, it’s never quite that simple. There are enough inconsistencies between different browsers that you need to test every combination thoroughly – even if the language officially supports the most common ones like Windows XP with Internet Explorer 6. These inconsistencies often involve minor differences in look and feel rather than functionality. Looking at our passyourtheory.co.uk website, 89% of our visitors use Internet Explorer (of which the vast majority are on version 6), 9% use Firefox and most of the remainder are using the Mac browser Safari. It clearly makes sense to target Internet Explorer 6, while also ensuring compatibility with the remaining 10%+ using other browsers.
So, where to begin? One of the delightful things about web application development is that it doesn’t matter that much. To become an expert in the PHP/MySQL combination that powers most dynamic websites is as good a choice as investing in ASP.NET/Windows. PHP/MySQL are both open source and run happily on low-powered Linux servers, whereas you’ll need a well-specified (hence expensive) Windows server to cope with any of the .NET languages. PHP is portable across platforms so it’s always an option, whereas .NET is, to all intents and purposes, a Windows-only technology.