Framework Chaos - Java Gurus Please help!
Hi ,
I have been trying to get into ent. java apps development coming from a Non-Java world. One of the most confusing thing about the ent. java world is the number of frameworks. When venturing into a project , How does one choose a framework.
There are so many of them these days...
Struts , JSF( Is this a alternative to Struts?) , Spring , Tapestry , Webmacro , ICEFaces? , DWR? , Hamlet and so on...
What does one do? Im interested in something that is easy to maintain and supports Rapid App Development...I dont want to spend a month just comparing and understanding the various frameworks before I start using one to actually work on the business application! Is there a comprehensive article, book or guide on choosing a framework?
I used to primarily do Domino development and developing a web app that say for example has to hide or display a field based on a URL query string would take a few seconds...serving that up as XML would take a few more seconds to write...Java Web dev has been around for so long...Can any of these frameworks+toolsupport this kind of RAD?
Thanks for your help!!!
javapisthu...
> Hi ,
> I have been trying to get into ent. java apps
> development coming from a Non-Java world. One of the
> most confusing thing about the ent. java world is the
> number of frameworks. When venturing into a project ,
> How does one choose a framework.
Depends on the project, of course.
> There are so many of them these days...
> Struts , JSF( Is this a alternative to Struts?) ,
Struts and JSF address the Web tier of an app, nothing else.
> Spring ,
Spring is more general than either Struts or JSF. It can be used in desktop or Web apps. It helps with persistence, remoting, etc. Spring has its own Web tier, or you can use either Struts or JSF if you choose.
> Tapestry , Webmacro ,
These are alternatives to JSP only, not general frameworks.
> ICEFaces? , DWR? ,
> Hamlet and so on...
Don't know any of these.
> What does one do? Im interested in something that is
> easy to maintain and supports Rapid App
> Development...I dont want to spend a month just
> comparing and understanding the various frameworks
> before I start using one to actually work on the
> business application! Is there a comprehensive
> article, book or guide on choosing a framework?
Not that I know of.
What to recommend depends on the best combination of your capabilities and those of the framework. I would say Spring is the most general choice, but it'd be a lot for a Java novice to swallow.
Don't even get me started on AJAX. 8)
> I used to primarily do Domino development and
> developing a web app that say for example has to hide
> or display a field based on a URL query string would
> take a few seconds...serving that up as XML would
> take a few more seconds to write...Java Web dev has
> been around for so long...Can any of these
> frameworks+toolsupport this kind of RAD?
This doesn't tell me enough to allow me to answer yes or no.
%
One rule of thumb to follow is to choose a popular framework. Popular doesn't equate to Technically Best, necessarily, but there are reasons for it.
If you need support after a couple of years, because you upgraded some component and now the framework's broken, you have a better chance of getting support.
You won't have consultants reviewing your application and dissing you for choosing something they never heard of.
You have a better chance of finding other people who already know the framework and don't have to be trained before they can maintain your application.
Anyway, you're going to have to throw the application out and rewrite it in a few years because it doesn't use the latest fads^H^H^H^H tools (see "Consultants" above), so don't worry too much about it.
Duffymo,
Thanks so much...
Here is a link to hamlet
http://www-128.ibm.com/developerworks/web/library/wa-hamlets/
From the information you provided , I think there is a definite need for a book to help PMs with a clear guide on when to use which framework type book...
But I still keep wondering...Which framework can provide the Rapid Web App Development in Java thats available in other platforms.
javapisthu
Hi ,
I worry there are too many cooks and recipes out there...
Its great in one way...but in another sense none of the frameworks get mature...
By the time you are learning Struts you have to learn Spring...By the time you start implementing spring, winter will be there...
Developers are spending way too much time on learning frameworks than writing code to solve business problems...
I think the only option left for big enterprise is to follow the lead of the giants like IBM, Oracle etc. If IBM tools support Struts , JSF...go with that...
You dont see spring in there...then wait...?
javapisthu
> Hi ,
> I worry there are too many cooks and recipes out
> there...
> Its great in one way...but in another sense none of
> the frameworks get mature...
Yes they do. Struts is considered quite mature. It's been around since 2000 or so. There isn't any development ongoing. Even the original developer has moved on to other things.
> By the time you are learning Struts you have to learn
> Spring...By the time you start implementing spring,
> winter will be there...
That's because it became apparent that Struts was limited.
Believe me, if you understood enough about the underpinnings of the two you'd realize that they're very different. You can consider Struts a subset of Spring.
> Developers are spending way too much time on learning
> frameworks than writing code to solve business
> problems...
No, this is a healthy thing. People are learning how to do things better all the time and not standing still just for its own sake.
It's one of the burdens of this field: change is rapid, and you have to be learning all the time to keep up. Accept it or risk obsolesence.
> I think the only option left for big enterprise is to
> follow the lead of the giants like IBM, Oracle etc.
> If IBM tools support Struts , JSF...go with that...
No, wrong. Embrace learning forever. Don't worry about what the big companies do. They're conservative and tend to be the last ones to pick up on what's happening. It's better to keep your ear to the ground and see what's coming on your own.
> You dont see spring in there...then wait...?
Nope, dive in and learn it. The concepts behind it will persist. The more you learn, the easier it becomes.
Maybe you should go back to your Web development. It's safer and easier there.
%
Duffymo,
Thanks for encouragement...
I will start looking into Spring...
But I dream of a day when I can just write code to implement the business logic and not worry too much about the implementation details...
For example I would write code for something like
"if currentbid is > previous bid and time=xyz then close the auction"!.
The underlying tool/application/server can implement this in Struts , JSF etc.
I'm not trying to run away from learning new and better frameworks...but I think business owners realize better RIO when Im writing business logic code...?
Probably BPEL (Business Process Enterprise Language) comes close. I dont know too much about it...but I think it looks like a 4GL which gets later translated to Java.
Thanks again...
javapisthu
EGL is Enterprise Generation language....but I think its mainly targeted toward legacy developers and helping them get into J2EE.
> But I dream of a day when I can just write code to
> implement the business logic and not worry too much
> about the implementation details...
>
> For example I would write code for something like
> "if currentbid is > previous bid and time=xyz then
> close the auction"!.
An auction framework might allow you to do such a thing, but I don't see how this will apply to the problem of finite capacity scheduling of a shop floor.
> The underlying tool/application/server can implement
> this in Struts , JSF etc.
No, not Struts or JSF, because both of those know nothing about underlying business problems. They're Web view frameworks, nothing more.They're ignorant of the details that you capture in your Actions.
> I'm not trying to run away from learning new and
> better frameworks...but I think business owners
> realize better RIO when Im writing business logic
> code...?
Spring is more of what you want. It takes care of more plumbing than either Struts or JSF.
But it doesn't come close to your auction scenario cited above.
> Probably BPEL (Business Process Enterprise Language)
> comes close. I dont know too much about it...but I
> think it looks like a 4GL which gets later translated
> to Java.
Now you're getting closer to what you're talking about. You see that you won't be able to do what you want with the auction until there exists an auction framework. That framework won't apply to finite capacity shop floor scheduling or real time control of a vehicle or a medical practice management system.
See the problem? There IS no single business framework possible, because all those problems are so different.
%
