Choose right Framework (Frontend, Backend) for high-performance, secure, scalable web application

2k views Asked by At

i am planning to do a web application project with 2 backend developers and one designer/frontend developer.

The designer is a freelancer and works in a different office. that means for me fontend/backend development should be decoupled.

Other requirements:

  • possibility to provide data interfaces to other application, that are easy to integrate
  • system has to be very scalable and high-performant.
  • amazing RIA User Interface with flexible reporting abilities
  • ...

I thought about using a Wicket/Spring combination in the backend, do you know how good theiy work together?

For the frontend i wanted to use Extjs but i do not know how it works together with wicket? (http://sourceforge.net/projects/wicket-extjs/files/ this wicket-extjs project seams to be stopped in 2008)

I think JQuery and HighCharts for the charting would be a good combination here.

which framworks would you use here and why?

2

There are 2 answers

0
Sam Stainsby On

Wiquery and jWicket provide JQuery integration with Wicket. We use Wiquery a bit and it seems fine.

1
Sean Patrick Floyd On

I use wicket + spring together a lot, and it works fine.

I have also successfully integrated wicket with the following JS frameworks:

  • JQuery
  • MooTools
  • Prototype / Scriptaculous
  • YUI 3

Here is a Wiki entry on using JavaScript libraries: Creating a behavior to use a Javascript library

Example: here's a behavior that changes a component's CSS classes using JQuery without actually replacing the component.

public class JQueryCssClassBehavior extends AbstractDefaultAjaxBehavior{

    private static final long serialVersionUID = -493574907225091582L;

    @Override
    public void renderHead(final IHeaderResponse response){
        super.renderHead(response);
        response.renderJavascriptReference("path/to/jquery");
    }

    private final IModel<Collection<String>> classesModel;
    private final IModel<Boolean> toggleModel;

    public JQueryCssClassBehavior(final IModel<Collection<String>> classesModel,
        final IModel<Boolean> toggleModel){
        this.classesModel = classesModel;
        this.toggleModel = toggleModel;
    }

    @Override
    protected void respond(final AjaxRequestTarget target){
        final Collection<String> classes = classesModel.getObject();
        if(classes != null && !classes.isEmpty()){
            final String classesAsString =
            // Use Joiner from Guava or any other technique
                Joiner.on(' ').join(classes);
            target.appendJavascript(
                "$('"
                + getComponent().getMarkupId()
                + "')."
                + (toggleModel.getObject().booleanValue()
                    ? "addClass"
                    : "removeClass") 
                + "('"
                + classesAsString
                + ");"
            );
        }

    }

}