« Software Stocks Update: January 2005 | Main | I Spy With My Little Eye $108MM »
02/04/2005
The Death of Compiled Applications
Compiled applications are dying. They are being ripped apart, piece by piece, until there’s almost nothing left… and it’s good thing. In their place, a new class of execution engines is emerging. These engines can power any kind of application, from spreadsheets to supply chains, and all they need to work their magic is a few lines of structured text. While this trend started at the periphery of applications with functions such as User Interfaces and Data access, it is now migrating to the core of application functionality: business processes, algorithms, semantics, and state. Software will never be the same.
All-In-One
In the beginning, compiled applications were self contained monoliths that included everything necessary to get the job done. Presentation logic, GUIs (such as they were), business logic, configuration information and even data were all bundled into one big pile of compiled code.
Data was the first and most logical component piece to be pulled out of applications and from that a giant industry was created, databases. Later, client-server architectures broke applications into muliple pieces and separated applications functions, but they didn’t actually pull a lot of functionality out of compiled code. With the birth of the web though, applications started to change dramatically.
The web browser changed applications forever by substituting a generic GUI front-end and structured text (in the form of HTML) for a compiled GUI. In this way the browser became merely a generic execution engine. It requested non-compiled text and then translated that text into a unique GUI according to a pre-existing industry standard. By pulling out the presentation logic from compiled apps and making it open and accessible to not only other programmers but basically anyone who could view text, browsers launched the massive wave of innovation and creativity that in turn made the Internet a true “web”. HTML “programmers” swapped HTML tricks and tips liberally. They cut and pasted code from each other’s sites and as time progressed they began to use the power of HTML and HTTP to create composite sites that actually borrowed both content and styles from other sites.
Thus, in just 10 years, the presentation layer of the web has become an incredible laboratory for innovation and creativity with people using the power of HTML’s accessibility and portability to create radical new services, many of which people simply had not thought possible beforehand.
Ripping Out The Heart
With the rise of XML and structured standards for its use in areas such as business processes and APIs (such as BPEL and SOAP), the last vestiges of compiled applications are now under assault. In exposing these inner reaches of the application sanctum as structured text instead of complied code, the standards are setting the stage for a creativity and functionality renaissance on par with what has happened in the presentation layer.
With an application’s core algorithms and processes exposed within structured text, it will now be possible for a great multitude of actors to manipulate, enhance, and transform applications “on the fly”. Not only will this greatly enhance the ability of companies to update and enhance their applications in real time without the need for recompiling, but it allow for business logic, state and processes to be shared across applications and partners. Given that much of this structured text will take the form of XML messages passing between servers and across firewalls it is the message, and not the compiled code that will ultimately become the application.
The Rise of Execution Engines
With the message as the software, the question becomes, what role does complied code have in such a world? The answer is that complied code will increasingly be restricted to standards-based execution engines that simply process XML messages and execute their instructions. Similar to the “dumb” browsers (and emerging RIA containers) on the presentation layer, a new class of execution engines will emerge in the business logic/process layer. These engines will perfect the separation of application content from application infrastructure that application servers initially and yet imperfectly, set in motion.
For example, self contained BPEL servers will likely emerge. Such servers will merely serve as execution engines that process and forward BPEL messages. Such messages will contain the business logic about the process in question and will likely also contain information on the state of the process as well the specific data associated with that particular process. The messages may also evolve to contain the specific algorithms used to evaluate or transform data. With all this “code” embedded in the message, the BPEL engine will be able to process the message without any a priori " knowledge of that particular process.
Already at the data layer a crop of start-ups is building distributed query engines that link together disparate internal and external databases. Many of the start-ups, the most prominent of which is Composite Software, have taken to saying that their products help build “composite applications”. While this statement perhaps mischaracterizes the current capabilities of distributed query engines it does foreshadow and anticipate the day that truly composite applications will be able to be constructed on the fly by running XML messages through standardized execution engines (including distributed query engines) and then returning the results to what ever application, or should I say message, that requested them.
Problems in Paradise
While the death of complied applications may bring great benefits in terms of the flexibility and accessibility of applications, it will also bring great risks. With the “crown jewels” of an application now exposed to the world in the harsh light of structured text, hackers and IP thieves may have a field day. In addition, while enabling a whole new class of users and partners to modify application code may lead to tremendous innovation and creativity, it may also lead to tremendous confusion and almost impossible quality assurance/performance management.
An Explosion of Innovation
Solving such problems, in addition to creating the base execution engines, will be the responsibility of a whole new class of infrastructure software products. While many of these may be extensions to existing development or infrastructure platforms, in all likelihood many will be brand new platforms engineered from the ground up to accommodate a distributed, message centric, non-compiled view of applications.
As these new products come on line and as developers and business partners become comfortable with their use, they will help to set off a new wave of innovation which will be just as, and perhaps more, profound than that set off by browsers and HTML. For while the browser and HTML helped create the “web” by turning the presentation layer in a massive interconnected corpus of content, data, and applications, the dark secret has been that the web is really only skin deep. For beneath the presentation layer applications still exist as tightly compiled islands that rely largely on presentation layer “hacks” to create the illusion of integration. But with rise of execution engines in the business logic/process layer and the migration of application content into messages, the web will at last become fully integrated from top to bottom which should provide an incredibly rich palette for the creation of service offerings the likes of which we can’t even imagine today.
February 4, 2005 | Permalink
Legal Disclaimer
The thoughts and opinions on this blog are mine and mine alone and not affiliated in any way with Inductive Capital LP, San Andreas Capital LLC, or any other company I am involved with. Nothing written in this blog should be considered investment, tax, legal,financial or any other kind of advice. These writings, misinformed as they may be, are just my personal opinions.
Comments