In the previous post,
I tried to think of the business constraints that intervene in the
choices of a software architect. In this one, I’ll take a few shots at
guessing which technologies are important nowadays to build software
solutions for these constraints.
I see… I see…
There are so many technologies out there that I will not risk myself
in designing some sort of female magazine test like “tell me about your
application, I’ll tell you what technologies you should use”. That’s a
very exciting part of what I perceive as what is the job of a software
architect: finding the right combination of tools and techniques for a
specific business context in order to develophigh-quality, high-value
and robust software for customers.
That said, there are a few important areas that seem very important
to explore or even master in this world, and more specifically in this
new economy we’re facing.
Productive dynamic Java
Java is a very mature and popular technology, so much so that many
people have predicted its death times and times again. But in my view,
it’s very much alive, especially with recent developments that made
Java development much more productive. Of course,
SpringSource-originated frameworks like Spring and its galaxy have
changed the enterprise Java environment for a long time.
But even more recently, inspiration has come from the “casual
programmer” side with Ruby on Rails and Python/Django yielding even
more interesting developments like Groovy and Grails that combine the
flexibility of a dynamic language with the incredible power and
richness of the Java platform.
In my opinion, Groovy/Grails are about to rejuvenate enterprise development in an incredible way.
Modular Java
There has been a lot of marketing fuzz a few months ago about
something called Service-Oriented Architecture. Unfortunately, although
it was based on common sense, marketers and tool vendors completely
killed the concept in the egg, but still, some important aspects have
emerged and remain limitations of the most popular technology
platforms. One of them is the importance of modularity: the ability to
change one part of a system without touching anything else, whether it
is to adapt them or to restart them.
OSGi (Open Service Gateway initiative) is a standard that has made a
remarkable progression on the server side in the past few months, and
with its massive adoption by major vendors, it’s definitely going to be
something to watch.
Server-agnostic Rich Internet Applications
RIA-enabling technologies compose a very competive landscape: Adobe
Flex, Microsoft Silverlight, Sun JavaFX, and even more niche
technologies like OpenLaszlo, Curl. And I’m not even considering all
those Javascript frameworks and AJAX-generating techniques that I
personally don’t see as viable alternatives in an enterprise
environment.
My technology of choice is definitely Adobe Flex: it’s open (and
it’s even become one of the most impressive examples of Open Source
development lately), it’s robust, it’s server-agnostic (it works with
Java, .Net, PHP, Python, what have you), it offers desktop integration
capabilities, making it possible to cover many of the use cases
mentioned above, and it’s very elegant by design. More importantly it
was one of the first RIA technologies out there, which makes it both
very mature AND very popular.
Native Mobile Development
Mobile development has always been a hobby. Taking useful
applications with you is an old fantasy. For a long time, it’s been so
poor that it was difficult to turn this hobby of mine into a
professional activity. That was until I came in touch with iPhone SDK
development, which really blew me away. For the first time we have some
great mobile hardware with unique usability capabilities, and we have
the software development platform to use those capabilities like never
before. And it’s going to be even better with the release of iPhone OS
3.0.
Of course, it’s about to become a very competitive area too, with
the release of Palm WebOS, Google Android and Nokia Qt. But for now,
the iPhone SDK is by far the most advanced native mobile development
option.
What’s my point?
The purpose of this series is double:
1. try to show why software in general, and software architecture in particular are such exciting fields
2. wake up people who tend to have only one single hammer in their toolbox
Now if in addition to that, it can create a debate, then I have a
few questions for you guys (and hopefully gals P) So, what
technologies do you think are important to know in the current and
future software world?
From http://sebastien-arbogast.com/
No comments:
Post a Comment