<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>PiRho Knowledgebase  - Recent changes [en-gb]</title>
		<link>https://knowledgebase.pirho.net/wiki/Special:RecentChanges</link>
		<description>Track the most recent changes to the wiki in this feed.</description>
		<language>en-GB</language>
		<generator>MediaWiki 1.43.0</generator>
		<lastBuildDate>Thu, 10 Sep 2026 08:15:49 GMT</lastBuildDate>
		<item>
			<title>Restoring Android Studio 3 AVD Manager</title>
			<link>https://knowledgebase.pirho.net/index.php?title=Restoring_Android_Studio_3_AVD_Manager&amp;diff=474&amp;oldid=472</link>
			<guid isPermaLink="false">https://knowledgebase.pirho.net/index.php?title=Restoring_Android_Studio_3_AVD_Manager&amp;diff=474&amp;oldid=472</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://knowledgebase.pirho.net/index.php?title=Restoring_Android_Studio_3_AVD_Manager&amp;amp;diff=474&amp;amp;oldid=472&quot;&gt;Show changes&lt;/a&gt;</description>
			<pubDate>Mon, 17 Aug 2026 10:29:35 GMT</pubDate>
			<dc:creator>Dex</dc:creator>
			<comments>https://knowledgebase.pirho.net/wiki/Talk:Restoring_Android_Studio_3_AVD_Manager</comments>
		</item>
		<item>
			<title>Restoring Android Studio 3 AVD Manager</title>
			<link>https://knowledgebase.pirho.net/index.php?title=Restoring_Android_Studio_3_AVD_Manager&amp;diff=472&amp;oldid=0</link>
			<guid isPermaLink="false">https://knowledgebase.pirho.net/index.php?title=Restoring_Android_Studio_3_AVD_Manager&amp;diff=472&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Summary:&amp;#039;&amp;#039;&amp;#039; Android Studio 3.0 was designed around a 2017-era Android SDK. Attempting to use Android Studio 3.0 with modern SDK components can result in missing AVD Manager functionality, Gradle synchronization failures, emulator incompatibilities, and a generally unstable development environment. This article documents the investigation, diagnosis, reconstruction, and validation of a fully functional Android Studio 3.0 environment capable of running Android 8.0 Oreo...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Summary:&amp;#039;&amp;#039;&amp;#039; Android Studio 3.0 was designed around a 2017-era Android SDK. Attempting to use Android Studio 3.0 with modern SDK components can result in missing AVD Manager functionality, Gradle synchronization failures, emulator incompatibilities, and a generally unstable development environment. This article documents the investigation, diagnosis, reconstruction, and validation of a fully functional Android Studio 3.0 environment capable of running Android 8.0 Oreo (API 26) virtual devices. == Symptoms == * Android Virtual Device (AVD) Manager missing or unavailable. * Android-specific tooling partially disabled. * Emulator installed but not fully integrated into Android Studio. * Gradle project synchronization failures. * Dependency resolution failures. * Modern SDK components installed alongside Android Studio 3.0. == Environment == === IDE === &amp;lt;pre&amp;gt; Android Studio 3.0.0 Build 171.4408382 &amp;lt;/pre&amp;gt; === Operating System === &amp;lt;pre&amp;gt; Windows 10 &amp;lt;/pre&amp;gt; === SDK Location === &amp;lt;pre&amp;gt; S:\Android\Sdk &amp;lt;/pre&amp;gt; == Initial Observations == Although Android Studio appeared to function, the installed Android SDK contained components from wildly different generations. == Root Cause == The underlying issue was a version mismatch. Android Studio 3.0 expects components contemporary with its release period: &amp;lt;pre&amp;gt; 2017 &amp;lt;/pre&amp;gt; The SDK, however, had accumulated components from approximately: &amp;lt;pre&amp;gt; 2017 - 2026 &amp;lt;/pre&amp;gt; == Reconstructing a Period-Correct SDK == === Android Studio === &amp;lt;pre&amp;gt; Android Studio 3.0.0 &amp;lt;/pre&amp;gt; === Java === &amp;lt;pre&amp;gt; OpenJDK 1.8.0_152 &amp;lt;/pre&amp;gt; === SDK Tools === &amp;lt;pre&amp;gt; 26.1.1 &amp;lt;/pre&amp;gt; === Platform Tools === &amp;lt;pre&amp;gt; 26.0.0 &amp;lt;/pre&amp;gt; Direct download: &amp;lt;pre&amp;gt; https://dl.google.com/android/repository/platform-tools_r26.0.0-windows.zip &amp;lt;/pre&amp;gt; === Build Tools === &amp;lt;pre&amp;gt; 26.0.2 &amp;lt;/pre&amp;gt; === Android Platform === &amp;lt;pre&amp;gt; Android 8.0 (API 26) &amp;lt;/pre&amp;gt; === Emulator === Recommended: &amp;lt;pre&amp;gt; Android Emulator 27.2.9.0 Build ID 4773671 &amp;lt;/pre&amp;gt; === HAXM === &amp;lt;pre&amp;gt; Intel HAXM 7.8.0 &amp;lt;/pre&amp;gt; == Verifying SDK Functionality == === List Targets === &amp;lt;syntaxhighlight lang=&amp;quot;dos&amp;quot;&amp;gt; avdmanager.bat list target &amp;lt;/syntaxhighlight&amp;gt; === List Devices === &amp;lt;syntaxhighlight lang=&amp;quot;dos&amp;quot;&amp;gt; avdmanager.bat list device &amp;lt;/syntaxhighlight&amp;gt; == Creating a Test Device == &amp;lt;syntaxhighlight lang=&amp;quot;dos&amp;quot;&amp;gt; avdmanager create avd ^ -n Test26 ^ -k &amp;quot;system-images;android-26;default;x86&amp;quot; &amp;lt;/syntaxhighlight&amp;gt; == Launching the Emulator == &amp;lt;syntaxhighlight lang=&amp;quot;dos&amp;quot;&amp;gt; emulator.exe -avd Test26 &amp;lt;/syntaxhighlight&amp;gt; == Verifying ADB Connectivity == &amp;lt;syntaxhighlight lang=&amp;quot;dos&amp;quot;&amp;gt; adb devices &amp;lt;/syntaxhighlight&amp;gt; Expected: &amp;lt;pre&amp;gt; emulator-5554 device &amp;lt;/pre&amp;gt; == Restoring AVD Manager == After rebuilding the SDK using period-correct components and configuring Java correctly, Android Studio regained full AVD functionality. == Final Working Configuration == &amp;lt;pre&amp;gt; Android Studio 3.0.0 Java 1.8.0_152 SDK Tools 26.1.1 Platform Tools 26.0.0 Build Tools 26.0.2 Platform Android API 26 System Images Oreo x86 / x86_64 Emulator 27.2.9.0 HAXM 7.8.0 &amp;lt;/pre&amp;gt; == Lessons Learned == * Validate components individually. * Avoid mixing SDK generations. * Keep legacy SDKs isolated. * Archive known-good components. == Related Topics == * Android Studio Legacy Environment Preservation * Android SDK Version Compatibility * Intel HAXM Configuration * Android Emulator Troubleshooting * Gradle Dependency Resolution * Software Archaeology and Environment Reconstruction&lt;/div&gt;</description>
			<pubDate>Mon, 17 Aug 2026 08:59:32 GMT</pubDate>
			<dc:creator>Dex</dc:creator>
			<comments>https://knowledgebase.pirho.net/wiki/Talk:Restoring_Android_Studio_3_AVD_Manager</comments>
		</item>
		<item>
			<title>A Taxonomy of Applications</title>
			<link>https://knowledgebase.pirho.net/index.php?title=A_Taxonomy_of_Applications&amp;diff=471&amp;oldid=0</link>
			<guid isPermaLink="false">https://knowledgebase.pirho.net/index.php?title=A_Taxonomy_of_Applications&amp;diff=471&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Summary:&amp;#039;&amp;#039;&amp;#039; The term &amp;#039;&amp;#039;application&amp;#039;&amp;#039; encompasses a wide variety of software delivery models, execution environments, architectures, and deployment mechanisms.  Over the decades, the software industry has introduced numerous application technologies, including desktop applications, web applications, browser plugins, widgets, mobile applications, progressive web applications, hybrid applications, and runtime-hosted solutions.  This article provides a structured taxonomy...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Summary:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
The term &amp;#039;&amp;#039;application&amp;#039;&amp;#039; encompasses a wide variety of software delivery models, execution environments, architectures, and deployment mechanisms.&lt;br /&gt;
&lt;br /&gt;
Over the decades, the software industry has introduced numerous application technologies, including desktop applications, web applications, browser plugins, widgets, mobile applications, progressive web applications, hybrid applications, and runtime-hosted solutions.&lt;br /&gt;
&lt;br /&gt;
This article provides a structured taxonomy of application types, explaining how they relate to each other and identifying the common architectural patterns that exist beneath the terminology.&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Many discussions about software architecture become confusing because different classifications are mixed together.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* A Progressive Web App is often compared to a Native App.&lt;br /&gt;
* A Single Page Application is often compared to Electron.&lt;br /&gt;
* A Widget is often compared to an Application.&lt;br /&gt;
* A SaaS Platform is often discussed as though it were an application technology.&lt;br /&gt;
&lt;br /&gt;
In reality, these concepts frequently describe different aspects of the application ecosystem.&lt;br /&gt;
&lt;br /&gt;
A useful taxonomy helps clarify these relationships.&lt;br /&gt;
&lt;br /&gt;
== What Is A Taxonomy? ==&lt;br /&gt;
&lt;br /&gt;
A taxonomy is a system used to classify and organise related concepts.&lt;br /&gt;
&lt;br /&gt;
Rather than treating every application technology as a unique category, a taxonomy identifies shared characteristics and groups technologies accordingly.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Animal&lt;br /&gt;
 ├── Mammal&lt;br /&gt;
 ├── Bird&lt;br /&gt;
 └── Reptile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
 ├── Native&lt;br /&gt;
 ├── Web&lt;br /&gt;
 ├── Hybrid&lt;br /&gt;
 └── Runtime Hosted&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The objective is not to determine which approach is superior, but to understand how each approach relates to the others.&lt;br /&gt;
&lt;br /&gt;
== The Application Family Tree ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Applications&lt;br /&gt;
│&lt;br /&gt;
├── Native Applications&lt;br /&gt;
│&lt;br /&gt;
├── Web Applications&lt;br /&gt;
│&lt;br /&gt;
├── Hybrid Applications&lt;br /&gt;
│&lt;br /&gt;
├── Runtime Hosted Applications&lt;br /&gt;
│&lt;br /&gt;
├── Component Applications&lt;br /&gt;
│&lt;br /&gt;
└── Cloud Delivered Applications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each branch contains further subcategories.&lt;br /&gt;
&lt;br /&gt;
== Native Applications ==&lt;br /&gt;
&lt;br /&gt;
Native applications execute directly against a platform&amp;#039;s operating system APIs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
Operating System&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
Hardware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
* Windows Applications&lt;br /&gt;
* Linux Applications&lt;br /&gt;
* macOS Applications&lt;br /&gt;
* Android Applications&lt;br /&gt;
* iOS Applications&lt;br /&gt;
&lt;br /&gt;
=== Characteristics ===&lt;br /&gt;
&lt;br /&gt;
* Platform specific&lt;br /&gt;
* Direct operating system integration&lt;br /&gt;
* High performance&lt;br /&gt;
* Full device access&lt;br /&gt;
&lt;br /&gt;
=== Typical Technologies ===&lt;br /&gt;
&lt;br /&gt;
* Win32&lt;br /&gt;
* WinUI&lt;br /&gt;
* Cocoa&lt;br /&gt;
* Swift&lt;br /&gt;
* Kotlin&lt;br /&gt;
* GTK&lt;br /&gt;
* Qt&lt;br /&gt;
&lt;br /&gt;
== Web Applications ==&lt;br /&gt;
&lt;br /&gt;
Web applications execute within a web browser.&lt;br /&gt;
&lt;br /&gt;
The browser acts as a runtime environment and abstracts operating system differences.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Browser&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
Operating System&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Traditional Web Applications ===&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* Content Management Systems&lt;br /&gt;
* Webmail&lt;br /&gt;
* Intranets&lt;br /&gt;
* E-Commerce Platforms&lt;br /&gt;
&lt;br /&gt;
Architecture:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Browser&lt;br /&gt;
    │&lt;br /&gt;
Server&lt;br /&gt;
    │&lt;br /&gt;
Database&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Single Page Applications (SPA) ===&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* React&lt;br /&gt;
* Angular&lt;br /&gt;
* Vue&lt;br /&gt;
&lt;br /&gt;
Architecture:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Browser&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 API Services&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Progressive Web Applications (PWA) ===&lt;br /&gt;
&lt;br /&gt;
PWAs are a specialised form of web application.&lt;br /&gt;
&lt;br /&gt;
They add:&lt;br /&gt;
&lt;br /&gt;
* Service Workers&lt;br /&gt;
* Offline Support&lt;br /&gt;
* Push Notifications&lt;br /&gt;
* Installability&lt;br /&gt;
&lt;br /&gt;
A PWA is therefore:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Web Application&lt;br /&gt;
       +&lt;br /&gt;
Extended Browser Capabilities&lt;br /&gt;
       =&lt;br /&gt;
PWA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hybrid Applications ==&lt;br /&gt;
&lt;br /&gt;
Hybrid applications combine technologies from multiple categories.&lt;br /&gt;
&lt;br /&gt;
They typically use web technologies while maintaining access to native capabilities.&lt;br /&gt;
&lt;br /&gt;
=== Electron ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Chromium&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Node.js&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Operating System&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* Visual Studio Code&lt;br /&gt;
* Discord&lt;br /&gt;
* Slack&lt;br /&gt;
&lt;br /&gt;
=== Cordova ===&lt;br /&gt;
&lt;br /&gt;
Packages a web application into a native mobile application.&lt;br /&gt;
&lt;br /&gt;
=== Capacitor ===&lt;br /&gt;
&lt;br /&gt;
A modern evolution of Cordova with improved platform integration.&lt;br /&gt;
&lt;br /&gt;
=== MAUI Hybrid ===&lt;br /&gt;
&lt;br /&gt;
Combines native application components with web-based user interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Common Characteristics ===&lt;br /&gt;
&lt;br /&gt;
* Shared codebases&lt;br /&gt;
* Multi-platform deployment&lt;br /&gt;
* Access to native functionality&lt;br /&gt;
* Additional runtime layers&lt;br /&gt;
&lt;br /&gt;
== Runtime Hosted Applications ==&lt;br /&gt;
&lt;br /&gt;
Runtime-hosted applications target an intermediary runtime rather than a platform directly.&lt;br /&gt;
&lt;br /&gt;
This category includes many technologies that are often incorrectly grouped elsewhere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Runtime&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Platform&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
* Java Applications&lt;br /&gt;
* .NET Applications&lt;br /&gt;
* Electron Applications&lt;br /&gt;
* Browser Applications&lt;br /&gt;
* AIR Applications&lt;br /&gt;
* Web Runtime Environment Applications&lt;br /&gt;
&lt;br /&gt;
The runtime provides:&lt;br /&gt;
&lt;br /&gt;
* Storage&lt;br /&gt;
* Networking&lt;br /&gt;
* Security&lt;br /&gt;
* Rendering&lt;br /&gt;
* Platform abstraction&lt;br /&gt;
&lt;br /&gt;
=== Characteristics ===&lt;br /&gt;
&lt;br /&gt;
* Platform independence&lt;br /&gt;
* Consistent APIs&lt;br /&gt;
* Simplified portability&lt;br /&gt;
* Runtime dependency&lt;br /&gt;
&lt;br /&gt;
== Component Applications ==&lt;br /&gt;
&lt;br /&gt;
Some software is not intended to function as a complete standalone application.&lt;br /&gt;
&lt;br /&gt;
Instead, it provides functionality within another application.&lt;br /&gt;
&lt;br /&gt;
=== Widgets ===&lt;br /&gt;
&lt;br /&gt;
Widgets are small applications designed to perform specific tasks.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* Weather Widgets&lt;br /&gt;
* Stock Tickers&lt;br /&gt;
* Calendar Widgets&lt;br /&gt;
* System Monitors&lt;br /&gt;
&lt;br /&gt;
=== Web Parts ===&lt;br /&gt;
&lt;br /&gt;
Web Parts provide reusable functionality within larger platforms.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* SharePoint Web Parts&lt;br /&gt;
* Dashboard Components&lt;br /&gt;
* Enterprise Portal Modules&lt;br /&gt;
&lt;br /&gt;
=== Browser Extensions ===&lt;br /&gt;
&lt;br /&gt;
Extensions add capabilities to an existing application.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* Password Managers&lt;br /&gt;
* SEO Toolbars&lt;br /&gt;
* Developer Tools Extensions&lt;br /&gt;
&lt;br /&gt;
=== Modern Components ===&lt;br /&gt;
&lt;br /&gt;
Many modern systems use:&lt;br /&gt;
&lt;br /&gt;
* React Components&lt;br /&gt;
* Vue Components&lt;br /&gt;
* Web Components&lt;br /&gt;
* Widgets&lt;br /&gt;
&lt;br /&gt;
Although implemented differently, the concept remains similar.&lt;br /&gt;
&lt;br /&gt;
== Cloud Delivered Applications ==&lt;br /&gt;
&lt;br /&gt;
Cloud delivery describes how software is provided rather than how it is built.&lt;br /&gt;
&lt;br /&gt;
=== Software as a Service (SaaS) ===&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* Microsoft 365&lt;br /&gt;
* Salesforce&lt;br /&gt;
* ServiceNow&lt;br /&gt;
* Google Workspace&lt;br /&gt;
&lt;br /&gt;
A SaaS solution may internally use:&lt;br /&gt;
&lt;br /&gt;
* Native Applications&lt;br /&gt;
* Web Applications&lt;br /&gt;
* PWAs&lt;br /&gt;
* Mobile Applications&lt;br /&gt;
* Hybrid Applications&lt;br /&gt;
&lt;br /&gt;
It is therefore best viewed as a delivery model rather than an application type.&lt;br /&gt;
&lt;br /&gt;
== Historical Branches ==&lt;br /&gt;
&lt;br /&gt;
Several technologies occupy important positions in application history.&lt;br /&gt;
&lt;br /&gt;
=== HTML Applications (HTA) ===&lt;br /&gt;
&lt;br /&gt;
HTAs combined:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTML&lt;br /&gt;
+&lt;br /&gt;
Scripting&lt;br /&gt;
+&lt;br /&gt;
Desktop Trust&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
They can be viewed as an early hybrid application technology.&lt;br /&gt;
&lt;br /&gt;
=== Java Applets ===&lt;br /&gt;
&lt;br /&gt;
Applets were runtime-hosted applications delivered through browsers.&lt;br /&gt;
&lt;br /&gt;
=== Adobe AIR ===&lt;br /&gt;
&lt;br /&gt;
AIR brought web technologies onto the desktop by supplying a runtime environment.&lt;br /&gt;
&lt;br /&gt;
=== Silverlight ===&lt;br /&gt;
&lt;br /&gt;
Silverlight combined browser hosting with runtime-based execution.&lt;br /&gt;
&lt;br /&gt;
=== Flash Applications ===&lt;br /&gt;
&lt;br /&gt;
Flash was both:&lt;br /&gt;
&lt;br /&gt;
* A runtime platform&lt;br /&gt;
* An application delivery mechanism&lt;br /&gt;
&lt;br /&gt;
Its influence can still be seen in modern web application development.&lt;br /&gt;
&lt;br /&gt;
== Another Way To Classify Applications ==&lt;br /&gt;
&lt;br /&gt;
Applications can also be classified according to where execution occurs.&lt;br /&gt;
&lt;br /&gt;
=== Local Execution ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 User Device&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* Native Applications&lt;br /&gt;
* Mobile Apps&lt;br /&gt;
* Desktop Applications&lt;br /&gt;
&lt;br /&gt;
=== Browser Execution ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Browser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* Web Applications&lt;br /&gt;
* SPAs&lt;br /&gt;
* PWAs&lt;br /&gt;
&lt;br /&gt;
=== Runtime Execution ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Runtime Environment&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* Java Applications&lt;br /&gt;
* Electron Applications&lt;br /&gt;
* AIR Applications&lt;br /&gt;
&lt;br /&gt;
=== Distributed Execution ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Client&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
Services&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
Infrastructure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* SaaS Platforms&lt;br /&gt;
* Cloud Applications&lt;br /&gt;
* Enterprise Systems&lt;br /&gt;
&lt;br /&gt;
== Common Architectural Patterns ==&lt;br /&gt;
&lt;br /&gt;
Most application technologies share one of a small number of execution models.&lt;br /&gt;
&lt;br /&gt;
=== Direct Execution ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
Operating System&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hosted Execution ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
Host Environment&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
Operating System&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Distributed Execution ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Client&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
Services&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
Data Sources&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These patterns appear repeatedly throughout computing history.&lt;br /&gt;
&lt;br /&gt;
== Why Taxonomy Matters ==&lt;br /&gt;
&lt;br /&gt;
A structured taxonomy helps developers and architects:&lt;br /&gt;
&lt;br /&gt;
* Compare technologies fairly&lt;br /&gt;
* Select appropriate architectures&lt;br /&gt;
* Understand trade-offs&lt;br /&gt;
* Identify shared concepts&lt;br /&gt;
* Avoid terminology confusion&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* A PWA is not a competitor to SaaS.&lt;br /&gt;
* A Widget is not a competitor to Electron.&lt;br /&gt;
* A Runtime is not an Application.&lt;br /&gt;
* A Browser is not merely a renderer.&lt;br /&gt;
&lt;br /&gt;
Each occupies a different position within the overall ecosystem.&lt;br /&gt;
&lt;br /&gt;
== Key Takeaways ==&lt;br /&gt;
&lt;br /&gt;
* Applications can be classified according to architecture, runtime, hosting model, or delivery mechanism.&lt;br /&gt;
* Many technologies overlap across multiple categories.&lt;br /&gt;
* Web applications, native applications, hybrid applications, and runtime-hosted applications solve similar problems using different approaches.&lt;br /&gt;
* SaaS is a delivery model rather than an application technology.&lt;br /&gt;
* Widgets, components, extensions, and Web Parts are specialised application forms.&lt;br /&gt;
* Most modern application platforms are evolutionary refinements of concepts explored over many decades.&lt;br /&gt;
* Understanding the taxonomy of applications provides a clearer foundation for architecture and design discussions.&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
&lt;br /&gt;
* [[Applications Demystified]]&lt;br /&gt;
* [[The Evolution of Application Delivery]]&lt;br /&gt;
* [[Application Design for Multiple Platforms]]&lt;br /&gt;
* [[Runtime Environments]]&lt;br /&gt;
* [[Progressive Web Applications]]&lt;br /&gt;
* [[Hybrid Applications]]&lt;br /&gt;
* [[Software as a Service]]&lt;br /&gt;
* [[Web Runtime Environments]]&lt;br /&gt;
* [[Application Architecture]]&lt;/div&gt;</description>
			<pubDate>Thu, 13 Aug 2026 09:09:12 GMT</pubDate>
			<dc:creator>Dex</dc:creator>
			<comments>https://knowledgebase.pirho.net/wiki/Talk:A_Taxonomy_of_Applications</comments>
		</item>
		<item>
			<title>Application Design for Multiple Platforms</title>
			<link>https://knowledgebase.pirho.net/index.php?title=Application_Design_for_Multiple_Platforms&amp;diff=470&amp;oldid=0</link>
			<guid isPermaLink="false">https://knowledgebase.pirho.net/index.php?title=Application_Design_for_Multiple_Platforms&amp;diff=470&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Summary:&amp;#039;&amp;#039;&amp;#039; Modern software is expected to run on an increasing number of platforms. Users may access the same application from desktop computers, laptops, tablets, mobile devices, kiosk systems, web browsers, and cloud-hosted environments.  Historically, organisations developed separate applications for each platform. While this approach provides maximum control, it can significantly increase development and maintenance costs.  This article explores the two primary a...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Summary:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Modern software is expected to run on an increasing number of platforms. Users may access the same application from desktop computers, laptops, tablets, mobile devices, kiosk systems, web browsers, and cloud-hosted environments.&lt;br /&gt;
&lt;br /&gt;
Historically, organisations developed separate applications for each platform. While this approach provides maximum control, it can significantly increase development and maintenance costs.&lt;br /&gt;
&lt;br /&gt;
This article explores the two primary approaches to multi-platform application design: platform-specific development and portable application design. It examines the strengths, weaknesses, and architectural considerations of each approach and provides guidance on choosing the most appropriate strategy.&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
The challenge of supporting multiple platforms is almost as old as software development itself.&lt;br /&gt;
&lt;br /&gt;
An application may need to support:&lt;br /&gt;
&lt;br /&gt;
* Windows&lt;br /&gt;
* macOS&lt;br /&gt;
* Linux&lt;br /&gt;
* Android&lt;br /&gt;
* iOS&lt;br /&gt;
* Browser-based environments&lt;br /&gt;
* Embedded systems&lt;br /&gt;
* Virtual desktop environments&lt;br /&gt;
&lt;br /&gt;
The fundamental question becomes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Should the application target the platform directly, or should it target an abstraction that hides platform differences?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
How this question is answered shapes the entire architecture of the solution.&lt;br /&gt;
&lt;br /&gt;
== Platform-Specific Design ==&lt;br /&gt;
&lt;br /&gt;
Platform-specific design creates separate applications for each supported platform.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Windows Application&lt;br /&gt;
        │&lt;br /&gt;
        ▼&lt;br /&gt;
     Windows&lt;br /&gt;
&lt;br /&gt;
Android Application&lt;br /&gt;
        │&lt;br /&gt;
        ▼&lt;br /&gt;
     Android&lt;br /&gt;
&lt;br /&gt;
iOS Application&lt;br /&gt;
        │&lt;br /&gt;
        ▼&lt;br /&gt;
       iOS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each application is developed using technologies native to that platform.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Platform&lt;br /&gt;
! Typical Technologies&lt;br /&gt;
|-&lt;br /&gt;
| Windows&lt;br /&gt;
| Win32, WinForms, WPF, WinUI, .NET&lt;br /&gt;
|-&lt;br /&gt;
| Android&lt;br /&gt;
| Kotlin, Java&lt;br /&gt;
|-&lt;br /&gt;
| iOS&lt;br /&gt;
| Swift, Objective-C&lt;br /&gt;
|-&lt;br /&gt;
| macOS&lt;br /&gt;
| Swift, Cocoa&lt;br /&gt;
|-&lt;br /&gt;
| Linux&lt;br /&gt;
| GTK, Qt&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Advantages ===&lt;br /&gt;
&lt;br /&gt;
* Maximum performance&lt;br /&gt;
* Deep platform integration&lt;br /&gt;
* Direct access to operating system features&lt;br /&gt;
* Native user experience&lt;br /&gt;
* Immediate access to new platform capabilities&lt;br /&gt;
&lt;br /&gt;
=== Disadvantages ===&lt;br /&gt;
&lt;br /&gt;
* Multiple codebases&lt;br /&gt;
* Increased development effort&lt;br /&gt;
* Increased maintenance costs&lt;br /&gt;
* Feature parity challenges&lt;br /&gt;
* Larger development teams&lt;br /&gt;
&lt;br /&gt;
=== Typical Use Cases ===&lt;br /&gt;
&lt;br /&gt;
Platform-specific design remains appropriate when:&lt;br /&gt;
&lt;br /&gt;
* Maximum performance is essential&lt;br /&gt;
* Hardware integration is required&lt;br /&gt;
* Platform-specific user experiences are important&lt;br /&gt;
* Operating system features are heavily utilised&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
* Professional video editing software&lt;br /&gt;
* CAD applications&lt;br /&gt;
* Games&lt;br /&gt;
* Device drivers&lt;br /&gt;
* Operating system utilities&lt;br /&gt;
&lt;br /&gt;
== Portable Application Design ==&lt;br /&gt;
&lt;br /&gt;
Portable application design takes a different approach.&lt;br /&gt;
&lt;br /&gt;
Instead of targeting individual operating systems, the application targets a shared runtime or abstraction layer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
   Runtime&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
   Platform&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The runtime is responsible for adapting platform-specific behaviour.&lt;br /&gt;
&lt;br /&gt;
From the application&amp;#039;s perspective:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application Logic&lt;br /&gt;
       │&lt;br /&gt;
       ├── Windows&lt;br /&gt;
       ├── Android&lt;br /&gt;
       ├── iOS&lt;br /&gt;
       ├── macOS&lt;br /&gt;
       └── Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
becomes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application Logic&lt;br /&gt;
       │&lt;br /&gt;
       ▼&lt;br /&gt;
     Runtime&lt;br /&gt;
       │&lt;br /&gt;
       ▼&lt;br /&gt;
 Supported Platforms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This significantly reduces duplicated development effort.&lt;br /&gt;
&lt;br /&gt;
== The Role of the Runtime ==&lt;br /&gt;
&lt;br /&gt;
A runtime acts as an intermediary between the application and the platform.&lt;br /&gt;
&lt;br /&gt;
Responsibilities may include:&lt;br /&gt;
&lt;br /&gt;
* File access&lt;br /&gt;
* Storage&lt;br /&gt;
* Networking&lt;br /&gt;
* Notifications&lt;br /&gt;
* Device integration&lt;br /&gt;
* Security&lt;br /&gt;
* Window management&lt;br /&gt;
* Rendering&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Platform-Neutral APIs&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Runtime Environment&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Platform-Specific APIs&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Operating System&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The application primarily interacts with the runtime rather than the operating system directly.&lt;br /&gt;
&lt;br /&gt;
== Common Portable Architectures ==&lt;br /&gt;
&lt;br /&gt;
=== Browser-Based Applications ===&lt;br /&gt;
&lt;br /&gt;
The browser is one of the most successful runtime environments ever created.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Browser APIs&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Browser&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Operating System&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The browser abstracts significant platform differences.&lt;br /&gt;
&lt;br /&gt;
As a result, a properly designed web application can operate on many operating systems with minimal modification.&lt;br /&gt;
&lt;br /&gt;
=== Progressive Web Applications ===&lt;br /&gt;
&lt;br /&gt;
Progressive Web Applications extend traditional web application capabilities.&lt;br /&gt;
&lt;br /&gt;
Additional features include:&lt;br /&gt;
&lt;br /&gt;
* Offline operation&lt;br /&gt;
* Background processing&lt;br /&gt;
* Local storage&lt;br /&gt;
* Notifications&lt;br /&gt;
* Installation support&lt;br /&gt;
&lt;br /&gt;
A PWA remains fundamentally a web application but gains application-like behaviour.&lt;br /&gt;
&lt;br /&gt;
=== Electron Applications ===&lt;br /&gt;
&lt;br /&gt;
Electron uses a bundled browser runtime.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Chromium&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Node.js&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Operating System&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Developers can create desktop applications using web technologies while maintaining a relatively portable codebase.&lt;br /&gt;
&lt;br /&gt;
=== Cross Platform Frameworks ===&lt;br /&gt;
&lt;br /&gt;
Modern frameworks provide platform abstraction while still producing native deployments.&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
* Flutter&lt;br /&gt;
* React Native&lt;br /&gt;
* Avalonia&lt;br /&gt;
* Uno Platform&lt;br /&gt;
* .NET MAUI&lt;br /&gt;
&lt;br /&gt;
These frameworks seek to provide a balance between portability and native capability.&lt;br /&gt;
&lt;br /&gt;
== Designing Around Abstractions ==&lt;br /&gt;
&lt;br /&gt;
One of the most important architectural decisions is identifying which layer owns platform-specific behaviour.&lt;br /&gt;
&lt;br /&gt;
=== Poor Separation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
 ├── Windows Logic&lt;br /&gt;
 ├── Android Logic&lt;br /&gt;
 ├── iOS Logic&lt;br /&gt;
 └── Linux Logic&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Over time, this approach often becomes difficult to maintain.&lt;br /&gt;
&lt;br /&gt;
Every new feature may require changes across multiple sections of the codebase.&lt;br /&gt;
&lt;br /&gt;
=== Better Separation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Service Layer&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Platform Adapter&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Operating System&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The application remains largely platform agnostic while platform-specific concerns are isolated.&lt;br /&gt;
&lt;br /&gt;
This approach improves:&lt;br /&gt;
&lt;br /&gt;
* Maintainability&lt;br /&gt;
* Testability&lt;br /&gt;
* Portability&lt;br /&gt;
* Long-term scalability&lt;br /&gt;
&lt;br /&gt;
== User Interface Considerations ==&lt;br /&gt;
&lt;br /&gt;
The user interface is often the most visible challenge in multi-platform design.&lt;br /&gt;
&lt;br /&gt;
Different platforms have different conventions.&lt;br /&gt;
&lt;br /&gt;
=== Native Experience ===&lt;br /&gt;
&lt;br /&gt;
Users generally expect applications to behave similarly to other applications on their chosen platform.&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
* Menu placement&lt;br /&gt;
* Navigation patterns&lt;br /&gt;
* Input behaviours&lt;br /&gt;
* Accessibility features&lt;br /&gt;
&lt;br /&gt;
Ignoring platform conventions may create a poor user experience.&lt;br /&gt;
&lt;br /&gt;
=== Consistent Experience ===&lt;br /&gt;
&lt;br /&gt;
Some organisations prioritise consistency instead.&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
* Microsoft Office&lt;br /&gt;
* Adobe Creative Cloud&lt;br /&gt;
* Browser-based enterprise applications&lt;br /&gt;
&lt;br /&gt;
Users encounter similar interfaces regardless of platform.&lt;br /&gt;
&lt;br /&gt;
Both approaches are valid depending on business requirements.&lt;br /&gt;
&lt;br /&gt;
== Offline-First Design ==&lt;br /&gt;
&lt;br /&gt;
Modern multi-platform applications increasingly adopt an offline-first model.&lt;br /&gt;
&lt;br /&gt;
Traditional architecture:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
    Server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Offline-first architecture:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Local Data Store&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Synchronisation Layer&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
     Server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The application interacts primarily with local data.&lt;br /&gt;
&lt;br /&gt;
Synchronisation occurs separately.&lt;br /&gt;
&lt;br /&gt;
Benefits include:&lt;br /&gt;
&lt;br /&gt;
* Improved responsiveness&lt;br /&gt;
* Better reliability&lt;br /&gt;
* Reduced network dependency&lt;br /&gt;
* Enhanced mobile support&lt;br /&gt;
&lt;br /&gt;
This design is increasingly common in mobile, cloud, and distributed applications.&lt;br /&gt;
&lt;br /&gt;
== Web Runtime Environments ==&lt;br /&gt;
&lt;br /&gt;
An emerging architectural pattern involves hosting applications within a dedicated runtime environment that implements or extends standard Web APIs.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Standard Web APIs&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Web Runtime Environment&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Operating System&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this model:&lt;br /&gt;
&lt;br /&gt;
* Applications target standard browser capabilities.&lt;br /&gt;
* Platform differences are handled by the runtime.&lt;br /&gt;
* Platform-specific implementations are hidden behind a consistent API surface.&lt;br /&gt;
* Applications remain largely unaware of the underlying operating system.&lt;br /&gt;
&lt;br /&gt;
This approach builds upon concepts previously explored by browsers, HTAs, AIR, Electron, mobile runtimes, and progressive web technologies.&lt;br /&gt;
&lt;br /&gt;
== Choosing The Right Approach ==&lt;br /&gt;
&lt;br /&gt;
There is no universally correct solution.&lt;br /&gt;
&lt;br /&gt;
The best architecture depends upon:&lt;br /&gt;
&lt;br /&gt;
* Target audience&lt;br /&gt;
* Supported platforms&lt;br /&gt;
* Performance requirements&lt;br /&gt;
* Security requirements&lt;br /&gt;
* Offline requirements&lt;br /&gt;
* Team expertise&lt;br /&gt;
* Budget constraints&lt;br /&gt;
* Long-term maintenance goals&lt;br /&gt;
&lt;br /&gt;
A useful guideline is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Target the highest level of abstraction that still allows the application to meet its requirements.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This often produces the best balance between portability, flexibility, and maintainability.&lt;br /&gt;
&lt;br /&gt;
== Common Misconceptions ==&lt;br /&gt;
&lt;br /&gt;
=== Portable Means Less Powerful ===&lt;br /&gt;
&lt;br /&gt;
Portable applications can often provide capabilities comparable to native applications.&lt;br /&gt;
&lt;br /&gt;
The difference usually lies in the abstraction layer rather than the application&amp;#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
=== One Codebase Solves Everything ===&lt;br /&gt;
&lt;br /&gt;
A single codebase may reduce duplication, but architectural complexity still exists.&lt;br /&gt;
&lt;br /&gt;
Platform differences do not disappear simply because they are hidden behind a framework.&lt;br /&gt;
&lt;br /&gt;
=== Native Is Always Better ===&lt;br /&gt;
&lt;br /&gt;
Native applications provide advantages in some scenarios.&lt;br /&gt;
&lt;br /&gt;
However, portability, maintainability, deployment simplicity, and development speed may be more important than maximum performance.&lt;br /&gt;
&lt;br /&gt;
== Key Takeaways ==&lt;br /&gt;
&lt;br /&gt;
* Multi-platform application design requires balancing portability and platform integration.&lt;br /&gt;
* Platform-specific applications provide maximum control but increase complexity.&lt;br /&gt;
* Portable architectures reduce duplication through abstraction layers and runtimes.&lt;br /&gt;
* Browsers are among the most successful runtime environments ever developed.&lt;br /&gt;
* Modern frameworks continue the long-standing industry goal of write-once, run-anywhere software.&lt;br /&gt;
* Offline-first design is increasingly important in modern application architectures.&lt;br /&gt;
* Successful architectures separate application logic from platform-specific implementation details.&lt;br /&gt;
* The best solution is usually the simplest architecture that satisfies the application&amp;#039;s requirements.&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
&lt;br /&gt;
* [[Applications Demystified]]&lt;br /&gt;
* [[The Evolution of Application Delivery]]&lt;br /&gt;
* [[Progressive Web Applications]]&lt;br /&gt;
* [[Cross Platform Development]]&lt;br /&gt;
* [[Runtime Environments]]&lt;br /&gt;
* [[Offline First Design]]&lt;br /&gt;
* [[Application Architecture]]&lt;br /&gt;
* [[Web Runtime Environments]]&lt;br /&gt;
* [[Software Portability]]&lt;/div&gt;</description>
			<pubDate>Thu, 13 Aug 2026 09:02:41 GMT</pubDate>
			<dc:creator>Dex</dc:creator>
			<comments>https://knowledgebase.pirho.net/wiki/Talk:Application_Design_for_Multiple_Platforms</comments>
		</item>
		<item>
			<title>The Evolution of Application Delivery</title>
			<link>https://knowledgebase.pirho.net/index.php?title=The_Evolution_of_Application_Delivery&amp;diff=469&amp;oldid=0</link>
			<guid isPermaLink="false">https://knowledgebase.pirho.net/index.php?title=The_Evolution_of_Application_Delivery&amp;diff=469&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Summary:&amp;#039;&amp;#039;&amp;#039; 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. Understan...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Summary:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
Although technology changes rapidly, the challenges faced by software developers remain surprisingly consistent:&lt;br /&gt;
&lt;br /&gt;
* How do users obtain the application?&lt;br /&gt;
* How is the application updated?&lt;br /&gt;
* How portable is it?&lt;br /&gt;
* How much access does it need to the underlying system?&lt;br /&gt;
* How can development effort be reduced?&lt;br /&gt;
&lt;br /&gt;
Many &amp;quot;new&amp;quot; technologies are simply different answers to these same questions.&lt;br /&gt;
&lt;br /&gt;
== A Timeline of Application Delivery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1990s&lt;br /&gt;
├── Native Desktop Apps&lt;br /&gt;
├── Browser Websites&lt;br /&gt;
└── HTAs&lt;br /&gt;
&lt;br /&gt;
2000s&lt;br /&gt;
├── Java Applets&lt;br /&gt;
├── Flash&lt;br /&gt;
├── AIR&lt;br /&gt;
├── Widgets&lt;br /&gt;
└── Silverlight&lt;br /&gt;
&lt;br /&gt;
2010s&lt;br /&gt;
├── Mobile Apps&lt;br /&gt;
├── SPAs&lt;br /&gt;
├── Electron&lt;br /&gt;
└── PWAs&lt;br /&gt;
&lt;br /&gt;
2020s&lt;br /&gt;
├── Cross Platform Frameworks&lt;br /&gt;
├── Web Runtime Environments&lt;br /&gt;
├── MAUI&lt;br /&gt;
└── Browser-hosted Applications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each generation attempted to improve upon the strengths and weaknesses of its predecessors.&lt;br /&gt;
&lt;br /&gt;
== The 1990s: The Age of the Desktop ==&lt;br /&gt;
&lt;br /&gt;
=== Native Desktop Applications ===&lt;br /&gt;
&lt;br /&gt;
During the 1990s, native desktop applications dominated personal computing.&lt;br /&gt;
&lt;br /&gt;
Examples included:&lt;br /&gt;
&lt;br /&gt;
* Microsoft Office&lt;br /&gt;
* Lotus Notes&lt;br /&gt;
* CorelDRAW&lt;br /&gt;
* Adobe Photoshop&lt;br /&gt;
&lt;br /&gt;
Applications were typically installed from:&lt;br /&gt;
&lt;br /&gt;
* Floppy disks&lt;br /&gt;
* CD-ROMs&lt;br /&gt;
* Corporate network shares&lt;br /&gt;
&lt;br /&gt;
Typical architecture:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
     │&lt;br /&gt;
     ▼&lt;br /&gt;
Operating System&lt;br /&gt;
     │&lt;br /&gt;
     ▼&lt;br /&gt;
Hardware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Strengths ===&lt;br /&gt;
&lt;br /&gt;
* Excellent performance&lt;br /&gt;
* Rich user interfaces&lt;br /&gt;
* Deep hardware access&lt;br /&gt;
* Extensive operating system integration&lt;br /&gt;
&lt;br /&gt;
=== Challenges ===&lt;br /&gt;
&lt;br /&gt;
* Manual installation&lt;br /&gt;
* Difficult updates&lt;br /&gt;
* Platform dependency&lt;br /&gt;
* Software distribution costs&lt;br /&gt;
&lt;br /&gt;
=== Browser Websites ===&lt;br /&gt;
&lt;br /&gt;
As Internet access became widespread, websites evolved beyond static documents.&lt;br /&gt;
&lt;br /&gt;
Developers began building systems that accepted user input and generated dynamic content.&lt;br /&gt;
&lt;br /&gt;
Examples included:&lt;br /&gt;
&lt;br /&gt;
* Early webmail systems&lt;br /&gt;
* Online shopping platforms&lt;br /&gt;
* Corporate intranets&lt;br /&gt;
&lt;br /&gt;
This introduced a new concept:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
The application lives on the server rather than the user&amp;#039;s computer.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This dramatically simplified deployment.&lt;br /&gt;
&lt;br /&gt;
=== HTML Applications (HTA) ===&lt;br /&gt;
&lt;br /&gt;
Microsoft recognised that many developers wanted the flexibility of web technologies with the power of desktop applications.&lt;br /&gt;
&lt;br /&gt;
HTAs attempted to bridge this gap.&lt;br /&gt;
&lt;br /&gt;
An HTA provided:&lt;br /&gt;
&lt;br /&gt;
* HTML user interfaces&lt;br /&gt;
* JavaScript and VBScript&lt;br /&gt;
* Desktop integration&lt;br /&gt;
* Reduced browser security restrictions&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Web Technologies&lt;br /&gt;
        +&lt;br /&gt;
Desktop Trust&lt;br /&gt;
        =&lt;br /&gt;
HTA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Many ideas later found in hybrid applications can be traced back to HTAs.&lt;br /&gt;
&lt;br /&gt;
== The 2000s: Rich Internet Applications ==&lt;br /&gt;
&lt;br /&gt;
As internet connectivity improved, developers sought to deliver richer experiences through the browser.&lt;br /&gt;
&lt;br /&gt;
This era became known as the age of the Rich Internet Application (RIA).&lt;br /&gt;
&lt;br /&gt;
=== Java Applets ===&lt;br /&gt;
&lt;br /&gt;
Java Applets promised:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Write Once&lt;br /&gt;
Run Anywhere&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Applications executed within the browser using the Java Runtime Environment.&lt;br /&gt;
&lt;br /&gt;
Developers could create:&lt;br /&gt;
&lt;br /&gt;
* Interactive interfaces&lt;br /&gt;
* Games&lt;br /&gt;
* Business applications&lt;br /&gt;
&lt;br /&gt;
However, browser compatibility, performance issues, and security concerns eventually reduced adoption.&lt;br /&gt;
&lt;br /&gt;
=== Flash ===&lt;br /&gt;
&lt;br /&gt;
Adobe Flash became one of the most influential technologies of the era.&lt;br /&gt;
&lt;br /&gt;
Flash enabled:&lt;br /&gt;
&lt;br /&gt;
* Animation&lt;br /&gt;
* Video&lt;br /&gt;
* Interactive applications&lt;br /&gt;
* Browser games&lt;br /&gt;
&lt;br /&gt;
For many years, Flash offered capabilities that standard web technologies could not.&lt;br /&gt;
&lt;br /&gt;
Entire websites were sometimes built exclusively in Flash.&lt;br /&gt;
&lt;br /&gt;
=== Adobe AIR ===&lt;br /&gt;
&lt;br /&gt;
Adobe AIR extended Flash beyond the browser.&lt;br /&gt;
&lt;br /&gt;
Developers could create:&lt;br /&gt;
&lt;br /&gt;
* Desktop applications&lt;br /&gt;
* Media tools&lt;br /&gt;
* Business systems&lt;br /&gt;
&lt;br /&gt;
using familiar web technologies.&lt;br /&gt;
&lt;br /&gt;
Architecture:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Adobe AIR&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
Operating System&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AIR demonstrated that web technologies could be used for desktop application development.&lt;br /&gt;
&lt;br /&gt;
=== Widgets ===&lt;br /&gt;
&lt;br /&gt;
Widgets represented a different approach.&lt;br /&gt;
&lt;br /&gt;
Instead of building large applications, developers created small, focused applications designed to perform a specific function.&lt;br /&gt;
&lt;br /&gt;
Examples included:&lt;br /&gt;
&lt;br /&gt;
* Weather widgets&lt;br /&gt;
* RSS readers&lt;br /&gt;
* Clocks&lt;br /&gt;
* System monitors&lt;br /&gt;
&lt;br /&gt;
Platforms included:&lt;br /&gt;
&lt;br /&gt;
* Opera Widgets&lt;br /&gt;
* Yahoo Widgets&lt;br /&gt;
* Apple Dashboard Widgets&lt;br /&gt;
* W3C Widget specifications&lt;br /&gt;
&lt;br /&gt;
Many widget concepts later influenced modern component-based application design.&lt;br /&gt;
&lt;br /&gt;
=== Silverlight ===&lt;br /&gt;
&lt;br /&gt;
Microsoft Silverlight attempted to provide a .NET-based alternative to Flash.&lt;br /&gt;
&lt;br /&gt;
Features included:&lt;br /&gt;
&lt;br /&gt;
* Rich interfaces&lt;br /&gt;
* Multimedia support&lt;br /&gt;
* C# development&lt;br /&gt;
* Browser integration&lt;br /&gt;
&lt;br /&gt;
Silverlight gained significant enterprise adoption before HTML5 ultimately reduced the need for browser plugins.&lt;br /&gt;
&lt;br /&gt;
== The 2010s: Mobile and the Return of the Application ==&lt;br /&gt;
&lt;br /&gt;
The introduction of smartphones fundamentally changed software delivery.&lt;br /&gt;
&lt;br /&gt;
=== Mobile Applications ===&lt;br /&gt;
&lt;br /&gt;
Apple&amp;#039;s App Store and Google&amp;#039;s Play Store transformed application distribution.&lt;br /&gt;
&lt;br /&gt;
Advantages included:&lt;br /&gt;
&lt;br /&gt;
* Easy installation&lt;br /&gt;
* Automatic updates&lt;br /&gt;
* Device integration&lt;br /&gt;
* App monetisation&lt;br /&gt;
&lt;br /&gt;
This period saw a return to native application development.&lt;br /&gt;
&lt;br /&gt;
Developers often maintained separate:&lt;br /&gt;
&lt;br /&gt;
* iOS applications&lt;br /&gt;
* Android applications&lt;br /&gt;
* Web applications&lt;br /&gt;
&lt;br /&gt;
This increased development costs considerably.&lt;br /&gt;
&lt;br /&gt;
=== Single Page Applications (SPAs) ===&lt;br /&gt;
&lt;br /&gt;
Meanwhile, web applications continued to evolve.&lt;br /&gt;
&lt;br /&gt;
SPAs moved much of the application logic into the browser.&lt;br /&gt;
&lt;br /&gt;
Popular frameworks included:&lt;br /&gt;
&lt;br /&gt;
* Angular&lt;br /&gt;
* React&lt;br /&gt;
* Vue&lt;br /&gt;
&lt;br /&gt;
This produced experiences that felt increasingly similar to desktop applications.&lt;br /&gt;
&lt;br /&gt;
Architecture shifted from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Page → Request → Page&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application → API → Data&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Electron ===&lt;br /&gt;
&lt;br /&gt;
Developers soon realised that modern web applications looked and behaved remarkably like desktop software.&lt;br /&gt;
&lt;br /&gt;
Electron formalised this idea.&lt;br /&gt;
&lt;br /&gt;
By combining:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Web Application&lt;br /&gt;
      +&lt;br /&gt;
Chromium&lt;br /&gt;
      +&lt;br /&gt;
Node.js&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
developers could deploy desktop applications using web technologies.&lt;br /&gt;
&lt;br /&gt;
Electron became popular because organisations could reuse existing web development skills.&lt;br /&gt;
&lt;br /&gt;
=== Progressive Web Applications ===&lt;br /&gt;
&lt;br /&gt;
PWAs represented a different response to the same challenge.&lt;br /&gt;
&lt;br /&gt;
Instead of bringing browsers to the desktop, they brought desktop-like capabilities to web applications.&lt;br /&gt;
&lt;br /&gt;
Features included:&lt;br /&gt;
&lt;br /&gt;
* Offline support&lt;br /&gt;
* Push notifications&lt;br /&gt;
* Home screen installation&lt;br /&gt;
* Background synchronisation&lt;br /&gt;
&lt;br /&gt;
A PWA remained fundamentally a web application while behaving more like a traditional app.&lt;br /&gt;
&lt;br /&gt;
== The 2020s: Convergence ==&lt;br /&gt;
&lt;br /&gt;
Modern application development is increasingly focused on platform convergence.&lt;br /&gt;
&lt;br /&gt;
The distinction between native, web, and hybrid applications continues to blur.&lt;br /&gt;
&lt;br /&gt;
=== Cross Platform Frameworks ===&lt;br /&gt;
&lt;br /&gt;
Modern frameworks attempt to reduce duplicated effort.&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
* Flutter&lt;br /&gt;
* React Native&lt;br /&gt;
* Uno Platform&lt;br /&gt;
* Avalonia&lt;br /&gt;
&lt;br /&gt;
The objective remains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
One codebase, multiple platforms.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Web Runtime Environments ===&lt;br /&gt;
&lt;br /&gt;
A growing trend is the use of runtime environments that host applications and abstract platform differences.&lt;br /&gt;
&lt;br /&gt;
In this model:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Web APIs&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
 Runtime Environment&lt;br /&gt;
      │&lt;br /&gt;
      ▼&lt;br /&gt;
Operating System&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The application primarily targets a consistent API surface rather than individual operating systems.&lt;br /&gt;
&lt;br /&gt;
This approach continues the ideas explored by browsers, HTAs, AIR, Electron, and hybrid frameworks.&lt;br /&gt;
&lt;br /&gt;
=== .NET MAUI ===&lt;br /&gt;
&lt;br /&gt;
.NET MAUI represents Microsoft&amp;#039;s current approach to unified application development.&lt;br /&gt;
&lt;br /&gt;
Applications can target:&lt;br /&gt;
&lt;br /&gt;
* Windows&lt;br /&gt;
* Android&lt;br /&gt;
* iOS&lt;br /&gt;
* macOS&lt;br /&gt;
&lt;br /&gt;
from a shared codebase.&lt;br /&gt;
&lt;br /&gt;
MAUI reflects the industry&amp;#039;s continuing pursuit of platform-independent development.&lt;br /&gt;
&lt;br /&gt;
=== Browser-Hosted Applications ===&lt;br /&gt;
&lt;br /&gt;
Browsers have evolved into highly capable application platforms.&lt;br /&gt;
&lt;br /&gt;
Modern browsers provide:&lt;br /&gt;
&lt;br /&gt;
* Local storage&lt;br /&gt;
* Offline caching&lt;br /&gt;
* Device integration&lt;br /&gt;
* Notifications&lt;br /&gt;
* Hardware acceleration&lt;br /&gt;
&lt;br /&gt;
As a result, many applications that once required native deployment can now execute entirely within a browser.&lt;br /&gt;
&lt;br /&gt;
== Recurring Themes Throughout History ==&lt;br /&gt;
&lt;br /&gt;
Several patterns repeatedly appear throughout the evolution of application delivery.&lt;br /&gt;
&lt;br /&gt;
=== Reduce Deployment Friction ===&lt;br /&gt;
&lt;br /&gt;
Every generation attempts to make deployment easier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Floppy Disk&lt;br /&gt;
    ↓&lt;br /&gt;
CD-ROM&lt;br /&gt;
    ↓&lt;br /&gt;
Download&lt;br /&gt;
    ↓&lt;br /&gt;
Browser&lt;br /&gt;
    ↓&lt;br /&gt;
App Store&lt;br /&gt;
    ↓&lt;br /&gt;
Cloud Service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase Portability ===&lt;br /&gt;
&lt;br /&gt;
Technology continually moves toward platform independence.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Platform Specific&lt;br /&gt;
        ↓&lt;br /&gt;
Cross Platform&lt;br /&gt;
        ↓&lt;br /&gt;
Platform Agnostic&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Balance Power and Security ===&lt;br /&gt;
&lt;br /&gt;
Every application model must balance:&lt;br /&gt;
&lt;br /&gt;
* User convenience&lt;br /&gt;
* System access&lt;br /&gt;
* Security&lt;br /&gt;
&lt;br /&gt;
Many technologies declined because they became difficult to secure.&lt;br /&gt;
&lt;br /&gt;
=== Reuse Existing Skills ===&lt;br /&gt;
&lt;br /&gt;
A recurring industry goal is reducing the need to maintain multiple codebases and specialist teams.&lt;br /&gt;
&lt;br /&gt;
Many modern frameworks exist primarily to maximise code reuse across platforms.&lt;br /&gt;
&lt;br /&gt;
== Have We Solved The Problem? ==&lt;br /&gt;
&lt;br /&gt;
Not entirely.&lt;br /&gt;
&lt;br /&gt;
The software industry continues to search for the ideal balance between:&lt;br /&gt;
&lt;br /&gt;
* Native performance&lt;br /&gt;
* Web portability&lt;br /&gt;
* Development efficiency&lt;br /&gt;
* Security&lt;br /&gt;
* User experience&lt;br /&gt;
&lt;br /&gt;
Every generation offers improvements, but no approach completely eliminates trade-offs.&lt;br /&gt;
&lt;br /&gt;
Consequently, application delivery continues to evolve.&lt;br /&gt;
&lt;br /&gt;
== Key Takeaways ==&lt;br /&gt;
&lt;br /&gt;
* Most application technologies emerged in response to specific limitations of previous generations.&lt;br /&gt;
* The industry frequently alternates between local execution and browser-hosted execution models.&lt;br /&gt;
* Many modern technologies revisit ideas first explored decades earlier.&lt;br /&gt;
* Cross-platform development remains a consistent objective throughout computing history.&lt;br /&gt;
* Application delivery mechanisms change, but the underlying challenges remain remarkably similar.&lt;br /&gt;
* Understanding historical solutions helps architects avoid repeating past mistakes and identify genuinely new innovations.&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
&lt;br /&gt;
* [[Applications Demystified]]&lt;br /&gt;
* [[Progressive Web Applications]]&lt;br /&gt;
* [[Single Page Applications]]&lt;br /&gt;
* [[Cross Platform Development]]&lt;br /&gt;
* [[Runtime Environments]]&lt;br /&gt;
* [[Hybrid Applications]]&lt;br /&gt;
* [[Software Architecture]]&lt;br /&gt;
* [[Web Runtime Environments]]&lt;/div&gt;</description>
			<pubDate>Thu, 13 Aug 2026 08:59:37 GMT</pubDate>
			<dc:creator>Dex</dc:creator>
			<comments>https://knowledgebase.pirho.net/wiki/Talk:The_Evolution_of_Application_Delivery</comments>
		</item>
		<item>
			<title>Applications Demistified</title>
			<link>https://knowledgebase.pirho.net/index.php?title=Applications_Demistified&amp;diff=468&amp;oldid=467</link>
			<guid isPermaLink="false">https://knowledgebase.pirho.net/index.php?title=Applications_Demistified&amp;diff=468&amp;oldid=467</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Applications Demystified&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:57, 13 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;= Applications Demystified =&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Summary:&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Summary:&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Applications have existed for as long as computers have been capable of running software, yet the term &amp;#039;&amp;#039;application&amp;#039;&amp;#039; has become increasingly ambiguous. Today an application may be a traditional executable, a web site that behaves like a desktop program, a mobile app installed from a store, a Progressive Web App (PWA), or a hybrid solution combining several technologies.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Applications have existed for as long as computers have been capable of running software, yet the term &amp;#039;&amp;#039;application&amp;#039;&amp;#039; has become increasingly ambiguous. Today an application may be a traditional executable, a web site that behaves like a desktop program, a mobile app installed from a store, a Progressive Web App (PWA), or a hybrid solution combining several technologies.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-467:rev-468:php=table --&gt;
&lt;/table&gt;</description>
			<pubDate>Thu, 13 Aug 2026 08:57:23 GMT</pubDate>
			<dc:creator>Dex</dc:creator>
			<comments>https://knowledgebase.pirho.net/wiki/Talk:Applications_Demistified</comments>
		</item>
		<item>
			<title>Applications Demistified</title>
			<link>https://knowledgebase.pirho.net/index.php?title=Applications_Demistified&amp;diff=467&amp;oldid=0</link>
			<guid isPermaLink="false">https://knowledgebase.pirho.net/index.php?title=Applications_Demistified&amp;diff=467&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;= Applications Demystified =  &amp;#039;&amp;#039;&amp;#039;Summary:&amp;#039;&amp;#039;&amp;#039; Applications have existed for as long as computers have been capable of running software, yet the term &amp;#039;&amp;#039;application&amp;#039;&amp;#039; has become increasingly ambiguous. Today an application may be a traditional executable, a web site that behaves like a desktop program, a mobile app installed from a store, a Progressive Web App (PWA), or a hybrid solution combining several technologies.  This article explores the major application delivery m...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Applications Demystified =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Summary:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Applications have existed for as long as computers have been capable of running software, yet the term &amp;#039;&amp;#039;application&amp;#039;&amp;#039; has become increasingly ambiguous. Today an application may be a traditional executable, a web site that behaves like a desktop program, a mobile app installed from a store, a Progressive Web App (PWA), or a hybrid solution combining several technologies.&lt;br /&gt;
&lt;br /&gt;
This article explores the major application delivery mechanisms, explains how they differ, and demonstrates that most solutions ultimately consist of the same building blocks: code, a user interface, a runtime environment, and a method of delivery.&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
&lt;br /&gt;
The software industry often introduces new terminology to describe evolving approaches to application delivery.&lt;br /&gt;
&lt;br /&gt;
Terms such as:&lt;br /&gt;
&lt;br /&gt;
* Native Application&lt;br /&gt;
* Web Application&lt;br /&gt;
* Single Page Application (SPA)&lt;br /&gt;
* Progressive Web App (PWA)&lt;br /&gt;
* Hybrid Application&lt;br /&gt;
* Widget&lt;br /&gt;
* Cloud Application&lt;br /&gt;
* Software as a Service (SaaS)&lt;br /&gt;
&lt;br /&gt;
are frequently used interchangeably despite referring to very different concepts.&lt;br /&gt;
&lt;br /&gt;
In reality, most application technologies attempt to solve the same challenge:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
How do we deliver software functionality to users in a way that is efficient, maintainable, portable, and user-friendly?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Understanding the evolution of application delivery helps architects and developers make informed design decisions rather than simply following current trends.&lt;br /&gt;
&lt;br /&gt;
== What Is An Application? ==&lt;br /&gt;
&lt;br /&gt;
At its simplest, an application consists of four elements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
│&lt;br /&gt;
├── User Interface&lt;br /&gt;
├── Business Logic&lt;br /&gt;
├── Data&lt;br /&gt;
└── Runtime Environment&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The runtime environment provides the services the application requires to operate.&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
* Windows&lt;br /&gt;
* Linux&lt;br /&gt;
* macOS&lt;br /&gt;
* Android&lt;br /&gt;
* iOS&lt;br /&gt;
* Java Runtime Environment (JRE)&lt;br /&gt;
* .NET Runtime&lt;br /&gt;
* Web Browser&lt;br /&gt;
&lt;br /&gt;
Different application technologies primarily differ in the runtime they target.&lt;br /&gt;
&lt;br /&gt;
== A Taxonomy of Applications ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Applications&lt;br /&gt;
│&lt;br /&gt;
├── Native Applications&lt;br /&gt;
│   ├── Windows&lt;br /&gt;
│   ├── macOS&lt;br /&gt;
│   ├── Linux&lt;br /&gt;
│   ├── Android&lt;br /&gt;
│   └── iOS&lt;br /&gt;
│&lt;br /&gt;
├── Web-Based Applications&lt;br /&gt;
│   ├── Traditional Web Apps&lt;br /&gt;
│   ├── SPAs&lt;br /&gt;
│   ├── PWAs&lt;br /&gt;
│   └── SaaS Platforms&lt;br /&gt;
│&lt;br /&gt;
├── Hybrid Applications&lt;br /&gt;
│   ├── Electron&lt;br /&gt;
│   ├── Cordova&lt;br /&gt;
│   ├── Capacitor&lt;br /&gt;
│   └── MAUI Hybrid&lt;br /&gt;
│&lt;br /&gt;
└── Historical Technologies&lt;br /&gt;
    ├── HTA&lt;br /&gt;
    ├── Java Applets&lt;br /&gt;
    ├── Widgets&lt;br /&gt;
    ├── AIR&lt;br /&gt;
    └── Silverlight&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Native Applications ==&lt;br /&gt;
&lt;br /&gt;
A native application is compiled specifically for a particular operating system and executes directly against that platform&amp;#039;s APIs.&lt;br /&gt;
&lt;br /&gt;
=== Characteristics ===&lt;br /&gt;
&lt;br /&gt;
* Direct access to operating system functionality&lt;br /&gt;
* High performance&lt;br /&gt;
* Deep platform integration&lt;br /&gt;
* Platform-specific development tools&lt;br /&gt;
* Platform-specific deployment mechanisms&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Platform&lt;br /&gt;
! Typical Technologies&lt;br /&gt;
|-&lt;br /&gt;
| Windows&lt;br /&gt;
| Win32, MFC, .NET, WinUI&lt;br /&gt;
|-&lt;br /&gt;
| macOS&lt;br /&gt;
| Cocoa, Swift&lt;br /&gt;
|-&lt;br /&gt;
| Linux&lt;br /&gt;
| GTK, Qt&lt;br /&gt;
|-&lt;br /&gt;
| Android&lt;br /&gt;
| Kotlin, Java&lt;br /&gt;
|-&lt;br /&gt;
| iOS&lt;br /&gt;
| Swift, Objective-C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Advantages ===&lt;br /&gt;
&lt;br /&gt;
* Excellent performance&lt;br /&gt;
* Rich operating system integration&lt;br /&gt;
* Full access to device capabilities&lt;br /&gt;
&lt;br /&gt;
=== Disadvantages ===&lt;br /&gt;
&lt;br /&gt;
* Multiple codebases may be required&lt;br /&gt;
* Higher development and maintenance costs&lt;br /&gt;
* Platform-specific expertise required&lt;br /&gt;
&lt;br /&gt;
== Web-Based Applications ==&lt;br /&gt;
&lt;br /&gt;
Web applications execute within a web browser rather than directly on the operating system.&lt;br /&gt;
&lt;br /&gt;
Historically, a web application was little more than a website capable of processing user input. Modern web applications can be remarkably sophisticated and often rival desktop applications in functionality.&lt;br /&gt;
&lt;br /&gt;
=== Traditional Web Applications ===&lt;br /&gt;
&lt;br /&gt;
Traditional web applications generate pages on a server and return fully rendered responses to the browser.&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
* Early SharePoint sites&lt;br /&gt;
* Webmail systems&lt;br /&gt;
* Content Management Systems&lt;br /&gt;
* E-commerce platforms&lt;br /&gt;
&lt;br /&gt;
Typical architecture:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Browser&lt;br /&gt;
   │&lt;br /&gt;
HTTP&lt;br /&gt;
   │&lt;br /&gt;
Web Server&lt;br /&gt;
   │&lt;br /&gt;
Database&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Single Page Applications (SPA) ===&lt;br /&gt;
&lt;br /&gt;
Single Page Applications move much of the application logic into the browser.&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
* React applications&lt;br /&gt;
* Angular applications&lt;br /&gt;
* Vue applications&lt;br /&gt;
&lt;br /&gt;
Typical architecture:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Browser&lt;br /&gt;
│&lt;br /&gt;
├── User Interface&lt;br /&gt;
├── Business Logic&lt;br /&gt;
└── API Calls&lt;br /&gt;
        │&lt;br /&gt;
        ▼&lt;br /&gt;
      Backend&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This model often provides a more responsive user experience by reducing page reloads.&lt;br /&gt;
&lt;br /&gt;
=== Progressive Web Applications (PWA) ===&lt;br /&gt;
&lt;br /&gt;
A Progressive Web Application is a web application enhanced with browser technologies that allow it to behave more like an installed application.&lt;br /&gt;
&lt;br /&gt;
Common features include:&lt;br /&gt;
&lt;br /&gt;
* Offline support&lt;br /&gt;
* Service Workers&lt;br /&gt;
* Push Notifications&lt;br /&gt;
* Installation from the browser&lt;br /&gt;
* Home Screen integration&lt;br /&gt;
&lt;br /&gt;
A PWA remains fundamentally a web application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Web Application&lt;br /&gt;
      +&lt;br /&gt;
Manifest&lt;br /&gt;
      +&lt;br /&gt;
Service Worker&lt;br /&gt;
      =&lt;br /&gt;
Progressive Web App&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software as a Service (SaaS) ===&lt;br /&gt;
&lt;br /&gt;
SaaS describes a delivery model rather than a specific technology.&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
* Microsoft 365&lt;br /&gt;
* Salesforce&lt;br /&gt;
* ServiceNow&lt;br /&gt;
* Google Workspace&lt;br /&gt;
&lt;br /&gt;
A SaaS platform may internally use:&lt;br /&gt;
&lt;br /&gt;
* Traditional web applications&lt;br /&gt;
* SPAs&lt;br /&gt;
* PWAs&lt;br /&gt;
* Hybrid technologies&lt;br /&gt;
&lt;br /&gt;
The defining characteristic is that the software is consumed as a service.&lt;br /&gt;
&lt;br /&gt;
== Hybrid Applications ==&lt;br /&gt;
&lt;br /&gt;
Hybrid applications attempt to bridge the gap between web technologies and native platforms.&lt;br /&gt;
&lt;br /&gt;
The objective is usually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Write once, deploy everywhere.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Electron ===&lt;br /&gt;
&lt;br /&gt;
Electron combines:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
+&lt;br /&gt;
Chromium&lt;br /&gt;
+&lt;br /&gt;
Node.js&lt;br /&gt;
=&lt;br /&gt;
Desktop Application&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples include:&lt;br /&gt;
&lt;br /&gt;
* Visual Studio Code&lt;br /&gt;
* Discord&lt;br /&gt;
* Slack&lt;br /&gt;
&lt;br /&gt;
Advantages:&lt;br /&gt;
&lt;br /&gt;
* Cross-platform&lt;br /&gt;
* Familiar web technologies&lt;br /&gt;
&lt;br /&gt;
Disadvantages:&lt;br /&gt;
&lt;br /&gt;
* Large deployment size&lt;br /&gt;
* Significant memory usage&lt;br /&gt;
&lt;br /&gt;
=== Apache Cordova ===&lt;br /&gt;
&lt;br /&gt;
Cordova packages web applications inside a native mobile container.&lt;br /&gt;
&lt;br /&gt;
This allows:&lt;br /&gt;
&lt;br /&gt;
* HTML&lt;br /&gt;
* CSS&lt;br /&gt;
* JavaScript&lt;br /&gt;
&lt;br /&gt;
to access selected device capabilities.&lt;br /&gt;
&lt;br /&gt;
=== Capacitor ===&lt;br /&gt;
&lt;br /&gt;
Capacitor evolved from the Cordova model and provides modern native integration for web applications.&lt;br /&gt;
&lt;br /&gt;
It is commonly used with:&lt;br /&gt;
&lt;br /&gt;
* Angular&lt;br /&gt;
* React&lt;br /&gt;
* Vue&lt;br /&gt;
&lt;br /&gt;
=== .NET MAUI Hybrid ===&lt;br /&gt;
&lt;br /&gt;
.NET MAUI Hybrid combines native desktop or mobile interfaces with embedded web technologies.&lt;br /&gt;
&lt;br /&gt;
This approach permits organisations with existing web development experience to leverage their skills while still producing native deployments.&lt;br /&gt;
&lt;br /&gt;
== Historical Technologies ==&lt;br /&gt;
&lt;br /&gt;
Many modern application platforms are built upon ideas first explored decades ago.&lt;br /&gt;
&lt;br /&gt;
=== HTML Applications (HTA) ===&lt;br /&gt;
&lt;br /&gt;
HTAs were introduced by Microsoft as trusted desktop applications based on Internet Explorer technologies.&lt;br /&gt;
&lt;br /&gt;
Characteristics included:&lt;br /&gt;
&lt;br /&gt;
* HTML user interfaces&lt;br /&gt;
* JavaScript and VBScript support&lt;br /&gt;
* Windows integration&lt;br /&gt;
* Reduced browser security restrictions&lt;br /&gt;
&lt;br /&gt;
An HTA can be viewed as a web application running with desktop-level trust.&lt;br /&gt;
&lt;br /&gt;
=== Java Applets ===&lt;br /&gt;
&lt;br /&gt;
Java Applets allowed Java applications to execute within web browsers.&lt;br /&gt;
&lt;br /&gt;
Their promise was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Write Once&lt;br /&gt;
Run Anywhere&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despite early popularity, browser support gradually disappeared due to security, performance, and usability concerns.&lt;br /&gt;
&lt;br /&gt;
=== Opera Widgets and W3C Widgets ===&lt;br /&gt;
&lt;br /&gt;
Widgets attempted to provide small, focused applications that could be installed independently or embedded into larger environments.&lt;br /&gt;
&lt;br /&gt;
Examples included:&lt;br /&gt;
&lt;br /&gt;
* Desktop widgets&lt;br /&gt;
* Dashboard widgets&lt;br /&gt;
* Mobile widgets&lt;br /&gt;
&lt;br /&gt;
Many widget concepts later influenced modern application component architectures.&lt;br /&gt;
&lt;br /&gt;
=== Adobe AIR ===&lt;br /&gt;
&lt;br /&gt;
Adobe AIR combined:&lt;br /&gt;
&lt;br /&gt;
* Flash&lt;br /&gt;
* HTML&lt;br /&gt;
* JavaScript&lt;br /&gt;
&lt;br /&gt;
with desktop deployment capabilities.&lt;br /&gt;
&lt;br /&gt;
AIR was particularly popular for media-rich applications before the decline of Flash technologies.&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Silverlight ===&lt;br /&gt;
&lt;br /&gt;
Silverlight was Microsoft&amp;#039;s browser-hosted application framework.&lt;br /&gt;
&lt;br /&gt;
It provided:&lt;br /&gt;
&lt;br /&gt;
* Rich user interfaces&lt;br /&gt;
* .NET programming&lt;br /&gt;
* Multimedia capabilities&lt;br /&gt;
&lt;br /&gt;
Silverlight was eventually superseded by modern web standards and HTML5 technologies.&lt;br /&gt;
&lt;br /&gt;
== Common Themes ==&lt;br /&gt;
&lt;br /&gt;
Although application technologies vary greatly, most share a common structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
     │&lt;br /&gt;
     ▼&lt;br /&gt;
Runtime&lt;br /&gt;
     │&lt;br /&gt;
     ▼&lt;br /&gt;
Operating System&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The primary differences are:&lt;br /&gt;
&lt;br /&gt;
* Where the runtime exists&lt;br /&gt;
* Which APIs are exposed&lt;br /&gt;
* How the application is delivered&lt;br /&gt;
* How the application is updated&lt;br /&gt;
&lt;br /&gt;
The business logic itself is often remarkably similar.&lt;br /&gt;
&lt;br /&gt;
== Choosing the Right Approach ==&lt;br /&gt;
&lt;br /&gt;
No application technology is universally superior.&lt;br /&gt;
&lt;br /&gt;
Considerations include:&lt;br /&gt;
&lt;br /&gt;
* Performance requirements&lt;br /&gt;
* Platform targets&lt;br /&gt;
* Offline requirements&lt;br /&gt;
* Security constraints&lt;br /&gt;
* Development cost&lt;br /&gt;
* Existing team skills&lt;br /&gt;
* Long-term maintainability&lt;br /&gt;
&lt;br /&gt;
The best solution is often the one that balances business requirements with technical constraints rather than the newest or most fashionable technology.&lt;br /&gt;
&lt;br /&gt;
== Key Takeaways ==&lt;br /&gt;
&lt;br /&gt;
* An application consists of code, data, a user interface, and a runtime environment.&lt;br /&gt;
* Native applications execute directly against operating system APIs.&lt;br /&gt;
* Web applications execute within a browser.&lt;br /&gt;
* PWAs are enhanced web applications rather than a separate application type.&lt;br /&gt;
* Hybrid technologies attempt to combine the benefits of native and web approaches.&lt;br /&gt;
* Many modern solutions are evolutionary improvements upon ideas explored decades earlier.&lt;br /&gt;
* Understanding application delivery mechanisms helps architects make informed design decisions and avoid reinventing previous mistakes.&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
&lt;br /&gt;
* [[Progressive Web Applications]]&lt;br /&gt;
* [[Single Page Applications]]&lt;br /&gt;
* [[Software as a Service]]&lt;br /&gt;
* [[Runtime Environments]]&lt;br /&gt;
* [[Application Architecture]]&lt;br /&gt;
* [[Offline First Design]]&lt;br /&gt;
* [[Opera Widgets]]&lt;br /&gt;
* [[Microsoft HTA]]&lt;br /&gt;
* [[Cross Platform Development]]&lt;/div&gt;</description>
			<pubDate>Thu, 13 Aug 2026 08:57:04 GMT</pubDate>
			<dc:creator>Dex</dc:creator>
			<comments>https://knowledgebase.pirho.net/wiki/Talk:Applications_Demistified</comments>
		</item>
</channel></rss>