Question

I have developed web applications using JSF (myfaces components). But in these days of responsive UI, JSF doesnt fare well. I m hearing a lot about AJAX, GWT, etc. So i wanted your opinion on which web technology/framework should i learn inorder to develop web applications for enterprise products. Some of the web technologies that i m hearing are:

  1. ICE Faces (With AJAX Bridge support)
  2. GWT
  3. extJS and extGWT
  4. JavaFX
  5. Apache Wicket
  6. Jquery
  7. AJAX
  8. Open laszlo

Which of the above or the combination of the above would help me ?

Some of the parameters on which you can rate these web technologies are:

  1. Ease of learning
  2. Maintainability of web application code
  3. Community support
  4. IDE support - Eclipse or NetBeans
  5. Off the shelf component availability (like textbox,table grids, option menus)
  6. License - Does it cost for commercial use ?
  7. User Experience - responsive UI. Shouldnt be sluggish

A similar question on SO does answer my question partially. Would want more info though.

EDIT: Answers collated: Based on the answers : AJAX would be the best thing to start for learning fundamentals, then learn JQUERY. Any component based frame work that can complement ajax,jquery ?

Edit 2: If i had to design a web application like StackOverFlow (in java platform) which would be the best choice to learn and adopt?

Wicket + Jquery, WiQuery

GWT

Some XYZ Faces technology(RichFaces/ICEFaces) + AJAX.

Comments appreciated from some one who has worked with them and can rate them in the above mentioned parameters.

Was it helpful?

Solution

AJAX is just a (in my humble opinion, meaningless) term.

jQuery is, in my opinion, the way to do Javascript. Unless there's an unsurmountable requeriment forbidding its use, I recommend it if you ever need to write Javascript yourself (note, if you are using GWT, you are using Javascript, but not writing it, so you don't need jQuery).

  1. Ease of learning: you need to change your mindset from traditional procedural-style JS [jQuery is still procedural, but has a big declarative aspect]. If you have never written Javascript it might be easier to approach
  2. Maintainability of web application code: very
  3. Community support: quite a lot
  4. IDE support - Eclipse or NetBeans: I don't think so. I don't miss it; I hate writing enough Javascript to make me miss an IDE.
  5. Off the shelf component availability (like textbox,table grids, option menus): jQuery UI has a bit and there is lots of material out there
  6. License - Does it cost for commercial use?: Nope

Of the other technologies you mention:

  1. GWT: I believe this is interesting if you are target intranet sites or something similar, writing very desktop-like websites (think Gmail, not a typical content site). I suppose you need to make quite a significant effort to make your GWT-based websites crawlable by search engines and to be usable by non-sophisticated browsers (i.e. GWT would be useless for JS-less browsers like some cellphones')
  2. JavaFX. I believe this is just a gimmick. Doesn't add much to Java applets and it does not have as much inertia as Java.
  3. Apache Wicket: this is on my to-investigate list
  4. OpenLaszlo: looks very interesting if you want to do Flash stuff without paying licenses.

As my suggestion.

I suggest you learn to develop your websites without JS at first. Then add JS (using jQuery), google "progressive enhancement".

Once you can do this, you can learn using something like GWT and use it if it's justified.

OTHER TIPS

I would strongly recommend Apache Wicket, I see you have commented / edited the question to say that you are leaning towards Ajax / JQuery and asking for component frameworks that complement those.

IMO among the component-based frameworks, Wicket offers the best integration with third-party JavaScript libraries. I have personally evaluated the contenders GWT, Tapestry and JSF - but Wicket makes it really easy to:

  • contribute javascript to the HTML > HEAD
  • inject ajax callback code (or custom javascript) into a web page
  • call an event on a stateful component on the server side
  • execute arbitrary javascript before or / and after an Ajax (XHR) request fires

You can see this blog post on how to integrate YUI with Wicket, the same concepts can easily be extended to JQuery.

That said, Wicket's built-in Ajax support actually makes it possible for you to create rich UI-s without writing a single line of javascript code. Think dynamic refreshing of selective parts of a web page, pop-up dialogs, etc.

I am also aware of a project for Wicket-JQuery integration called WiQuery, but I haven't tried it yet.

I've been working in GWT (with GWT-ext) for my latest project and have quite enjoyed it. Aside from that, jQuery has always been a Godsend, and I'll use it any time I don't have a more robust framework available.

If you have to do a fair amount of Javascript/AJAX, you definitely want to learn and use jQuery! It would've saved me years of grief had it came out in 1999.

I tend to focus on foundational knowledge, so, you may want to get a strong understanding of javascript, including object-oriented javascript.

Once you know javascript well, the libraries are easy to pick up.

You may want to get some passing understanding of some of the features of HTML5 that can be useful, such as the tag.

You may also want to learn Actionscript 3, as that will help you understand how flash works, as you will know what code the flash ide is generating. I have used an ant script to compile my actionscript code, using Eclipse.

Silverlight is gaining in popularity, but, that requires VisualStudio Express, but it is a strong competitor with Flash.

For the rest, a passing reference can be useful, as your list isn't exhaustive, but make certain you understand the foundational languages well for these and the frameworks you can pick up quickly.

If you want to have some kind of client/server experience through a web browser I would suggest to take a look at GWT together with Google Eclipse Plugin. This kind of technology enables you to write really the most responsive webapps you can achieve (from my point of view).

Otherwise if you want to develop somewhat more traditional webapps and just add Ajax functionality you could take a look at DWR (Direct Web Remoting). This kind of technology enables you to wire server-side Java objects to the client-side for being able to use their functionality through JavaScript. It will help you in writing your Ajax functionality and possibly also in reusing existing logic.

Of course, jQuery is always a good alternative.

Seam, Spring, Richfaces, Ajax4jsf

I'm on the same track as you, trying to find out which will be my server side + client side development tool set for a huge internet site. As far as I have seen and read, as always, it depends on the kind of web application you need.

There are people using different javascript frameworks, based on easy of use, declarative, object oriented, and the like.

There are several things to consider: 1) Client side technology 1a) "Core" client side technology: frameworks 1b) UI client side technology enhancements 2) Server side technology

For "core" javascript frameworks, you can find JQuery, MooTools (MIT license), ExtJS Core (MIT License) (not ExtJS: this is ExtJS Core + UI gadgets, and the later needs commercial license), Yahoo UI, etc. You can compare them in sites like this one: http://www.domassistant.com/slickspeed/

This test "somehow" compares different aspects of each of those "core" client javascript frameworks.

What do you get from those frameworks? Most of them, allows you to be "cross-browser" compatible, and each one has several and different ways and syntax.

Just a matter of testing and seeking the one you like most.

So, with this, you just get a way to code for "everybrowser".

Now, if you need "Widgets/Controls/UI gadgets", then, each "core" framework has its own UI related extension.

Even, some of them, can interact with each other. I have read about implementations of ExtJS (not core, the one that comes with several good UI elements) can connect to jQuery.

So, for client side you have to choose your "core" framework, and if you need UI, then, some UI associated with them.

There are several IDEs that are compatible with this frameworks, one can be Aptana, Eclipse, Netbeans (latest version integrates very well with javascript) or in the Microsoft side Expression, Visual Studio Express or "Pro".

Its also a fact that jQuery was included "as-is" and Supported by Microsoft and Nokia. So, jQuery will get more attention now, and more support, and more "public", I predict it will get a lot of attention and enhancements. They did not buy jQuery, they adhered to it as an Open Source included into VS solutions from now on. And will be very tight coupled with ASP.NET MVC, components and the like.

Anyway, jQuery, as I said before, is not the only one and not necesarily the best.

For Server side well, it depends on your knowledge: java, ASP.NET, whatever you feel comfortable.

I hope you find this useful.

My selection is GWT because GWT program write in java programming language and this programming language is very powerful and easy to understand.

jQuery and ext-js also are good but i had some problem with JavaScript programming language. this programming language is very error prone.

Apache Wicket coding likes GWT but it is server side technology and it is a heavy technology.

Because JavaFX program require plugin is not my selection.

My recommended to you is jQuery or ext-js if you don't have problem with JavaScript.

You will probably have to learn a combination of tools, but should probably start with AJAX, then move on to some JS libraries (JQuery, prototype-scriptaculous, MooTools, etc).

Those will also compliment a JSF framework nicely.

You might also consider the Eclipse Rich Ajax Platform when evaluating Java-based RIA platforms.

I'd suggest you take a look at Vexi, which offers desktop-like applications which are more flexible than an Applet + Swing/AWT.

(Disclaimer: I am a developer of Vexi)

The applications are desktop-like - rich and responsive - and are user interfaces that are "projected" over the Internet. All the application logic resides on the server which you create in your language of choice and expose via an XmlRpc interface.

The main benefit of Vexi is that layout is really easy, as it is a box model. It's easier to understand than HTML even.

<box>
    <box orient="vertical">        .-------------------.
        <box fill="red" />         |   red   |         |
        <box fill="blue" />        |---------|  green  |
    </box>                         |   blue  |         |
    <box fill="green" />           '-------------------'
</box>

Scripting is done with JavaScript, and there's an extensible widget set. Using widgets is easy too.

<button id="button1" text="My button" />
<textarea id="text1" shadowtext="Type in here!" />
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top