I once learned Java not to
> They simply exist because people are
> intensely trying to find new ways to tackle old and
> yet unresolved problems.
I thought it was because none of the existing "web frameworks" allow you to build the Rich applications that users really want to use. Therefore, more "web frameworks" spring up every few months to try and tackle problems solved by Desktop developers a decade or more ago. Maybe I'm over simplifying it, though.
Unfortunately, that's true. In my opinion, the wasted time was driven by the big vendors. Afterall, IBM, Oracle, BEA, etc. can't make much money from IDE licenses. However, if you MUST license an app server to deploy an "application", well now you're talking big bucks. I mean all of us work for a big Internet company like Google, right? :-)
as said, there's a point in which it gets to be too much of a good thing.
Though it's slowing down a bit and there's some consolidation there was a time not too long ago when a new web framework for Java was released somewhere just about every day.
The differences were often minimal, the bugs plenty. Had those people joined forces with an existing project rather than go their own way they could have had the same thing they coded themselves in the context of that project instead, making it better for everyone.
Of course some concepts are irreconcilable with any existing "framework" and do warrant their own project.
Things like Struts and Spring are too different at heart, shouldn't be one product.
Just as an example, I've myself coded 3 web frameworks over the last decade. The first predated any of the existing frameworks by several years, so there was nothing else out there to use.
The second I was hired to maintain that I'd not written myself, so again not my decision (I'd have chosen to use an existing framework instead).
The third I wrote because all the existing ones out there were massive overkill for what I had in mind. Had something like Spring MVC existed at the time and I'd been aware of it I'd have used that instead.
None of them were ever released publicly, only for internal use in organisations I worked in.
For each I initiated development there were valid reasons, but most open source "frameworks" seem to be someone's hobby pet project released in a bout of either desperation because the author is stuck and needs help or vanity to have their names in the news for a while.
So yes, there are too many frameworks. But I do see the industry consolidating somewhat, the chaff being separated from the wheat and most of the hobby projects slowly fading into the gloom of abandonment in the deeper crevices and caverns of sourceforge where they'll amaze future digital archeologists as to how primitive Java Man could have created such things and survived.
It is now for us to select those few that are worthy of survival and elevate them to the next level.
If new ones appear (and they will, and should) those should be judged on merit and promise, neither dismissed out of hand as incomplete or superfluous nor instantly hyped into greatness only to fall from grace just as quickly when they turn out not to be quite there yet.
Scotty I guessed you missed the whole point. It's not like an evil guy deceiving us; neither it is a matter of choosing the right frame work; yes, big guys and girls like us can do that; what excites you to use hibernate already excited many of us using Toplink years and years ago:-) but that is not the point; remember "learn once apply every where". If you have a bunch of young enthusiastic working for you (I know one of them is going to come up with a new framework soon:-); you want them to be productive; and the only way they can be productive if they concentrate on 1 or 2 frameworks and ideally it would be a *standard* Java stack. Please concentrate on *standard* and that is the jist of my message. Do you remember the big guys taught us that in order to be productive you categorize the role of developers in Tiers (GUI, middleware and database); hope your J2EE spec still says that(I haven't read it since many years:-); there was a reason for that; to make people productive by concentrating to only one thing for a period of time. why don't they use the same analogy when it come to framework?
Don't get me wrong, evolution is a necessity and so do the new frameworks; but what we are seeing right now is nothing but madness; and we should stop it at some point.
Nice to meet another Toplink veteran! Back in 1998, I had the displeasing task to choose a persistence technology for a large project involving developer teams in four different countries. At this time, a phletora of O/R-tools was popping up at a bewildering pace, and nobody knew which one would stand the test of time. We gave Toplink a shot, and the hardest part was to convince our partners to digg deep into an unfamiliar "non-standard" technology (which was plain JDBC at this time, the whole O/R-thingy was still kind of avant-garde). It took years until a new "standard" (JPA) was established, heavily influenced by technologies starting as sourceforge-underdogs (Hibernate).
My friend with all due respect there is a big difference between mess and stupidity. Even though Software development is mess it doesn't mean learning a new framework all the time; what it means is producing a piece of software that works; and it better be ready in x amount of time. But guess what you and me have been doing since long long time; spending more time learning a new framework instead of spending that time to build a quality product.
Besides that isn't software engineering is 80% maintenance and 20% development, I guess learning a new framework every day takes it tool and we even forget the basics:-) I will settle with the frameworks when we strike that balance.
nice talking to you; have a nice day.
The curse of choice is confusion and doubt.
The first choice is choosing between MS .NET and Java at all. If you choose MS, you're done. Choosing MS chooses the framework as well (in most cases).
But once you choose Java at all, you then have to pick a framework to leverage, of which there are just multitudes.
If you're new to the space, this is a DAUNTING task, trying to choose a framework, since every framework has their supporters and detractors, and "helpful" folks will happily damn your decision when you come up with some kind of question.
This is actually changing a bit. With Sun pushing NetBeans (hard I might add), and the fact that it comes set up to work directly with JSF and it's tools, that gives JSF a bit of an edge to new adopters.
JSF is in the standard, it's got decent tooling, and works "out of the box" with the JEE download and NetBeans.
Another example is the difference between NetBeans and Eclipse. NetBeans comes with a Bunch of Stuff all bundled, configured, and ready to go for a good 'out of box' exprience.
The Eclipse world is much more dynamic, lots of plugins, plugins with overlapping functionality and quality, different Eclipse "bundles", etc.
Eclipse has a lot of choice compared to NetBeans.
But choice can be very demanding. It means you may have to make decisions on parts you weren't even thinking about, or have no knowledge of. So, for novices, choice is not necessarily a good thing while they're still learning the fundamentals.
As someone who's chosen Java over Microsoft 7 years ago (there was no .NET then), I need to say that sometimes I do envy my MS-addicted colleagues.
Nowadays, the answer to "how do you do X in Java" always starts with "it depends".
There must be a sweet spot between the "no choices" and the "too many choices".
Yea. Makes it "easy".
A while back I was looking for web cam for my Mac. I go to the local Computer Super Store and there are, of course, several different cameras. And it was all bewildering, mostly as I wasn't sure what would or wouldn't work with my Mac for iChat, and the boxes were of little help.
I basically gave up, went to the Apple Store, told the guy at the desk "I need a web cam for my Mac Pro that works with iChat", and he walked out a few minutes later, box in hand.
Here I had a choice of one. Maybe there were others in the back, different models, I don't know. But it was certainly easier to make this choice here than back at the super store. Running the devices through the "Apple Filter" simplified the process immensely.
To be sure, there is nothing "wrong" with .NET. It works, it will implement your application, and I don't know if .NET in itself made any project fail. There are very valid reasons to not choose .NET, but whether you do or not, it's a capable and well supported system.
In fact, I do wish the Java frameworks had some of the support that .NET has. For example, .NET had some very good starter pack of non trivial applications that met basic needs (like a simple portal, for example). These were great showcases of idioms and patterns that are usable in all sorts of applications, but more robust and complete that the plethora of "hello world" and "wizard generated" throwaway demos that we get in the Java world.
I think Sun should do more things like that with JSF and NetBeans to let users get up to speed faster. For example, a simple distribution application with Orders, and Header/Detail entry screens, a popup picker, and some simple reports. Something that does "most everything" a common, back office application may want to do, with only the table names changed to protect the innocent. Novice programmers can cut and paste their way to glory to get out the basic apps that every business wants while at the same time learning their craft better.
At some point you have to just make a decision about what frameworks to use and start getting the work done. As a technical manager, I think about a more important things then for example, just whether this framework has a cleaner way to implement the front end. It's much more important that it be well supported by developers, have a rich eco-system (3rd party tools), a nice selection of books available, and experts available for hire.
This is exactly why Struts 1 has been so popular--because managers know that having a lot of support for the tool you're basing your applications architecture on is essential to the projects success.
It's would be much better for the Java community if it focused on just a few non-competing frameworks, let the competitors whither (sorry folks), and stop, for love of g*d , promoting new frameworks.
I think the problem of new frameworks being created all the time stems from developers ego's wanting a sense of accomplishment. Imagine what great things we could accomplish if this energy was directed in just few non-competing products and add-ons to those products?
There is a very good article "Exploring Ajax Runtime Offerings". It is a "must read" article showing several AJAX frameworks from a "style of programming" point of view.
Diversity is amazing if it *delivers* several styles of coding and programming:
* Custom tags/declarative programming (like in JSF) or programmatic/Java based view development (Echo2, GWT) or pure HTML based templates + Java view logic (Wicket)
* Component based (most of modern frameworks): Desktop/Swing emulators (Echo2), or HTML centric components (GWT, JSF, Wicket)
* Classic navigation (Struts, JSF, Wicket) or AJAX (JSF enriched, Wicket enriched, GWT, Echo2)
Of course there are many more frameworks but most of them fit into this classification, for instance Wings and WebCream are similar to Echo2 (conceptually) because they are desktop emulators (heavily "pixel based"), Tapestry approach is similar to Wicket (pure HTML templates) etc. Of course sometimes some frameworks are commercial, previous was a architecture point of view.
Pick up your preferred framework based on your "style" or "taste".
More "styles" and frameworks upcoming sure ;)
Of course there is a clear standard, JSF, select it if you want to remain in the official "Java stack", but sometimes the small guys beat the big guys like it took place with JDO/Hibernate vs EJB <= 2.x.
Jose M. Arranz
JNIEasy C/C++ in Java without JNI
rjilani, well said! Well said... Thank you.
I really don't understand the moaning of some people about "too many frameworks". As opposed to the MS-universe, there choices in Javaland, which is a good thing. Decent developers pick the most appropriate technology and won't follow a marketing-hyped herd. We are all big boys and girls, aren't we?
Choice is good, but there is a "too many choices" problem. If you pick the "most appropriate", but unpopular tech for your project, you won't be able to find developers who're experienced with it, for example.
OTOH, Struts 1.x is not among the best frameworks, but it does have a large developer base.
If you were to evaluate all existing Web frameworks for Java, for instance, you'd probably still be evaluating them by the time you're supposed to deliver results.
The experience of the developers influences the technology to choose. You will certainly stick to Struts if you've got a bunch of seasoned Struts developers and no JSF/Tapestry/GWT/whatever developers. The vast variety of different web frameworks does not exist because some evil guys want to confuse you. They simply exist because people are intensely trying to find new ways to tackle old and yet unresolved problems.
I think it's more of a NIH syndrome than a legitimate "trying to find new ways to tackle old and yet unresolved problems.".
If you don't like something, why not improve on it, instead of reinventing the wheel yet again?
The Struts 2 / WebWork merger, for instance, has been the best possible outcome for both Struts and WebWork users and developers.
If only people's egos made this kind of decision easier...
Your use of this web site or any of its content or software indicates your agreement to be bound by these Terms of Participation.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.