views:

547

answers:

3

Hi,

I am writing this post to put up an open ended questions to see

  1. What are the upcoming trends in the software industry and what are its impact from a Java/ Java EE Developer point of view ?

  2. What technologies are evolving in market place and how java is planning to stay on the top of race on this new era of Software Industry ?

Any insights would be highly appreciated as it would help many veterans and newbie Java/Java EE Developers to define precisely their career path.

Thanks.

+2  A: 

Parallelization is going to be huge. Knowing how to write scalable and maintainable code for parallel systems will be a big plus.

Somewhat along the same lines, functional languages have been getting a lot of attention lately. Even if they don't become practical for enterprise products, it'd be good to spend some time learning the ropes of functional programming. Coming from a Java background, you might find Clojure a good choice to play around with.

As much as it's a buzzword, storing and computing in the cloud is gaining traction. This trend is only going to become more pronounced as computing goes increasingly mobile and ubiquitous. It's largely unclear how exactly you'd prepare for this, but watch trends carefully and study accordingly.

Evan Meagher
@Evan: What are some of the book/resources which you would like to recommend for parallelization as well as which language would you recommend to start with functional languages ?
Rachel
Check out Scheme. It's a Lisp dialect that's very popular for education. You might also check out ML or Haskell.A lot of technically non-functional languages have functional aspects. For example, Javascript treats functions as first class objects and Ruby uses blocks in a rather functional manner. The trick is to at least become aware of these tendencies and be able to use them when applicable.
Evan Meagher
Ah, I wasn't expecting you to expand your answer, so I ended up writing basically the same thing. :)
David Crawshaw
+4  A: 

Processors have stopped getting faster, and the number of processors available is growing rapidly. So software needs to become concurrent.

Compilers can't automatically parallelize imperative/object-oriented code. So programming styles have to change. Algorithmically simple concurrency can be achieved using libraries and extensions to existing languages. You can use the concurrent package in Java, or better yet the CUDA extensions to C.

But building complex, fine-grained concurrent systems quickly runs into a complexity wall in languages like Java. The answer is functional programming. Erlang and Scala offer actor concurrency. And Haskell's purity means it can go even further, with software transactional memory and nested data parallelism.

So learn a functional programming language. As a Java programmer, the easiest way to go is learning Scala. But Haskell is good for the soul.

David Crawshaw
Clojure is worth a look as well. It runs on JVM and has STM.
Dave Ray
+2  A: 
Pascal Thivent
+1 for great post showing the big picure. I wonder why nobody sees future in mobile devices (Android) or semantic web?
cetnar