There is a post on TheServerSide.com discussing a blog entry titled ‘98% of developers just don’t need it’ that is getting a lot of attention today. The blog entry suggests that only 2% of Java developers understand and/or need to know and understand the usage of XA Transactions (for managing distributed resources) and JMS.
I think while in some sense this is true, it is certainly not as low as 2%, that is a gross overestimate. It is true that the majority of systems and therefore developers working on those systems are more than likely only using one database resource, and no other transactional resources at the same time, and therefore will not have a need for XA Transactions. But every developer should be aware of the purpose, need and usage of transactions in a system. Again not all systems will have a need for transactions (for example, single user desktop apps), and we have to appreciate that the the developer community is incredible vast and diverse in terms of systems that we work on and the areas that we tend to specialize in. Just because one developer has tended to work on low end single user applications does not mean that this is typical, and this would be a skewed view of the software development world if that were his opinion. The use and need of JMS for messaging and asynchronous processing is also a more specialized need that addresses a requirement and a problem that not all systems have.
That said, I have had the experience of working on large systems ranging from 100s of concurrent users to 1000s of concurrent users, and in each case multiple database resources were being accessed requiring XA transactions, and also JMS was also being used for integration with other systems and/or for the use of asynchronous processing with queues. I have also worked with many developers who have also worked on these types of system, and even with developers who are integration specialists and whose whole career has centered around messaging systems – JMS and middleware such as MQ Series are their daily bread and butter – they live with this technology.
To sumarize – yes, these are specialized needs, but the needs are out there. If you read the authors article in their blog or on TheServerSide.com and and not knowing any better come away with the conclusion that ‘I don’t need to know stuff like that’ then you will be ill prepared for when you do come across these needs. 2PC and asynchronous processing are tools that every developer should have in their back pocket for when a problem comes up that does need these solutions.