Some site mention about Adobe flex as alternative of JSF/Ajax in RIA area. Could you please tell me the good things of flex against JSF? And which one is more suitable for me, a newbie programmer which having java as basis language.
If your completely new to client-side development, there are probably better choices then my book for you. That being said, I've had some folks at work with very minimal client-side experience read my first AJAX book and do alright with it, and I suspect the same would be true for this one if your motivated... I think you'll frequently have to jump on to Google to look something up as you read through it, something your kind of expected to know coming in, but if your willing to do that, and if learning by example is the way you learn best, then you could probably do alright with my book.
As for Flex vs. JSF... your talking to someone that has historically been less than flattering with regard to JSF, so maybe I'm not the person to ask
I think Flex yields fantastic-looking applications, probably better than your going to get any other way other than fat clients. This is a huge plus for many people. I've played with it only a little bit frankly, but it didn't seem tough at all to get your brain around, I doubt you'd have much trouble picking it up. It's pretty much a true cross-platform environment, i.e., Flash is Flash on any platform as far as I'm aware, also a big plus.
JSF is... well... a good idea not done very well, that's my opinion. I had originally wrote a lot more here, but then I realized I got into my typical rantings about JSF I'd rather not do that, I'd rather try and keep it more technical and concrete, so...
I've personally always found JSF to be overly complex for what it is. I've seen many "simple" JSF examples that to me seemed way too complicated. Now, some claim that while that may be true, JSF makes more complex applications simpler. I'm not so sure about that because I've seen some more complex examples too and they didn't look simpler to me than competing technologies. I'm not a fan of any technology that almost forces you to use tooling to make it usable, and JSF it squarely in that category. This isn't to imply you can't pop open a text editor and write a complete JSF app, because of course you absolutely can, but for it to be something you'd *want* to use, my opinion is JSF requires tooling. I'm personally someone who still greatly prefers a good text editor to an IDE (and frankly can be just as productive, maybe more so, without all the tools trying to hold my hand and think for me all the time), so for me that's a big negative with JSF.
Ultimately though, when comparing JSF to Flex specifically, Flex wins again in the looks department, and in the UI richness department. Your just not going to get as rich a UI with current web technologies, of which JSF is ultimately dependent, than you are with Flex.
If you surmise that I like Flex quite a bit, you'd be partially right... I like the *IDEA* of Flex a great deal... Flex worries me though because, even with the recent open-source announcement, it's still essentially a closed platform. It's still based on Flash, which is 100% proprietary. This worries me. I'm also not thrilled with the idea of all my developers having to learn a whole new technology (although arguably they have to do that now with AJAX and more clien-oriented coding). I also frankly don't like the pricing model for the Flex toolset, it's just too much IMO... then again, to my previous point, I shouldn't *need* the tools to do Flex, and indeed you don't, but again as with JSF, it makes things better. Although, I will say that in my opinion, developing a Flex app without tooling is a FAR less painful exercise than doing the same with JSF.
Flex is something I'm keeping my eye on, that's the bottom line, whereas JSF is something that has already failed to meet its lofty goals IMO. A future rev of JSF may be more interesting to me, but it would have to change quite a bit for that to be the case.
Right now, for me at this moment, if I'm starting a new project, this is the order of preference for how I'd build it:
1. Standards-based AJAX-type applications with a Struts back-end (or DWR instead of Struts, which is a fantastic tool too)
JSF would be a very distant 3rd... heck, I'd probably flip to the dark side and do .Net before I did JSF To me, .Net is JSF done well.
(Ok, seems I got off on that rant a bit anyway!)
Originally posted by Frank Zammetti: It's pretty much a true cross-platform environment, i.e., Flash is Flash on any platform as far as I'm aware, also a big plus.
I primarily use Linux, am a huge fan of Mac OS X (as both user and programmer) though I don't have my own machine, and keep a bootable Windows partition around mostly because I'm more-or-less forced to.
Flash, and I assume therefore Flex, just doesn't seem to do that great on my Linux machine. Certain flash games I've tried may respond to the mouse but not correctly to the keyboard commands; others may be the other way around.
Sometime things (controls? widgets?) I've seen displayed on a Windows machine are missing from their position within the Flash app on a Linux machine; games that run fine on Mac and Win have a 'stutter' on Linux, and how widely is Flash actually available (how cross platform is it really)? I try very hard not to care if the client computer is Win, Mac, Linux, Sun, or Brand-X.
Any thoughts on this?
Joined: Dec 16, 2004
That's interesting... I've never been a big Linux guy myself, I'm one of the rare few who is actually quite happy with Windows But, if it's truly not doing that well on Linux, then I would think it takes some of the luster away for sure. I've never experienced any problems like you describe, but I haven't looked at much Flash under anything but Windows.
I think it is pretty cross-platform, but you know, there's one wildcard in here that I think is going to matter more and more as time goes on, and that's cell phones. I think we're pretty quickly evolving in that area to really good, converged devices, and I suspect more and more people are going to get their net access via cell phone as time goes on. In that regard, since I'm not aware of Flash on any cell phone (in the U.S. at least), maybe that's a good reason to stay away from Flex and stick with web technologies since they are more supported on cell phones (although with many obvious, and perhaps less obvious, limitations).
Joined: Apr 13, 2007
Thank you for the recommendation. I think I will try out struts first in the coming holiday.
Flex seems better and luxurious. But, the problem is.. yeah, as you said, it's tied to flash. And as a not so rich student, I don't have much money to get a copy of macromedia stuff like flash.
Hehehe.. Thanks for the answers.
Joined: Dec 16, 2004
Just to make sure I'm clear, Flex is based on Flash as the runtime. Flash is of course free in that regard. Likewise, the SDK for Flex is free, so you in fact can develop Flex apps for free, and anyone can run them for free.
What costs money is the developer tools for Flex, as well as data server services (that's not the right name, but I just woke up, too tired to go look it up!). Now, the data services are optional as well, so even putting that aside, it leaves the developer tools (IDE, debugger, etc). That too is optional, but makes a big difference from what I've seen and heard.
I would say don't make the decision based on money because at the end of the day Flex can be 100% free to develop and run. Make it more based on if the technology is suitable to what your doing, and if you can live with some of the concerns like Flash not being an open standard, working without a full IDE, etc.
FYI, if you do go with Struts, Struts2 has built-in AJAX support, whereas Struts 1.x does not (unless you grab my enhanced Struts taglib that builds AJAX into it). I haven't done much with S2's AJAX support, but I know many people are using it, so you'll have no trouble getting help on the Struts mailing lists for it.