Application Platform Concept

application-platformContinuing my application platform rant yesterday, I am going to define what I mean by application platform. There are a lot of definition for application platform in the internet.

Red Hat JBOSS define an application platform as a server, an IDE and a framework kit.

JBoss Enterprise Application Platform includes:

  • JBoss Application Server: The most widely used Java EE-certified app server on the market.
  • Red Hat JBoss Developer Studio: Everything you need to develop, test, and deploy rich web applications, enterprise applications, and service-oriented architecture (SOA) services.
  • Red Hat JBoss Web Framework Kit: A package of developer frameworks and tools to help speed productivity for web and mobile application development.

Source: Red Hat JBoss

While Yahoo defines application platform as something similar to an app store.

The Yahoo Application Platform allows you to reach our users and improve the Yahoo user experience by building and deploying new applications directly onto Yahoo pages, writing code the way you love to write it. We’re looking to you to help us build the next big thing on Yahoo, and in turn we’ll shower you with traffic and users. Sounds like a win/win, doesn’t it? That’s our goal!

Source: Yahoo Developer Network

Kony and Heroku define an application platform as a Platform as a Service, similar to Amazon Web Services. They provide server and management services that the user can use. I have a name for this, and it is called Development Platform, something I will talk about later on in this blog.

While my definition of Application Platform is a set of API that is reusable. In such a way that all I need to add is a User Interface. The platform will be protected by OAuth to prevent unauthorized access and abuse.

I have started this application platform project by creating a project on SourceForge for personal use. At the same time, I am also introducing this concept to IdeaLounge, my workplace.

For now, the platform is divided into three components:

  1. The API component
  2. The UI component
  3. The master UI for controlling API.

The API Component

This is where all API resides, protected by OAuth. The database is also stored here. This component is headless. Meaning it does not have any UI whatsoever.

The UI Component

This is home for UI for the API. This is the application that user will see.

The master UI for controlling API

Since the API is headless, I need a UI for OAuth management. Also I need to have a master UI that will control access to the application.

The components can change as I progress further. I am already thinking putting basic OAuth management into the API component and moving the database to the UI component. Thus removing the master UI component.

Since the UI component is the application itself, I may also remove the UI component altogether.

But those are still ideas going through my mind. We will see what happens next.