The Evolution of Application Delivery
Summary: The history of software development is, in many ways, the history of application delivery. For decades, developers have searched for the ideal balance between performance, portability, usability, security, maintainability, and deployment simplicity.
Each generation of application technology emerged to solve the limitations of the one before it. Some technologies disappeared, some evolved, and some continue to influence modern application design. Understanding this evolution provides valuable insight into why modern application architectures look the way they do today.
Context
Although technology changes rapidly, the challenges faced by software developers remain surprisingly consistent:
- How do users obtain the application?
- How is the application updated?
- How portable is it?
- How much access does it need to the underlying system?
- How can development effort be reduced?
Many "new" technologies are simply different answers to these same questions.
A Timeline of Application Delivery
1990s ├── Native Desktop Apps ├── Browser Websites └── HTAs 2000s ├── Java Applets ├── Flash ├── AIR ├── Widgets └── Silverlight 2010s ├── Mobile Apps ├── SPAs ├── Electron └── PWAs 2020s ├── Cross Platform Frameworks ├── Web Runtime Environments ├── MAUI └── Browser-hosted Applications
Each generation attempted to improve upon the strengths and weaknesses of its predecessors.
The 1990s: The Age of the Desktop
Native Desktop Applications
During the 1990s, native desktop applications dominated personal computing.
Examples included:
- Microsoft Office
- Lotus Notes
- CorelDRAW
- Adobe Photoshop
Applications were typically installed from:
- Floppy disks
- CD-ROMs
- Corporate network shares
Typical architecture:
Application
│
▼
Operating System
│
▼
Hardware
Strengths
- Excellent performance
- Rich user interfaces
- Deep hardware access
- Extensive operating system integration
Challenges
- Manual installation
- Difficult updates
- Platform dependency
- Software distribution costs
Browser Websites
As Internet access became widespread, websites evolved beyond static documents.
Developers began building systems that accepted user input and generated dynamic content.
Examples included:
- Early webmail systems
- Online shopping platforms
- Corporate intranets
This introduced a new concept:
The application lives on the server rather than the user's computer.
This dramatically simplified deployment.
HTML Applications (HTA)
Microsoft recognised that many developers wanted the flexibility of web technologies with the power of desktop applications.
HTAs attempted to bridge this gap.
An HTA provided:
- HTML user interfaces
- JavaScript and VBScript
- Desktop integration
- Reduced browser security restrictions
Conceptually:
Web Technologies
+
Desktop Trust
=
HTA
Many ideas later found in hybrid applications can be traced back to HTAs.
The 2000s: Rich Internet Applications
As internet connectivity improved, developers sought to deliver richer experiences through the browser.
This era became known as the age of the Rich Internet Application (RIA).
Java Applets
Java Applets promised:
Write Once Run Anywhere
Applications executed within the browser using the Java Runtime Environment.
Developers could create:
- Interactive interfaces
- Games
- Business applications
However, browser compatibility, performance issues, and security concerns eventually reduced adoption.
Flash
Adobe Flash became one of the most influential technologies of the era.
Flash enabled:
- Animation
- Video
- Interactive applications
- Browser games
For many years, Flash offered capabilities that standard web technologies could not.
Entire websites were sometimes built exclusively in Flash.
Adobe AIR
Adobe AIR extended Flash beyond the browser.
Developers could create:
- Desktop applications
- Media tools
- Business systems
using familiar web technologies.
Architecture:
Application
│
▼
Adobe AIR
│
▼
Operating System
AIR demonstrated that web technologies could be used for desktop application development.
Widgets
Widgets represented a different approach.
Instead of building large applications, developers created small, focused applications designed to perform a specific function.
Examples included:
- Weather widgets
- RSS readers
- Clocks
- System monitors
Platforms included:
- Opera Widgets
- Yahoo Widgets
- Apple Dashboard Widgets
- W3C Widget specifications
Many widget concepts later influenced modern component-based application design.
Silverlight
Microsoft Silverlight attempted to provide a .NET-based alternative to Flash.
Features included:
- Rich interfaces
- Multimedia support
- C# development
- Browser integration
Silverlight gained significant enterprise adoption before HTML5 ultimately reduced the need for browser plugins.
The 2010s: Mobile and the Return of the Application
The introduction of smartphones fundamentally changed software delivery.
Mobile Applications
Apple's App Store and Google's Play Store transformed application distribution.
Advantages included:
- Easy installation
- Automatic updates
- Device integration
- App monetisation
This period saw a return to native application development.
Developers often maintained separate:
- iOS applications
- Android applications
- Web applications
This increased development costs considerably.
Single Page Applications (SPAs)
Meanwhile, web applications continued to evolve.
SPAs moved much of the application logic into the browser.
Popular frameworks included:
- Angular
- React
- Vue
This produced experiences that felt increasingly similar to desktop applications.
Architecture shifted from:
Page → Request → Page
to:
Application → API → Data
Electron
Developers soon realised that modern web applications looked and behaved remarkably like desktop software.
Electron formalised this idea.
By combining:
Web Application
+
Chromium
+
Node.js
developers could deploy desktop applications using web technologies.
Electron became popular because organisations could reuse existing web development skills.
Progressive Web Applications
PWAs represented a different response to the same challenge.
Instead of bringing browsers to the desktop, they brought desktop-like capabilities to web applications.
Features included:
- Offline support
- Push notifications
- Home screen installation
- Background synchronisation
A PWA remained fundamentally a web application while behaving more like a traditional app.
The 2020s: Convergence
Modern application development is increasingly focused on platform convergence.
The distinction between native, web, and hybrid applications continues to blur.
Cross Platform Frameworks
Modern frameworks attempt to reduce duplicated effort.
Examples include:
- Flutter
- React Native
- Uno Platform
- Avalonia
The objective remains:
One codebase, multiple platforms.
Web Runtime Environments
A growing trend is the use of runtime environments that host applications and abstract platform differences.
In this model:
Application
│
▼
Web APIs
│
▼
Runtime Environment
│
▼
Operating System
The application primarily targets a consistent API surface rather than individual operating systems.
This approach continues the ideas explored by browsers, HTAs, AIR, Electron, and hybrid frameworks.
.NET MAUI
.NET MAUI represents Microsoft's current approach to unified application development.
Applications can target:
- Windows
- Android
- iOS
- macOS
from a shared codebase.
MAUI reflects the industry's continuing pursuit of platform-independent development.
Browser-Hosted Applications
Browsers have evolved into highly capable application platforms.
Modern browsers provide:
- Local storage
- Offline caching
- Device integration
- Notifications
- Hardware acceleration
As a result, many applications that once required native deployment can now execute entirely within a browser.
Recurring Themes Throughout History
Several patterns repeatedly appear throughout the evolution of application delivery.
Reduce Deployment Friction
Every generation attempts to make deployment easier:
Floppy Disk
↓
CD-ROM
↓
Download
↓
Browser
↓
App Store
↓
Cloud Service
Increase Portability
Technology continually moves toward platform independence.
Platform Specific
↓
Cross Platform
↓
Platform Agnostic
Balance Power and Security
Every application model must balance:
- User convenience
- System access
- Security
Many technologies declined because they became difficult to secure.
Reuse Existing Skills
A recurring industry goal is reducing the need to maintain multiple codebases and specialist teams.
Many modern frameworks exist primarily to maximise code reuse across platforms.
Have We Solved The Problem?
Not entirely.
The software industry continues to search for the ideal balance between:
- Native performance
- Web portability
- Development efficiency
- Security
- User experience
Every generation offers improvements, but no approach completely eliminates trade-offs.
Consequently, application delivery continues to evolve.
Key Takeaways
- Most application technologies emerged in response to specific limitations of previous generations.
- The industry frequently alternates between local execution and browser-hosted execution models.
- Many modern technologies revisit ideas first explored decades earlier.
- Cross-platform development remains a consistent objective throughout computing history.
- Application delivery mechanisms change, but the underlying challenges remain remarkably similar.
- Understanding historical solutions helps architects avoid repeating past mistakes and identify genuinely new innovations.