A History of ‘App’ Development
Despite the term ‘app’ being relatively new, having been popularised by smartphones, within the enterprise world we’ve been developing ‘apps’ for decades. While the web is a generic platform that displays a diverse range of content, apps are focused on specific and often complex user tasks.
The technologies used to build apps has transformed considerably over the past few years:
Circa 2010, Microsoft technologies dominated, with one solid product, Windows Forms, being replaced by another, Windows Presentation Foundation (WPF). With WPF, Microsoft hoped to engage both developers with its elegant core, and designers with Expression Blend. Meanwhile Java Swing, while significantly better than it predecessor, had lost much of its market share to Microsoft’s superior products, or as Forrester put it, ‘Java bungled the presentation layer’. At this point in time, the use of web technologies for serious business applications was gaining momentum under the umbrella term Rich Internet Applications (RIA), with the Flex plugin dominating.
Fast-forward five years and WPF has successfully replaced Windows Forms and become the de-facto technology for enterprise app development. However, many feel that Microsoft has been neglecting this technology as the company's attention turned to Windows Store, Azure and Windows Mobile. WPF is a mature and stable technology, but the performance expectations were never fully met. Meanwhile, Oracle intends to use JavaFX (the failed plugin technology) to replace Java Swing (the failing desktop technology), further cementing their irrelevance! On the web, plugins, together with the term RIA have been consigned to the past, as HTML5 reigns supreme.
Collaboration Drives Innovation
Desktop technologies are entirely vendor owned and managed. WPF is Microsoft’s technology and Swing is Oracle’s. In contrast, HTML5 is a collaborative effort with the technology being pushed forward by a diverse range of companies and individuals.
Large technology companies are putting a considerable amount of resource behind HTML5, resulting in significant contributions, many of which can be used in conjunction. The following are just a few recent innovations:
- Google - created the Chrome browser that has set the benchmark that all other browsers aspire to. Google has also been the leading force behind a many web technologies, including Angular
- Facebook - developed React that has revolutionised the way developers write their user interface (UI) code. Its functional programming concepts have influenced a great many other frameworks, notably Google’s Angular 2.0
- Netflix - adopted TypeScript and rewrote the popular RxJS library, which is itself a core component of Angular 2
- Mozilla - continues to push web technologies both with its browser and quality documentation in the form of the Mozilla Developer Network, widely recognised as the most complete and detailed source of information on a wide range of HTML5 topics. Mozilla haS also adopted React, while rebuilding its browser’s developer tools
- Twitter - developed Bootstrap, which brought the concept of CSS reuse to the mainstream. Now on its fourth version it is very widely adopted. Twitter also uses React for its mobile website.
The level of investment in HTML5 is considerable, but just as notable is the level of collaboration. Examples include Google adopting Microsoft technology (Angular 2 uses TypeScript), and Microsoft using GitHub’s technology (Microsoft VSCode is built on Electron), with engineering teams often working side by side.
The combined efforts of the companies listed above, together with the thousands of smaller companies and individuals, has led to the considerable duplication of ideas, healthy competition and ultimately, innovation. Ideas, concepts and techniques rapidly evolve as they percolate through the open source world of HTML5. As a result, web development is improving exponentially.
HTML5 Takes On The Desktop
The use of HTML5 as a desktop technology is a relatively recent concept, but it is rapidly gaining momentum and maturity.
- Desktop notifications
- Interacting with low-level hardware
- System level menus
- Multi-monitor support
- Directly interact with the file system.
These APIs are often operating system agnostic, for example by allowing the developer to create notifications for both Windows and Mac from the same codebase. This architecture is very similar to Cordova/PhoneGap, allowing developers to write cross-platform HTML5 applications for mobile.
Desktop container technology has enjoyed the same collaboration as other HTML5 technologies, with the current wrapper technology representing the combined efforts of many companies and individuals.
As the technology has matured, its use has become mainstream. A number of high profile desktop applications are now written using HTML5:
- GitHub Atom - a very popular open source editor
- Visual Studio Code - Microsoft’s open source editor
- Brave - a privacy focused web browser
- Slack - a popular team-based messaging service.
As well as these, there are numerous financial services applications being built using this technology by companies including ICAP, Tullett Prebon,Trading Technologies, REDI and Green Key - in these cases using the OpenFin container. Furthermore, the Symphony Foundation, which is seeking to drive open source software within finance, has a dedicated Desktop Wrapper Working Group.
The applications mentioned above require both security and performance, both of which can be delivered using HTML5. With the third generation of wrapper technology, creating HTML5 applications for the desktop is now just as easy as creating them for the web.
A move towards using HTML5 for desktop development gives access to a great many innovative technologies, frameworks and techniques. The ultimate, and altogether achievable goal, is for your development team to be able to quickly and easily move between projects, technologies and platforms, making use of modern tooling and productivity. This can be succinctly expressed by a subtle twist on Sun’s original (and failed) mantra, write once, run anywhere:
Learn once, use everywhere
It looks like traditional desktop technologies are destined to follow the same fate as plugins, ultimately being replaced by HTML5. How can a technology created by a single company compete with the collaborative efforts of hundreds of enterprises, thousands of start ups and tens of thousands of individuals?
If you haven’t previously considered HTML5 as a desktop technology, it’s time to rethink your strategy…
And what of mobile development? HTML5 has some new tricks up its sleeve, with Progressive Web Apps able to deliver app-like functionality with browser technologies. It’s not only native technologies that are at risk, but also the app stores used to distribute them!
If you are interested in a more detailed version of this article, you can download it in White Paper form from our website.