Monday, February 27, 2012

On Patterns of Software Trends


I've been reading a Java EE patterns book Real World Java EE Patterns by Adam Bien. Lots of good ideas (although I must say it's disappointingly edited). It's like looking into a microcosm of the development experience I've "grown up" into during the last 15 years.
  • Netscape Navigator and the transition from HTML to dynamic pages
  • Applets fail.  Give way to dynamic server processing and JavaScript/ECMA
  • "Thin Client" and "RIA" dominate the 2000's - Fat client offered as opposing architectural choice. Note, most of this was in a push to wrangle the Desktop from Microsoft
  • Java goes to J2EE and Micro Edition
  • Application Server diversity splits and scatters implementations
  • Spring/Hibernate take over where J2EE leaves off
  • SOA comes into its own
  • .NET matures
  • Java EE course corrects major failings of J2EE
  • Sun Microsystems is consumed by Oracle

During this time, of course, both Oracle and Microsoft have provided their own "full-stack" in the same area. Apple became a dominant user interface provider (and therefore platform choice for development) in the last half of the previous decade.

Within both the Java and .NET communities, an explosion of languages fill the space. Knowing all of them to a level of proficiency is not an option for me.  I'm following the rule of 5 languages (more like advice) given by Bjarne Stroustrup.


The TIOBE index has kept up tabs on language popularity (and therefore market penetration). Current top 5 languages:
  • Java
  • C
  • C#
  • C++
  • Objective-C

Anyway, looking at this landscape I now find myself in, I'm trying to discern "best path" for what I ought to know.  Even within that top 5, there is a diversity that speaks volumes about the current programming environment. It's Java - for business (IBM, Oracle, FOSS), C - for low level development, C# - for Microsoft, C++ - for critical performance, and Objective-C - for Apple.

So therein lies the rub.  In development, when is it better to use one over the other? Is platform really the deciding factor in languages still? Did anything ever achieve Write Once Run Anywhere?  Seems like our industry has been chasing that dragon since C++.

One of the primary concepts in the book I mentioned above is this: Patterns exist as workarounds for shortcomings in a programming language or platform. I'd like to cover this in a future posting.

Break's over...

No comments:

Post a Comment