What will be the future of programming platforms?
The industry is moving in a way where the old method of releasing a programming language in a silo may raise questions. Is it enough to only release a new version? I am not sure about the answer, but some radical change might be needed.
Let me give an example. Oracle is releasing Java versions with new features and capabilities, but let's think of a scenario where Oracle starts releasing “Java Platform Appliance”. This platform will include the latest version of JDK/JRE and some pre-defined stack of related and commonly used software, as well as some references or example implementations (more commonly known as accelerators) to build custom applications. The appliance platform can include the following most commonly used packages:
A Solr-based search engine, which will have some ready-made setup. There will be pre-defined templates to create different kinds of search applications.
A SMACK-based platform to augment Big Data processing — easy plug and play framework for real-time and batch processing.
A Spring-based integration template and accelerator for some common and popular integration brokers like ActiveMQ and RabbitMQ.
A Spring-based batch platform (a reference implementation of Spring batch module).
Some reference implementation to connect to NoSQL databases (use of Spring-based framework may work here).
A web-based template to create a Spring-Hibernate (ORM) and Spring MVC (Web tier) application.
Reference implementation of logging using SFL4J.
A reference OSGI implementation for modularization.
Build packages using Ant, Maven, and Gradle.
The goal of this appliance is that developers can start using the platform as an easy sandbox to build common web applications. The common design patterns, principles, and best practices will be followed during the building of these accelerators.
What do you think? Will it change the way we look at the platform for programming languages now? Will it help to reduce time-to-market?