The recent new technological changes have brought about a sea change how we go ahead designing applications. Some of the technologies that i believe will have a pro-found effect on how we design and create our applications are

  • OSGi - The OSGi framework is a module system and service platform for the Java programming language that implements a complete and dynamic component model, something that does not exist in standalone Java/VM environments. Applications or components (coming in the form of bundles for deployment) can be remotely installed, started, stopped, updated and uninstalled without requiring a reboot; management of Java packages/classes is specified in great detail. Life cycle management is done via APIs which allow for remote downloading of management policies. The service registry allows bundles to detect the addition of new services, or the removal of services, and adapt accordingly. - Wikipedia. Designing new applications as OSGi bundles will require a different design mindset. Adding new features to enterprise applications will become easy. Maintenance and support cost will come down drastically. 
  • Distributed data systems - Technologies that allow us to scale and distribute our data have become stable and are being used in large applications. Handling petabytes of data have become a norm and social networking sites are doing it on a regular basis. Some of the open source technologies in the space like Hadoop, Cassandra, HBase Hive are mainstream and are all ready for use by the enterprises. 
  • Cloud Computing - Infrastructure as a platform has come into its own. Amazon EC2, RackSpace, GoGrid and others have become mainstream. Hundreds of companies are running their business on the cloud today. All of the them have launched or in the process of launching private clouds initiatives for the enterprises. Ability to connect from cloud to the enterprise data servers will mean, enterprise need not maintain costly data centers for their applications.

    Second part of the cloud is the emergence of SaaS enabled applications to connect with. Enterprise applications do not create functionality or download/deploy boxes for application features. Functionality like CRM (, Analytics (Google Analytics, Omniture, Unica etc), Payment Gateways (PayPal), Authentication (Open ID, integration with facebook, twitter etc), Web 2.0 tools (like blogs, discussion forums, online chat, bookmarking etc), Database (Amazon RDS), Source Control, Defect tracking and score of others on cloud, will mean application design will be an integration with multiple SaaS vendors with easy to use and published API's (most likely as RESTful web services)

    Do let me know, what do you think? Share your thoughts on what else you see will change the application design and development landscape !
Reblog this post [with Zemanta]