I have blogged previously regarding the events that affected me most significantly in the world of software development in 2007 and 2008. In this post, I do the same for 2009 with the usual caveats: there is no way to truly measure what is most significant and even if there was, the totals would be different for different people. A final caveat is that these things seem important now, but the real question is which of them will still seem significant five years from now and beyond.
In 2009, several of the most significant developers had obvious ties to current economic conditions.
Dustin's Top Ten Software Development Developments of 2009
10. Mergers and Acquisitions
Mergers and acquisitions occur each year, but 2009 seemed to have more than normal and featured one of the biggest acquisitions in the relatively short history of software development. In fact, the biggest acquisition is so big, that I'll reserve its own item to cover it. Not counting The Big One, other significant acquisitions in 2009 included SpringSource acquiring Cloud Foundry and then SpringSource itself being acquired by VMware and Terracotta acquiring ehcache and Quartz. Other examples include Oracle's acquisition of Virtual Iron and GoldenGate, Rackable Systems's acquiring of SGI, Microsoft's acquiring of Interactive Supercomputing, and Google's acquisitions of companies such as reCAPTCHA and Teracent.
9. The Changing Landscape of Software Development Conferences
2009 appears to mark a significant shift in the types of conferences that we will attend in the near future. Well-known and long-established conferences such as Colorado Software Summit and SDWest and SD Best Practices terminated their long-running tradition in 2009. There is speculation that 2009 JavaOne may have been the last (or second-to-last). Even if we have not seen our final JavaOne, there is now at least "controversy" regarding JavaOne's place in relation to DEVOXX.
Another interesting observation regarding software development conferences in 2009 is Java.net editor Kevin Farnham's observation that "Twitter coverage of conferences seems to be overtaking blogging, at least for as-it-happens coverage."
8. Java IDE Wars: IntelliJ Community Edition
When someone brings up the subject of Java IDEs, there are four that come to my mind. In recent years, Eclipse and NetBeans have dominated discussion of Java IDEs due to their open source and no cost nature. Oracle's JDeveloper has been dominant in shops that make heavy use of Oracle products. Although not open source, JDeveloper has been freely available for several years (essentially since 2005 JavaOne). IntelliJ IDEA has been the only one of these four dominant Java IDEs that has not been available without charge. That changed in 2009.
IntelliJ IDE now comes in a freely available, open source Community Edition and in the more traditional Ultimate Edition. I have blogged previously on the IntelliJ IDEA Community Edition and what it might mean.
Not only has the availability of an open source community edition of IntelliJ IDEA potentially changed the Java IDE landscape, but future events are likely to do so as well. Oracle's acquisition of Sun makes things interesting because Oracle already owns the proprietary JDeveloper, contributes significantly to Eclipse, and will acquire Sun's current rights to NetBeans with the Sun acquisition. In other words, Oracle will most likely be associated with three of the four major Java IDEs by early 2010.
It may seem like a minor detail, but I have some concern that the movie in the Twilight Saga called Eclipse will bump the Eclipse Java IDE right off the Google searches. :)
7. Bing Search Engine
The IDE is not the only useful tool for a developer. It can be difficult to remember what it was like to develop and debug software without extensive online resources readily accessed via powerful search engines. I remember fondly the days of Infoseek, but as good as that search engine was, it could not compete with the power of the Yahoo! search engine that would replace it. The Google search engine has been my favorite for years and its extensive use has led to the coining of new words. However, the release of Microsoft's Bing search engine is, at the very least, likely to improve our ability to search rapidly for data due to the competitive environment in the search engine space. I have found Bing to be useful as my second search engine that I use when Google search results are not providing what I want. The search engine aggregation site Dogpile Web Search conveniently brings the best of Google, Yahoo!, Bing, and Ask.com together in one site.
In last year's countdown of significant software development happenings, Scala made the "Honorable Mention" section. James Iry (a contributor to Scala Blog) made some compelling arguments for why Scala itself and Scala as representative of a larger movement had earned more than Honorable Mention. This year, it did make my top ten because of its undeniable growing popularity and the obvious impacts it is having on other JVM languages and on concepts of how to develop software (especially JVM-based concurrent software). It seems to currently have more momentum than other languages such as Erlang and Clojure.
As evidence of the growing popularity of Scala, witness the several books on Scala. Bill Venners has explained some of the features that have made Scala desirable in Bill Venners on the Rise of Scala and Getting Dynamic Productivity in a Static Language.
5. Java SE 7 News ... Again
No matter what it is called (Java 7, Java SE 7, JDK 7), the next major release of Java continues to make news despite not being delivered in 2009. It now appears that JDK 7 will be released later in 2010, but in 2009 we started to get a much clearer picture of what will be in this next version of the Java programming language. Closures, which were originally thought to be out, now sound like they may be back in JDK 7. New Java packaging and modularity concepts have led to the now famous (at least in Java circles) quotation, "The classpath is dead." Project Coin has some nifty features and syntactic sugar that appears destined for JDK 7. See Alex Miller's excellent Java 7 page for details on other aspects of Java 7.
In my countdown of significant software development developments of 2008, I listed dynamic JVM languages in the honorable mention section. This year, Groovy earned its own mention and earned its way into the top ten proper.
The year 2009 saw new releases of Groovy with the final release of 1.6 (18 February 2009), with versions 1.5.8 and 1.6.1 (7 April 2009), and Groovy 1.7 (22 December 2009). There were some very nice new features added to Groovy in the 1.6.x and 1.7 releases.
The announcement of the 1.7 release refers to Groovy as "the most popular and successful dynamic language for the JVM!" This certainly seems to be the case. For evidence to back up this claim, witness the relatively high number of books on Groovy (and Grails) now available. Other evidence of the popularity of Groovy is provided by the existence of a DZone area dedicated to Groovy (Groovy Zone) and the unusually high number of "up" votes for the DZone article highlighting the Groovy 1.7 release (~230 at time of this writing compared to ~20 for announcement of release of Java EE 6).
I think that one of Groovy's greatest appeals is that it can be so easily learned and applied by experienced Java developers. Just as important is the ability to use it for building scripts in the development process, using Groovy-based build tools, and even being able to use Groovy to write full applications. The ability to choose at what level to expose Groovy (just in the building or in the actual production software) makes it appealing to a wider audience. An organization that is not comfortable using Groovy in its production applications, for example, could still find great benefit in using Groovy to build its production applications. In fact, the focus of my RMOUG Training Days 2010 presentation (Applied Groovy: Scripting for Java Development) is on using Groovy in this way.
3. Java EE 6
The December release of Java EE 6 is a significant development in the enterprise space. This release offers many attractive new features such as web profiles, Managed Bean 1.0 (JSR 299/Web Beans and JSR 330; not to be confused with MBeans or MXBeans of JMX fame), standardized database resource definitions, EJB 3.1 (JSR 318), Servlet 3.0 (JSR 315), JPA 2.0 (JSR 317), and inclusion of JAX-RS 1.1 (JSR 311),
A recent series of articles introducing new features of Java EE 6 complement the Java EE 6 Tutorial. They are "Introducing the Java EE 6 Platform" Part 1, Part 2, and Part 3.
2. Programming Environments for Mobile Devices
The year 2009 saw some major announcements and releases related to software development for mobile devices. In particular, I found it interesting that Adobe plans to support developing for the iPhone using Flash (using ActionScript with Flash Professional CS5).
The second major development in this space was the release of Android 2.0 SDK (October) and 2.0.1 SDK (December) as well as the release of the Motorola/Verizon Droid, which supports development of applications using the Android SDK (and the Dalvik virtual machine). If this wasn't enough, Google also announced the release of the Android Native Development Kit (NDK) for Android developers to use C/C++ in performance-critical portions of their applications.
1. Oracle Buying Sun
Almost immediately after we all heard that IBM had dropped out of negotiations to purchase Sun Microsystems, we heard that Oracle intended to purchase Sun. Although this was originally announced in April 2009, the deal is still not finalized due to (at least ostensibly) European Union concerns regarding MySQL. However, recent word is that a deal has been struck between Oracle and the EU and the deal is expected to finally go through early in 2010.
This acquisition is huge. There is much speculation (including in my own blog) regarding the future of various Java-related products, of various open source products of which Sun is the primary sponsor, and of Java itself under Oracle stewardship. Despite this speculation, most of us have no concrete idea of what will happen and are waiting to find out. Even developers who do not use Sun products, Oracle products, or Java-related products are likely to be at least indirectly affected by this acquisition because it will almost certainly affect the entire software development competitive landscape.
The following are developments that did not make my top ten, but are significant or potentially significant.
It is difficult not to tire of all the new programming languages that promise to be the next big thing and to do everything for the developer short of slicing bread. Still, the attention showed on Google's Go programming language (not to be confused with the Go! language) warrant keeping an eye on this language. Go's Language Design FAQ describes Go as "an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language."
Go is a "systems programming language" which runs on Linux or MacOS and seems to be aimed primary at C and C++ developers as evidenced in both the Go Tutorial and the Go for C++ Programmers page.
The software development corner of the blogosphere was filled with blog posts regarding the Go announcement in late 2009. Some of the blogs and reviews of the language (only a small subset) that provide insight into the language itself include Twelve Things to Know About Google's Go Programming Language, Is Google's Go Language Worth Learning and Teaching?, Google's New Language: Go, and Facts of Google's Go Programming Language. For a contrarian opinion regarding Go, see Google Go Not Going Anywhere.
The fact that Google's Go is still considered "experimental" (the FAQ states about Google's internal use of Go: "implementation isn't quite mature enough yet for large-scale production use") means its highest ranking I could give it is "honorable mention." That fact that it's associated with Google and individuals such as Rob Pike and Ken Thompson is what, in my mind, justified this experimental language making the list at all. Note, for example, that the noop language did not make this year's list.
When it comes to cloud computing, I remain a skeptic. Having said that, many very bright people who I truly respect have wagered significant time and resources on cloud computing initiatives, so I cannot completely dismiss it out of hand. Regardless of where its future lies, there is no question that it has been talked about a lot in 2009 and hence it made the "honorable mention" portion of this list. If it turns out to be even half as successful as some of its ardent supporters claim it will be, it is likely to make the Top Ten proper in a future year.
There are several resources for contrarian (or at least "hype countering") opinions regarding cloud computing. These include Software Development's Winners and Losers, 2009 Edition (which lists "cloud hype" as a winner and "cloud reality" as a loser), Open Source Guru Rails Against Cloud Computing 'Hype', Cloud Computing is a Trap, Warns GNU Founder Richard Stallman, and CIO Cloud Computing 101: Problems with Clouds.
For every negative article and blog post on cloud computing, there seems to be many times that number of positive articles and blog posts. A small sample of these includes Cloud Computing: Hype Versus Reality, Cloud Computing: Hype or the Next Big Thing?, Oracle Cloud Computing Center, 2009: The Year the Government Discovered Cloud Computing, and Cloud Computing Grows Up.
The Demise of Geocities
The end of the the previously freely hosted Geocities pages and sites was significant to me in 2009, perhaps at least partially due to a biased nostalgia due to having a simple home page hosted there for many years. The end of the once highly trendy and popular web page hosting site not only meant the potential loss of historically valuable information, but also served as a reminder that technologies and peoples' desires for technology change rapidly. For software developers in particular, it is a reminder that what works for us today may not sell tomorrow.
Economies of Open Source
In the blog post The Problem of the Open Source Commons: Harsh Economic Realities of Open Source Software, I wrote about the struggle for sponsors of open source software to earn enough from implementation and support of the open source product to justify the time and resources invested in that product. This has been a long-identified issue with open source software development, but 2009 has seemed to bring renewed focus on the subject.
In 2009, we learned of the impending sale of one of the major open source sponsors, Sun Microsystems, to Oracle. We also learned of the economic struggles of open source development from those who know firsthand (Clojure and JFreeChart are just two examples).
I am not the only one who has written in 2009 about the economic struggles related to open source development and use. Open source is listed as both a winner and as a loser in Software Development's Winners and Losers, 2009 Edition. In the blog post Elinor Ostrom, the commons problem and Open Source, Aldo Cortesi also looks at the problem of the commons from an open source perspective.
Sponsors of open source software continue to struggle with how to get paid for the time, effort, and resources they invest in these products. Dual licenses have been lauded as one way to do this, but the complications associated with that approach have led many product sponsors to use licenses that are less burdensome to end users (partly to gain users), but that usually leads to reduced revenues. Some sponsors are financially successful with development of open source products, but many are not. I expect the general nature of open source to continue to evolve to meet different financial incentives.
There is much to like about the economics of open source as well, as highlighted in Open Source Became Big Business in 2009. This article is very positive about the future of open source. I think that open source's future is very bright, but there are some potential pitfalls to avoid.
Google Chrome OS
The announcement of Google Chrome OS made big waves, but I would like to see more long-term effect from this before making it in the top ten.
The DZone article Looking Back at 2009 for Java highlights some of the same things I highlighted here, but with a Java focus. I have cited the Software Development's Winners and Losers, 2009 Edition here several times.
2009 was a year where the economy, mergers and acquisitions, and other "business concerns" were as big for software developers as any technological advancements. Most of these developments were highly interrelated as well. It appears that many of the trends that these developments are examples of will continue on into 2010.
Did I miss a top software development development of 2009 that deserves mention here? If so pleas comment and specify that missed developnent.