I have 4 yrs experience into java based techs like Core java 1.5, Jsp, servlets, Struts1, Spring(IOC,AOP,ORM,MVC), and liferay portal.
Java also slowly tried to make an entry into Functional Programming with Lambda expression...
So in future, will java be able the defend its status.. or Java will die.?
what should I choose ? Should I stay with Java? or should I move to other functional languages?
Which Functional language is recommended?
While it is possible to go through your career knowing only Java it's probably easier for you in the long run if you learn a popular functional language to add to your toolbox.
It's unlikely that Java will die soon so you don't have to do it for that fear. It's just that you will encounter projects using those languages more likely than was before because more people (ab)use them these days.
If anything learn one just to ease your mind, it's just a matter of if you have the time.
The mind is a strange and wonderful thing. I'm not sure that it will ever be able to figure itself out, everything else, maybe. From the atom to the universe, everything, except itself.
Pankaj Shet wrote:Winston, what about Enterprise Apps?
What about them? I don't think a knowledge of either Scala or Groovy is going to make you any more marketable as an "enterprise" programmer than a good knowledge of Java and JS, and the various alphabet soups of available frameworks.
But then again, "enterprise" seems to be one of these cool buzzwords that everyone loves these days. If it simply means "big", or "complex", or "distributed", or "lots of users", then I've written plenty of 'em; but I didn't need to know any frameworks to do it.
Right now, Scala and F# seem to be the most popular FP languages (there are plenty of others e.g. Erlang, Clojure etc), and from what I've seen Scala is growing fast, so if you want to learn pure FP with static typing, you could start with Haskell then move to Scala or F#.
Also keep in mind that Java 8 has some functional programming constructs. You won't be writing the entire program functionally, but it can make some tasks more efficient. Not learning it is like not learning regular expressions - you can manage, but less efficiently.
No. You should not think of any technology as your career. Liferay is fine for what it does, but it's just a specific application of fairly standard (and in some respects slightly out-dated) enterprise Java technologies. You cannot expect to build a 30-year career on such a narrow basis. I'd be surprised if Liferay were still around 10 years from now, let alone 20 or 30 years.