NetBeans 6 delivers great updates to the Matisse GUI builder. Spend a few minutes with Roman Strobl and get an expert briefing on what's new and what has changed. (sponsored)
In this, the third and final installation of Andres' Introduction to Groovy series, you learn about how Groovy handles variable numbers of arguments, named parameters, currying, and more about Groovy operators. Including, some new operators.
Swing Fuse (actually just Fuse), is a framework designed to make it easier to create your own custom desktop components. In this article, Daniel Spiewak shows you how to get started and provides sample source code you can download.
Willam Louth shows how he uses JXInsight Probes to investigate probable performance issues with code bases that he is not familiar with. He also highlights possible pitfalls in creating a benchmark, as well as in the analysis of results.
JSF and Portlets promised to integrate the web, but in reality they just brought more confusion and lock-in. One of the main
Aranea
goals is to provide a lightweight alternative for web integration.
JSF promise was to be able to reuse web components among different frameworks that correspond to one standard. However the standard, as always, have left more things open than specified, and in reality we didn't even come near to actually reusing components between frameworks (try using ICEFaces components with ADFFaces). What's worse, JSF have imposed on us a highly complex and clumsy API, that one needs to follow to achieve even a little reusability and broke the familiar way of capturing logic in custom JSP tags.
While third-party options (like Facelets) do make programming with JSF easier, one still has to jump through hoops just to get simple reusable components. And since the components are not really Java objects, there is almost no good way to enforce a normal contract for their communication.
The trouble is that we already have a great tool for building and integrating disparate components—it is called the Java programming language. Object-oriented design have been proven to be a viable solution for already two decades, and it is just sad to see that the designers of JSF have ignored it to pursue type unsafe and hard to debug design that looks more than a bit like Struts, revisited.
Which brings us to our second offender—Portlets. Although Portlets were the first to achieve actual remote integration among different web applications, they also did that with a model that is limiting in every way possible. There is almost no communication between portlets, there is no way to embed portlets in other portlets, and some of the worst aspects of servlets (like static configuration and global contexts) have been carbon copied to the portlet spec. However instead we get modes, window states, persistent store and user profiles, which don't have much to do with the integration itself and should really have been provided on top of that and not all in one spec.
In my mind these specifications share the same trouble as the infamous EJBs:
They are designed by a committee
They are not standardizing something existing, but creating a new solution on paper
They are designed largely by and for tool makers, instead of developers
Now, selling tools is a great goal for those of us who make them. But tool-oriented specifications have insofar turned out to be less than successful. The EJB world is rapidly moving towards lightweight solutions like Spring and Hibernate, which instead of providing shiny tool support have a simple and clean design and just do their job well. The developers became so bitter from the tools, mappings and bytecode postprocessing, that Plain Old Java Objects became a buzzword that sells considerably better than MDA.
Now the situation is rapidly improving in the application server ecosystem, and with EJB 3.0 being a mix of Spring and Hibernate with a healthy dose of annotations, we are definitely looking to a brighter future (though the point of the rubber stamping perfectly good open source frameworks as a standard is still unclear to me).
However the situation in the web framework ecosystem is yet to achieve the same level of enlightenment. Currently we are looking at a large number of incompatible web frameworks that kill any hope of integration and reuse even before it appears. Many of these frameworks are really innovative (Wicket, Tapestry, RIFE come to mind and Seaside deserves an honorable mention), but there is no way to use their strength without also accepting their weaknesses.
It is our belief that different approaches are needed for different types of web applications. For example blog engines do well with a REST semantics, while complex enterprize applications do better with a component semantics and in some other cases one needs differently proportioned mix of the two or something altogether different. Aranea goal is to capture different types of these semantics in a simple and clean component model:
Services capture REST semantics
Widgets capture stateful component semantics
However to become actually useful you also need to connect the two, so we have Components that are a supertype of both and capture component lifecycle, communication and hierarchy. As a result we get a lightweight implementation of the Hierarchical Model-View-Controller pattern that allows to actually use both approaches at the same time.
What's more, since service and widgets capture the essence of their semantics they should allow to host similar constructions from different web frameworks providing an interoperability layer with a simple and clean API (widget interface has 4 meaningful methods not counting the 4 more lifecycle ones and does not need any configuration). It is indeed our intention that the minimalistic Aranea core would be usable to integrate together different web frameworks, allowing to seamlessly use them together in one application combining (to some extent) different approaches when needed.
Next to that goal it becomes relatively simple to just reuse components between applications a la JSF or combine several subapplications into one a la Portlets. Remote integration is trickier, but it shouldn't be too hard to host portlets or provide a WSRP adaptor.
Although we still have to talk in future tense about integrating the open source web frameworks (and possibly JSF), we have already achieved a lot of reusability and integration in terms inside and between applications, as well as with an internal legacy web framework. We hope that it will go just as smoothly with the other frameworks and we will be able to deliver on the JSF and Portlet promise.
It seems like every day somebody else comes up with a "new and improved" web application. Whether it's AJAX, rails, django, umpteen PHP frameworks, zope/plone, or the five thousand java based frameworks.
Instead of building yet another web framework why doesn't somebody at sun pull their head out of their ass and figure out how to make applets a reality again? If they fail miserably at that (again!) why don't they make java web start work nicely and attractively? While they are at it why don't they break apart the VM and let browsers load just the parts they need tiny little bits at a time so the JRE can build up gradually on the client. Is that really that difficult sun? I know you haven't been able to make application sharing in the JVM despite a decade of clamoring but how hard can it be to split up the classes into smaller jars and just have a tiny stub that loads them on demand.
How come every Linux distribution can manage a complex dependency of libraries and download all (and only) the parts you need but sun can't figure it out for java? How come both ruby and perl have a way of searching, downloading, updating, and maintaining their libraries from a centralized repository and java doesn't? Are those long haired, hippie, smelly, communist open source developers THAT much smarter then you? Hey here is an idea why don't you hire some of them and see if they can put together a packaging system for you.
The last thing the world needs is another web application framework. Hell the last thing the world needs is another web application. Wasn't java supposed to free us from the stateless, incompatible, and clumsy web applications?
Stop building web application frameworks for java, it's a tacit acknowledgement that java failed in it's original goal. Remember that far back? I do.
While I don't necessarily agree with your sentiment, I would point out that the Wicket folks (Johan specifically) put together some very slick demos of connecting a Swing Applet to a Wicket component to create this integrated AJAX-ish like web page demo using applets and backing Wicket pages... it was pretty interesting.
Well, yeah, Java did fail in its original goal. In fact in several of its original goals (it was supposed to run on refrigerators, if you remember that far back). But its a great high-level OO language to build applications in, and web applications are actually
easier
to build and integrate. So I don't see any kind of trouble here.
Besides why stateless? The whole point of the newer generation of web frameworks is that they are stateful when needed...
It's sad to see that people feel the need to tear down other frameworks and promote there favorite framework. Frameworks exists to fill needs of at least the people that create them and hopefully benefit many others, but peoples needs and perspectives are different and that's why the multitude of frameworks. With out multiple perspectives our growth and understanding of the issues would be limited.
It's the bashing of framework-A, language-B, etc (what ever) to promote themselves or a favorite topic that apears to be filling too many fourms these days. (this could be a fourm topic by it's self).
> With out multiple
> perspectives our growth and understanding of the
> issues would be limited.
But this post is also just a perspective of framework makers and brings out issues that must be understood better In all fairness there is room for both creativity and critique, and both are necessary for progress. Perhaps lately there's been too little creativity and too much critique, but instead of bashing critique one could do more on creativity :P
How come javalobby which is supposed to be for the promotion of java doesn't have any applet ads but has flash ads instead?
Don't bother, I will answer it for you (and rick)
1) They want to make sure many people see their ads as possible. Flash is ubiquitus and java is not.
2) If people had to wait for the VM to load into memory when they visited the page people would be upset and leave before the applet even started.
3) It's easy to turn off java (and lots of people do), unless you are using firefox it's much harder to turn off flash ads.
There are lots of "interesting" frameworks for applets (thinlets for example). That's not the point. The point is that if sun had done a few simple things nobody would would be writing new web development frameworks and I would never hear the word AJAX in reference to building web site.
> There are lots of "interesting" frameworks for
> applets (thinlets for example). That's not the point.
> The point is that if sun had done a few simple things
> nobody would would be writing new web development
> frameworks and I would never hear the word AJAX in
> reference to building web site.
By God, you assume that for some reason Swing/Applets/Desktop Java is much better than Web, and there is some conspiracy going on. I mean I wish that HTML would be improved, but webapps triumphed over desktop for a good number of reasons. Not sure Sun would be able to do that much about that.
Point well taken Mal. Certainly the weight (and time "wait") of Applets is probably 80% of the problem, the other 20% being ease of integration and tool support/deployment.
You are also right it would drive me nuts if every time I visited this site I had to wait for little applet ads to start like happens on some sites that use applet page hit counters... that usually bothers me enough to set my ad filter to remove that ad every time or I stop visiting the site assuming it isn't critical.
The worst are those little animation applets... the ones with the little water ripple effects =/
All sun had to do was to make sure there was a self updating JVM on virtually every machine sold. They could have done this by striking deals with Dell, gateway (who were big at the time), IBM, HP, Compaq. Maybe they could have pulled an AOL and struck a deal with MS too.
Either way they never got their act together so applets never took off. Oddly enough people still wanted to run applications that felt like applications on their browser so DHTML, Javascript, DOM and now AJAX were created.
> All sun had to do was to make sure there was a self
> updating JVM on virtually every machine sold.
> Maybe they could have pulled an AOL and struck a deal
> with MS too.
Eh, they did... Remember that long forgotten thing call Microsoft Java Virtual Machine? Which came with every Windows installation and by the end was self-updating?
Applets failed thanks to a number of completely different reasons:
They were way too slow
They were hard to write
Any reasonably complex applet required paying for signing
And I bet a number of other reasons. Yeah, if somebody would come up with a similar technology now it might have been a good match for some of our troubles, but the problem is that by now DHTML/AJAX already took its place.
Plus even technologically there is a huge reason to use HTML-based applications, since it offers great possibilities for integration (WSRP anyone?).
You can bash on JSF, Portlets, JSP, EJBs, etc all you want.
You can save the world with Yet Another Silver Bullet, if you're so inclined.
But appreciate what is going on and why it's done the way it is.
Let's pick JSF just off the top of the stack, just cuz it's handy.
It's designed by committee, the components are not interoperable, etc.
It's designed by committee because it's a compromise between competing groups. It's designed by committee because it's better to have an imperfect standard at the start that several people share and leverage and grow than independent standards that reinvent their wheels, crossover each other and then extend in more and more incompatible ways.
Early JSF is flawed. How do we know? Because early adopters, from several different organizations, run in to trouble, have issues collaborating and with cross container compatability.
The key phrase here is "several different organizations". Other people than the standard authors are trying to make it work, bringing up issues with the standard and ways to work around them and improve them.
You don't have cross implementation compatability options with $Framework because they're not implemented by competing parties. They're their own silo of functionality, the Best Mousetrap Ever!
With $Framework, you have one team with one vision trying to advance the project. With a JCP committee based standard you have several teams with several visions working on advancing the project (as well as being better than the other JCP implementors). And they fight, they bicker, they compromise, and you get sausage in the end. An imperfect, but ideally functional, project in the end.
EJBs are the classic example of that. An imperfect spec with more arrows in its back than most any other tech available today. Yet: BEA, IBM, Sun, Oracle, JBoss, Apache, Adobe(!!!), plus several others all implement it, continue to implement it, and are creating NEW implementations of it. We're even up to EJB v3, even more imperfect than ever!
Meanwhile how many vendors adopt, implement and support Spring, or any other backend technology? I think BEA has some Spring support, but they don't have their own implementation. Anyone else? Sure it has popularity, in some circles. And yes it has had its affect, as witnessed by EJB 3. But at the commercial level, is it pushing out the imperfect EJB spec(s)? No, it's not.
You can say the same about the different JSF implementations and the different Portlet implementations. The key fact simply that there ARE different implementations, and the consumers have the capability to choose between them.
If I write code to Aranea, and I'm unhappy with the result? Where do I go then? What other vendors can I look to that may be more responsive to my needs?
Feel free to continue to innovate and make the shiniest and roundest possible wheels. Work harder to stand out from the crowd. Successful ideas have community impact (e.g. Spring and IoC). But also observe that there is safety in numbers, and that's what the JCP proposed frameworks tend to bring with them.
Wow, I developed one web application already in JSF and EJB3 and in no way did I find EJB3 anything like Hibernate or Spring. That statement is false on so many levels.
EJB3 with Stateful XPC can do more wonderful things for webapps than Hibernate. As far as EJB3 being like Spring. Wow. Uh, no. Spring is more mature than EJB3 as to what you can map and how you can map it. I am not saying EJB3 is poor at it, Spring just offers more.
As far as JSF bashing, it will all come to an end when we hear all the kudos rolling in from developers who found it easy to create and use AJAX components, developers who quickly reused components to develop apps, or developers who used JSF Render Kits to develop for a wide range of clients.
I have experienced all the complaints about JSF 1.0 but I don't know of any 1.0 project out there that needed more maturity anyway.
> 1) They want to make sure many people see their ads
> as possible. Flash is ubiquitus and java is not.
> 2) If people had to wait for the VM to load into
> memory when they visited the page people would be
> upset and leave before the applet even started.
Java applets are pretty good for ads with video content. They load just about as fast as embedded Windows Media or Quicktime players. If Macromedia hadn't put support for video into Flash a year ago, I think we'd be seeing a lot more ads done with Java applets today. Of course the Flash ads do load faster, but they don't IMO match the visual quality.
> 3) It's easy to turn off java (and lots of people
> do), unless you are using firefox it's much harder to
> turn off flash ads.
And I would add two more really important reasons to that list that aren't really technical:
4) It's much harder for an ad designer to create an animation with Java applets. They typically don't have any programming language experience at all. Many of them just know the bare essential parts of ActionScript at most. Reaching that group of people is going to require a visual tool on par with the Flash designer tools.
5) Web sites are not always able to dictate ad formats. An advertiser might not have a creative team and all they have is Flash ads that were created by a freelance artist. If the web site wanted only to support Java applets, they would have to employ their own creative team to convert Flash ads into Java applet ads, which isn't really practical for all but the largest sites.
Where JSF and Portlets went wrong...
URL: Blog entry
At 5:17 AM on May 6, 2006, Jevgeni Kabanov wrote:
Fresh Jobs for Developers Post a job opportunity
JSF and Portlets promised to integrate the web, but in reality they just brought more confusion and lock-in. One of the main Aranea goals is to provide a lightweight alternative for web integration.
JSF promise was to be able to reuse web components among different frameworks that correspond to one standard. However the standard, as always, have left more things open than specified, and in reality we didn't even come near to actually reusing components between frameworks (try using ICEFaces components with ADFFaces). What's worse, JSF have imposed on us a highly complex and clumsy API, that one needs to follow to achieve even a little reusability and broke the familiar way of capturing logic in custom JSP tags.
While third-party options (like Facelets) do make programming with JSF easier, one still has to jump through hoops just to get simple reusable components. And since the components are not really Java objects, there is almost no good way to enforce a normal contract for their communication.
The trouble is that we already have a great tool for building and integrating disparate components—it is called the Java programming language. Object-oriented design have been proven to be a viable solution for already two decades, and it is just sad to see that the designers of JSF have ignored it to pursue type unsafe and hard to debug design that looks more than a bit like Struts, revisited.
Which brings us to our second offender—Portlets. Although Portlets were the first to achieve actual remote integration among different web applications, they also did that with a model that is limiting in every way possible. There is almost no communication between portlets, there is no way to embed portlets in other portlets, and some of the worst aspects of servlets (like static configuration and global contexts) have been carbon copied to the portlet spec. However instead we get modes, window states, persistent store and user profiles, which don't have much to do with the integration itself and should really have been provided on top of that and not all in one spec.
In my mind these specifications share the same trouble as the infamous EJBs:
Now, selling tools is a great goal for those of us who make them. But tool-oriented specifications have insofar turned out to be less than successful. The EJB world is rapidly moving towards lightweight solutions like Spring and Hibernate, which instead of providing shiny tool support have a simple and clean design and just do their job well. The developers became so bitter from the tools, mappings and bytecode postprocessing, that Plain Old Java Objects became a buzzword that sells considerably better than MDA.
Now the situation is rapidly improving in the application server ecosystem, and with EJB 3.0 being a mix of Spring and Hibernate with a healthy dose of annotations, we are definitely looking to a brighter future (though the point of the rubber stamping perfectly good open source frameworks as a standard is still unclear to me).
However the situation in the web framework ecosystem is yet to achieve the same level of enlightenment. Currently we are looking at a large number of incompatible web frameworks that kill any hope of integration and reuse even before it appears. Many of these frameworks are really innovative (Wicket, Tapestry, RIFE come to mind and Seaside deserves an honorable mention), but there is no way to use their strength without also accepting their weaknesses.
It is our belief that different approaches are needed for different types of web applications. For example blog engines do well with a REST semantics, while complex enterprize applications do better with a component semantics and in some other cases one needs differently proportioned mix of the two or something altogether different. Aranea goal is to capture different types of these semantics in a simple and clean component model:
However to become actually useful you also need to connect the two, so we have Components that are a supertype of both and capture component lifecycle, communication and hierarchy. As a result we get a lightweight implementation of the Hierarchical Model-View-Controller pattern that allows to actually use both approaches at the same time.
What's more, since service and widgets capture the essence of their semantics they should allow to host similar constructions from different web frameworks providing an interoperability layer with a simple and clean API (widget interface has 4 meaningful methods not counting the 4 more lifecycle ones and does not need any configuration). It is indeed our intention that the minimalistic Aranea core would be usable to integrate together different web frameworks, allowing to seamlessly use them together in one application combining (to some extent) different approaches when needed.
Next to that goal it becomes relatively simple to just reuse components between applications a la JSF or combine several subapplications into one a la Portlets. Remote integration is trickier, but it shouldn't be too hard to host portlets or provide a WSRP adaptor.
Although we still have to talk in future tense about integrating the open source web frameworks (and possibly JSF), we have already achieved a lot of reusability and integration in terms inside and between applications, as well as with an internal legacy web framework. We hope that it will go just as smoothly with the other frameworks and we will be able to deliver on the JSF and Portlet promise.
25 replies so far (
Post your own)
Re: Where JSF and Portlets went wrong...
It seems like every day somebody else comes up with a "new and improved" web application. Whether it's AJAX, rails, django, umpteen PHP frameworks, zope/plone, or the five thousand java based frameworks.Instead of building yet another web framework why doesn't somebody at sun pull their head out of their ass and figure out how to make applets a reality again? If they fail miserably at that (again!) why don't they make java web start work nicely and attractively? While they are at it why don't they break apart the VM and let browsers load just the parts they need tiny little bits at a time so the JRE can build up gradually on the client. Is that really that difficult sun? I know you haven't been able to make application sharing in the JVM despite a decade of clamoring but how hard can it be to split up the classes into smaller jars and just have a tiny stub that loads them on demand.
How come every Linux distribution can manage a complex dependency of libraries and download all (and only) the parts you need but sun can't figure it out for java? How come both ruby and perl have a way of searching, downloading, updating, and maintaining their libraries from a centralized repository and java doesn't? Are those long haired, hippie, smelly, communist open source developers THAT much smarter then you? Hey here is an idea why don't you hire some of them and see if they can put together a packaging system for you.
The last thing the world needs is another web application framework. Hell the last thing the world needs is another web application. Wasn't java supposed to free us from the stateless, incompatible, and clumsy web applications?
Stop building web application frameworks for java, it's a tacit acknowledgement that java failed in it's original goal. Remember that far back? I do.
Re: Where JSF and Portlets went wrong...
While I don't necessarily agree with your sentiment, I would point out that the Wicket folks (Johan specifically) put together some very slick demos of connecting a Swing Applet to a Wicket component to create this integrated AJAX-ish like web page demo using applets and backing Wicket pages... it was pretty interesting.Re: Where JSF and Portlets went wrong...
Well, yeah, Java did fail in its original goal. In fact in several of its original goals (it was supposed to run on refrigerators, if you remember that far back). But its a great high-level OO language to build applications in, and web applications are actually easier to build and integrate. So I don't see any kind of trouble here.Besides why stateless? The whole point of the newer generation of web frameworks is that they are stateful when needed...
Re: Where JSF and Portlets went wrong...
It's sad to see that people feel the need to tear down other frameworks and promote there favorite framework. Frameworks exists to fill needs of at least the people that create them and hopefully benefit many others, but peoples needs and perspectives are different and that's why the multitude of frameworks. With out multiple perspectives our growth and understanding of the issues would be limited.It's the bashing of framework-A, language-B, etc (what ever) to promote themselves or a favorite topic that apears to be filling too many fourms these days. (this could be a fourm topic by it's self).
Take care.
Re: Where JSF and Portlets went wrong...
> With out multiple> perspectives our growth and understanding of the
> issues would be limited.
But this post is also just a perspective of framework makers and brings out issues that must be understood better
Re: Where JSF and Portlets went wrong...
How come javalobby which is supposed to be for the promotion of java doesn't have any applet ads but has flash ads instead?Don't bother, I will answer it for you (and rick)
1) They want to make sure many people see their ads as possible. Flash is ubiquitus and java is not.
2) If people had to wait for the VM to load into memory when they visited the page people would be upset and leave before the applet even started.
3) It's easy to turn off java (and lots of people do), unless you are using firefox it's much harder to turn off flash ads.
There are lots of "interesting" frameworks for applets (thinlets for example). That's not the point. The point is that if sun had done a few simple things nobody would would be writing new web development frameworks and I would never hear the word AJAX in reference to building web site.
Re: Where JSF and Portlets went wrong...
> There are lots of "interesting" frameworks for> applets (thinlets for example). That's not the point.
> The point is that if sun had done a few simple things
> nobody would would be writing new web development
> frameworks and I would never hear the word AJAX in
> reference to building web site.
By God, you assume that for some reason Swing/Applets/Desktop Java is much better than Web, and there is some conspiracy going on. I mean I wish that HTML would be improved, but webapps triumphed over desktop for a good number of reasons. Not sure Sun would be able to do that much about that.
Re: Where JSF and Portlets went wrong...
Point well taken Mal. Certainly the weight (and time "wait") of Applets is probably 80% of the problem, the other 20% being ease of integration and tool support/deployment.You are also right it would drive me nuts if every time I visited this site I had to wait for little applet ads to start like happens on some sites that use applet page hit counters... that usually bothers me enough to set my ad filter to remove that ad every time or I stop visiting the site assuming it isn't critical.
The worst are those little animation applets... the ones with the little water ripple effects =/
Re: Where JSF and Portlets went wrong...
It was not me who build that. I only fixed a few things that didn't work quite right. Jonathan Locke made it for the most part.Re: Where JSF and Portlets went wrong...
All sun had to do was to make sure there was a self updating JVM on virtually every machine sold. They could have done this by striking deals with Dell, gateway (who were big at the time), IBM, HP, Compaq. Maybe they could have pulled an AOL and struck a deal with MS too.Either way they never got their act together so applets never took off. Oddly enough people still wanted to run applications that felt like applications on their browser so DHTML, Javascript, DOM and now AJAX were created.
Re: Where JSF and Portlets went wrong...
> All sun had to do was to make sure there was a self > updating JVM on virtually every machine sold. > Maybe they could have pulled an AOL and struck a deal > with MS too.Eh, they did... Remember that long forgotten thing call Microsoft Java Virtual Machine? Which came with every Windows installation and by the end was self-updating?
Applets failed thanks to a number of completely different reasons:
- They were way too slow
- They were hard to write
- Any reasonably complex applet required paying for signing
And I bet a number of other reasons. Yeah, if somebody would come up with a similar technology now it might have been a good match for some of our troubles, but the problem is that by now DHTML/AJAX already took its place.Plus even technologically there is a huge reason to use HTML-based applications, since it offers great possibilities for integration (WSRP anyone?).
*sigh* Does anyone "get it"?
You can bash on JSF, Portlets, JSP, EJBs, etc all you want.You can save the world with Yet Another Silver Bullet, if you're so inclined.
But appreciate what is going on and why it's done the way it is.
Let's pick JSF just off the top of the stack, just cuz it's handy.
It's designed by committee, the components are not interoperable, etc.
It's designed by committee because it's a compromise between competing groups. It's designed by committee because it's better to have an imperfect standard at the start that several people share and leverage and grow than independent standards that reinvent their wheels, crossover each other and then extend in more and more incompatible ways.
Early JSF is flawed. How do we know? Because early adopters, from several different organizations, run in to trouble, have issues collaborating and with cross container compatability.
The key phrase here is "several different organizations". Other people than the standard authors are trying to make it work, bringing up issues with the standard and ways to work around them and improve them.
You don't have cross implementation compatability options with $Framework because they're not implemented by competing parties. They're their own silo of functionality, the Best Mousetrap Ever!
With $Framework, you have one team with one vision trying to advance the project. With a JCP committee based standard you have several teams with several visions working on advancing the project (as well as being better than the other JCP implementors). And they fight, they bicker, they compromise, and you get sausage in the end. An imperfect, but ideally functional, project in the end.
EJBs are the classic example of that. An imperfect spec with more arrows in its back than most any other tech available today. Yet: BEA, IBM, Sun, Oracle, JBoss, Apache, Adobe(!!!), plus several others all implement it, continue to implement it, and are creating NEW implementations of it. We're even up to EJB v3, even more imperfect than ever!
Meanwhile how many vendors adopt, implement and support Spring, or any other backend technology? I think BEA has some Spring support, but they don't have their own implementation. Anyone else? Sure it has popularity, in some circles. And yes it has had its affect, as witnessed by EJB 3. But at the commercial level, is it pushing out the imperfect EJB spec(s)? No, it's not.
You can say the same about the different JSF implementations and the different Portlet implementations. The key fact simply that there ARE different implementations, and the consumers have the capability to choose between them.
If I write code to Aranea, and I'm unhappy with the result? Where do I go then? What other vendors can I look to that may be more responsive to my needs?
Feel free to continue to innovate and make the shiniest and roundest possible wheels. Work harder to stand out from the crowd. Successful ideas have community impact (e.g. Spring and IoC). But also observe that there is safety in numbers, and that's what the JCP proposed frameworks tend to bring with them.
EJB3 is like Hibernate and Spring?
Wow, I developed one web application already in JSF and EJB3 and in no way did I find EJB3 anything like Hibernate or Spring. That statement is false on so many levels.EJB3 with Stateful XPC can do more wonderful things for webapps than Hibernate. As far as EJB3 being like Spring. Wow. Uh, no. Spring is more mature than EJB3 as to what you can map and how you can map it. I am not saying EJB3 is poor at it, Spring just offers more.
As far as JSF bashing, it will all come to an end when we hear all the kudos rolling in from developers who found it easy to create and use AJAX components, developers who quickly reused components to develop apps, or developers who used JSF Render Kits to develop for a wide range of clients.
I have experienced all the complaints about JSF 1.0 but I don't know of any 1.0 project out there that needed more maturity anyway.
My two cents
Re: Where JSF and Portlets went wrong...
> 1) They want to make sure many people see their ads> as possible. Flash is ubiquitus and java is not.
> 2) If people had to wait for the VM to load into
> memory when they visited the page people would be
> upset and leave before the applet even started.
Java applets are pretty good for ads with video content. They load just about as fast as embedded Windows Media or Quicktime players. If Macromedia hadn't put support for video into Flash a year ago, I think we'd be seeing a lot more ads done with Java applets today. Of course the Flash ads do load faster, but they don't IMO match the visual quality.
> 3) It's easy to turn off java (and lots of people
> do), unless you are using firefox it's much harder to
> turn off flash ads.
And I would add two more really important reasons to that list that aren't really technical:
4) It's much harder for an ad designer to create an animation with Java applets. They typically don't have any programming language experience at all. Many of them just know the bare essential parts of ActionScript at most. Reaching that group of people is going to require a visual tool on par with the Flash designer tools.
5) Web sites are not always able to dictate ad formats. An advertiser might not have a creative team and all they have is Flash ads that were created by a freelance artist. If the web site wanted only to support Java applets, they would have to employ their own creative team to convert Flash ads into Java applet ads, which isn't really practical for all but the largest sites.