InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

What Are the Trends in Technology Today?

Posted by Abel Avram on Jan 20, 2010

Sections
Enterprise Architecture,
Process & Practices,
Development,
Architecture & Design
Topics
Tools ,
.NET ,
Java ,
Technology ,
Agile ,
Platforms ,
Architecture ,
Language
Tags
Trends ,
ThoughtWorks

ThoughtWorks has released the Technology Radar 2010 (PDF) this month, a whitepaper containing ThoughtWorks’ technology strategy and trends in four major domains: Techniques, Tools, Languages, and Platforms. InfoQ looked at this whitepaper in depth to better understand the ideas and suggestions being offered by ThoughtWorks.

For each of the four domains mentioned, ThoughtWorks has a list of items divided in four classes: Adopt, Trial, Assess, and Hold. Adopt means the item is recommended to be used in the enterprise. Trial means the item is worth investing into it but should be used for low risk projects. Assess is for items worth considering and learning how can be used and what are their potential. Hold is for items that do not deserve attention and resources at this time.

image

Techniques

Compared to a year ago, all techniques recommended have moved up one or more notches. “Build pipelines” has moved from Trial to Adopt, “Lean Software Development” from Assess to Trial, while “Emergent Design”, and “Evolutionary Database” has jumped from not being charted right into Trial.

Tools

When it comes to tools, there have been more diverse changes compared to a year ago. IE6 was not considered last year, and now is suggested to be terminated as product. ASP.NET MVC moved from Trial to Adopt. Subversion has moved from Adopt to Trial because “Distributed Version Control” tools have moved from Hold to Trial. The whitepaper mentions rspec and Cucumber as “Next Generation Test” tools pushing the category into Assess. Other new tools have made their debut in the Hold zone, previously not being considered: Google Wave, Language Workbenches, and Polyglot Development Environments.

Languages

Perhaps this section brings the most intriguing suggestions. JavaScript has come from nowhere right into Adopt zone, move explained by the authors as following:

While JavaScript first appeared in 1995, it is only in the past couple of years that libraries such as Prototype and JQuery have helped the language become more accessible to a wider developer audience. As developers continue to embrace JavaScript for developing rich user web applications, we increasingly hold JavaScript in the same level of esteem as any other production language, ensuring that scripts are adequately tested, refactored and maintained.

C# has moved from Hold to the border zone between Assess and Trial due to its advances in the last year:

C# has continued to move forward with the adoption of language features such as lambda expressions, extension methods, object initializers and automatic property setters and getters, all of which are available in the 3.5 release of the language. With the 4.0 release of C#, we will see the introduction of a dynamic keyword and named and optional parameters, which will continue to bring C# more in line with languages such as Ruby and well ahead of the Java language.

The authors mention the fact that Java has been slow in adopting new features lately, the initiative being taken by other languages built on JVM, “languages such as Groovy, JRuby, Scala and Clojure.” They expect enterprises to “begin to assess the suitability of reducing the amount of Java-specific code developed in their enterprise applications in favor of these newer languages.” Because of that, the authors suggest assessing the end of Java as a programming language.

Platforms

Finally, when it comes to platforms there are not many big surprises with one exception: “Rich Internet Applications” which has been downgraded from Adopt to Assess/Trial being on the border between the two. The reason:

Our position on Rich Internet Applications has changed over the past year. Experience has shown that platforms such as Silverlight, Flex and JavaFX may be useful for rich visualizations of data but provide few benefits over simpler web applications.
Given that these toolsets have limited support for automated testing, it would suggest that a more traditional web application stack provides greater value for enterprise development. We recommend only using RIA platforms for rich visualizations incorporated into web applications, not as comprehensive development targets.

Firefox has moved from nowhere into Adopt because it “provides support for the widest range of platforms”. JVM has made the same leap being a “general-purpose virtual machine for other languages such as Ruby, Groovy, Scala and Clojure.” Another platform coming from nowhere is Android which is suggested for the trial phase. iPhone is a hot technology these days, and it is proposed for Adopt.

  • This article is part of a featured topic series on Agile
Javascript & Flex by Winston Dhanraj Posted
Re: Javascript & Flex by Faisal Waris Posted
Java at EOL? Can you take such a thing seriously? by Bojan Antonovic Posted
Re: Java at EOL? Can you take such a thing seriously? by William H Posted
Re: Java at EOL? Can you take such a thing seriously? by Andrea Del Bene Posted
Re: Java at EOL? Can you take such a thing seriously? by Faisal Waris Posted
Confusing recommendations by Paul Grebenc Posted
Extremely ridiculous comments about Flex by SAgar Jadhav Posted
Not agree completly by Ed Pichler Posted
  1. Back to top

    Javascript & Flex

    by Winston Dhanraj

    I had a similar opinion regarding Javascript & RIA in general (winstond.wordpress.com/2009/08/19/solving-the-u...). But after looking at Flex based business app quite recently, I think the review is a bit harsh, especially on Flex.

  2. Back to top

    Re: Javascript & Flex

    by Faisal Waris

    I suppose you can do wonders with javascript these days but I have always found it to be a very stressful language to work with - there are 5 ways to do inheritance! Almost any piece of text can be valid syntax in some context. Debugging is a pain. Even though I have a Smalltalk background, I find javascript to be too loose. C# seems to be hitting the spot especially since it added many of the Smalltalk features that I missed in Java (which is essentially stagnant). I suppose Scala / Clojure would be the same or better but I have yet to learn them.


    I don't think javascript is for the average corporate developer.


    I personally find Silverlight much easier to work with (don't know Flex but I suspect it would be the same) than any Web application framework. I agree that automated testing of RIAs is harder but that is probably just because the test tooling has to catch up.

  3. Back to top

    Java at EOL? Can you take such a thing seriously?

    by Bojan Antonovic

    For me, Java is still a masterpiece! A small and safe language, and a clean API! The introduction of erasure made it unsafe at runtime, but annotations gave new possibilities for working with reflections. And the main question is: What and how many features should a language have? The most important one is the support of safety. Dynamic and duck typing is clearly a drawback. The other part are runtime features: Java made the garbage collector (and small things like array index checking) popular. Are they really thinking that C# 4.0 is a worthy successor? By complexity, C# is to C++ what C++ was to Java, even worse!

    There are things many languages and VMs are missing today (it's a long list). The future lies in more powerful VMs, not in incomplete languages. Support of multi-core processors is a must for the next successor. Java is prepared from the language side.

    Before somebody talks (again) badly about Java, or even speculate of an EOL, (s)he should present a worthy successor which can be used in large projects without being a drawback in safety. The "Java killer" is still missing like the "iPhone killer". It's not impossible, but many successor candidates are a poor replacement.

  4. Back to top

    Re: Java at EOL? Can you take such a thing seriously?

    by William H

    I agree. I still like Java a lot and it is (for me) the sweet spot between solid code, productivity and performance. I'm certainly looking forward to a successor emerging but C# aint it.

    I have to say also that given the calibre of the people involved in this the resulting document seems extraordinarily dumb. Martin Fowler surely must know better. When was a list of language features ever considered a good way to assess the quality of a language? Received wisdom isthe opposite - a list of well chosen features is way, way better than a kitchen-sink full of badly chosen ones. And when did rapid evolution of a language become a good thing? If you actually think about it all the most successful languages – Java, C, even C++ - actual evolve pretty slowly (the fastest on that list is actually Java by miles).

    Conspiracy theory: Thoughtworks got caught out in the Ruby on Rails hype a couple of years ago and now has lots of dynamic language people sitting on the bench with nothing to do so are trying to convince the world that dynamic languages/DSLs and other interesting but niche ideas are the way to build software…

    But seriously, the idea that enterprises should all abandon Java because it doesn’t (yet) have Lambada expressions in almost laughable. Particularly given
    a) It sort of does and has done since 1996.
    b) It will get something more complete this year.

    It will also get an invokeDynamic keyword this year, ARM blocks, and a bunch of other small but useful features. It is also getting some hugely significant improvements to the garbage collectors and other performance gains. Oh and more improvements to multicore support (both Scala and Clojure use java.util.concurrent for their actor frameworks which seems to be me to somewhat undermine another chunk of the argument in this document).

  5. Back to top

    Confusing recommendations

    by Paul Grebenc

    Politics aside, IE8 is almost surely destined to be the most popular browser on the web before long, and yet it is the farthest out on the edge of the circle in "hold" territory. IE8 implements the "IE8 standard", and it simply cannot be ignored.

    On the other hand, the "cloud" made it all the way into solid "adopt" territory, when the concept for many companies is more a marketing term than a technology. Amazon has recently been in the news regarding slowdowns potentially due to overcommitment on capacity. By most other measures this list is quite conservative. Is it really time for any but the adventurous by comparison to "adopt" the "cloud"?

  6. Back to top

    Re: Java at EOL? Can you take such a thing seriously?

    by Andrea Del Bene

    I agree. Many people like the simplicity and clearness of Java syntax and I think they helped it to become popular.
    I just don't understand why adding syntax features makes a language better then others...

  7. Back to top

    Re: Java at EOL? Can you take such a thing seriously?

    by Faisal Waris

    I think Java will be around for a long time - but that does not mean you can't have better languages. I suspect Scala and/or Clojure will find a sizeable base over time.

    Gosling seems to favor Scala

    I believe someone who has done functional programming will miss it in a language that does not support it (to be fair, Java 7 may/will have some support for lambdas).

    Personally, now, I seem to favor languages with good type inferencing over dynamically typed languages.

    Mixin like inheritance is a useful feature (this is missing in C# but not in Scala).

    You can't discount Language Integrated Query (LINQ) in C#.

    None of the above make a language unsafe.

    Tooling support is essential - lack of tooling can greatly hinder adoption. This is a risk for Scala/Clojure.

  8. Back to top

    Extremely ridiculous comments about Flex

    by SAgar Jadhav

    I would say comments about Flex in this article is completely novice and unexplored. I am really surprised by the comment " Experience has shown that platforms such as Silverlight, Flex and JavaFX may be useful for rich visualizations of data but provide few benefits over simpler web applications."
    I would say in that case with this experience you should not even think about writing about RIA and Flex in particular. There is absolutely no truth about the facts mentioned about RIA and specially Flex. I would like to understand the specifics about limited support for automated testing till then I would say that this observation is completely false.

  9. Back to top

    Not agree completly

    by Ed Pichler

    I didn't agree completly with the ThoughtWorks, but it's still a very insteresting article.

Educational Content

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.

Beauty Is in the Eye of the Beholder

Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.

Architecting Visa for Massive Scale and Continuous Innovation

John Davies examines Visa’s architecture and shows how enterprises have architected complex integrations incorporating Hadoop, memcached, Ruby on Rails, and others to deliver innovative solutions.

Max Protect: Scalability and Caching at ESPN.com

Sean Comerford unveils ESPN.com’s architecture, what components are used and why, and the current changes the website goes through.