The 10 events listed below were inflection points, but they don’t capture several trends that occurred without the benefit of a single, breakthrough event. The adoption of Web services and the replacement of SOA by REST was one trend that unrolled unspectacularly but inexorably. Likewise, AJAX, Web 2.0, and RIA (how the terms evolved!) are trends that are likely to shape programming in the future in profound ways. This will be especially true if the latest trend, cloud computing, becomes more widely accepted, as it will lead more apps to have Web interfaces.
No matter, how you look at these events and trends, it’s clear that the world of software development is far more complex and exciting today than it was 10 years ago.
1. Ant Released (2000)
Prior to Ant, there were numerous options for building applications. All of them—from make to autoconf—were horribly outdated. They required lots of knowledge to do anything more than trivial tasks, and they were marked by all kinds of odd peculiarities. With Ant, Java developers had a robust build system with numerous tasks predefined. Many tools have improved on Ant (Rake, Gradle, etc.), but all of them were possible because Ant pioneered the new direction.
2. .NET Shipped (2000)
Microsoft’s release of .NET was the company’s response to Java, and it showed that Redmond was still remarkably capable of embracing the breakthroughs of other vendors and extending them in new directions. .NET was fast, albeit not portable, and it supported multiple languages that could all interoperate. Moreover, .NET shipped with C# which took Java’s best syntactical features and added useful innovations. With .NET, Microsoft opened a new, highly successful chapter in its software development history.
3. Virtualization Emerged (2001)
VMware Workstation was a solution squarely aimed at developers: Run another OS on your current system and you can test portability with ease. It was clunky and very slow, but it worked. Developers at ISVs and large enterprises bought enough copies of Workstation that VMware was able to keep enhancing it until EMC saw its potential application in IT. The rest, as they say, is history.
4. Spring Framework Appeared (2002)
Spring was the first successful Web framework for Java designed with ease of development mind. J2EE, the then-competing solution from Sun, was designed from first principles, and succeeding releases of the product, now called Java EE, have tweaked the monolith to fit developers’ needs. Rod Johnson’s Spring—first published in a book—was immediately popular because he understood what users wanted and needed. All successful frameworks since—Ruby on Rails, Grails, Tapestry, etc.—have followed this model.
5. Ruby on Rails Shipped (2004)
RoR made a radical commitment to “convention over configuration,” and it shipped a toolbox that made building usable sites easy. It took Spring’s developer-centricity, removed the enterprise aspects, and added a sleepy language that was a delight to use. In the process, it anchored Ruby in the developer’s mindset and showed that RAD need not mean “quick and dirty,” but quick, elegant and reliable.
6. J2SE 5.0 Remade Java (2004)
Until the release of Java 5, the language’s reputation suffered rightfully at the hands of many critics who mocked its lack of modern features. Version 5.0’s addition of generics, enums, varargs, concurrency utilities and annotations made the language much more usable and accepted.
7. Git Got Going (2005)
Prior to Git, the cat’s whiskers in SCM was Subversion, which had finally displaced its little-liked, open-source predecessor, CVS. Few people foresaw then how distributed the development world was about to become, except for Linus Torvalds, who understood that a distributed system’s “everything is local” metaphor coupled with simple branching would be the crucial needed features.
8. jQuery Emerged (2006)
9. Groovy Rocked Out (2007)
While Groovy had a long gestation, its development decisively demonstrated that the JVM could serve as a fine platform for scripting languages. Its development paved the way for JRuby and JavaFX, and it resolved questions about Java scripting that arose when Jython went quiet. Groovy’s coattails extend to Grails, Gradle and a host of other developer tools.
10. iPhone Called (2007)
Prior to the release of the iPhone, the world of apps for phones and handheld devices was small and filled with predictable applications: calendars, address books, MP3 players, basic games, and the like. Then Apple’s iPhone launched to mass excitement and stimulated a boom in cottage ISVs cranking out thousands of apps, from the silly to the imaginative to the useful. The Apple iPhone, and now Google Android, show that small form-factor applications are an integral and fast-evolving part of the software market.