Featured in
Architecture & Design

Mini-talks: The Machine Intelligence Landscape: A Venture Capital Perspective by David Beyer. The future of global, trustless transactions on the largest graph: blockchain by Olaf Carlson-Wee. Algorithms for Anti-Money Laundering by Richard Minerich.

Featured in
Process & Practices

In-App Subscriptions Made Easy

There are various types of subscriptions: recurring, non-recurring, free-trial periods, various billing cycles and any possible billing variation one can imagine. But with lack of information online, you might discover that mobile subscriptions behave differently from what you expected. This article will make your life somewhat easier when addressing an in-app subscriptions implementation.

Featured in
Operations & Infrastructure

Mini-talks: The Machine Intelligence Landscape: A Venture Capital Perspective by David Beyer. The future of global, trustless transactions on the largest graph: blockchain by Olaf Carlson-Wee. Algorithms for Anti-Money Laundering by Richard Minerich.

Featured in
Enterprise Architecture

Mini-talks: The Machine Intelligence Landscape: A Venture Capital Perspective by David Beyer. The future of global, trustless transactions on the largest graph: blockchain by Olaf Carlson-Wee. Algorithms for Anti-Money Laundering by Richard Minerich.

What Are the Trends in Technology Today?

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.

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.

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.

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.

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 givena) 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).

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"?

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...

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.