I am an experienced Java developer who is trying to learn web development with Java presently. I also had web development experience with ASP.NET (c#) and PHP. I know what basic concepts (JSP, Servlet, Bean) and looking for a framework to go.
My question is not “What is the best framework for Java” or something similar.
After reading many threads on here and searching on Google for many hours I feel scared and confused. There are so many frameworks and endless combinations. I’m about to change my mind to do this in .net or even PHP.
- Is Java really suitable for very small teams (1 or 2 members) to develop web applications?
- Is Java really suitable for developing web 2.0 applications?
- Isn’t .NET and PHP are far less confusing in this context.
- If choose a framework and after 6 months I decide to use another, is it possible to migrate easily?
- It just feels doesn’t right to spend a same effort that I spent to learn Java to a framework that anytime can be changed or become useless. Am I wrong?
Of course it is, as long as those one or two team members know Java well. This is a ridiculous question that depends on how you’d like to define “suitable”. I’ll err on the side of conservative and interpret “suitable” as “possible”.
Are you asking if JavaFX is suitable, or can the web 2.0 UI technology be Flex or something else? I haven’t used JavaFX myself, but I think Java back ends can co-exist very nicely with web 2.0 front ends. Services are services.
Your wording needs some work. There, I’ve fixed it. Depends on how well you know .NET or PHP. PHP is arguably “less engineered” and more straightforward, but every web app isn’t a web CRUD app. .NET can be as engineered as Java, but it has the perceived virtue of using features that are part of the framework. At least everything is from Microsoft. Maybe you’re confused because there’s more choice with Java.
It depends on the framework and how well you layer your application. I would say that if you layer your code properly things should be modifiable. But frameworks tend to be glue code, so if you depend heavily on the framework it’ll be hard to extract it no matter which one you choose.
Anything can change and become useless. Microsoft can decide to re-write their Enterprise Framework 4.0 in such a way that it’s not backwards compatible. I don’t believe it’s a language flaw – Java isn’t the only one that’s prey to this scenario.
You’re right – you’re always at risk when you take on a dependency. You’re also at risk when you write and maintain everything yourself. You need to choose well to minimize risk, but you can never eliminate it entirely.
My recommendation? Choose Spring and sleep at night. It’s a terrific framework that’s hung in there for eight years and counting, still going strong. It has a great web MVC framework and lots more. The idioms it encourages will make your Java apps better: more layered, easier to maintain, possible to play nicely with other frameworks, minimizing your risk. They’re owned by VMWare now, so they aren’t going anywhere.