views:

895

answers:

10

Hello,

I'm trying to pick a web framework that is Java based to start a new project and so far I'm having a bit of trouble deciding. I have been using plain GWT and I have to say that is very good, the architecture, the APIs and the docs are all very good, but I lack the knowledge to apply CSS and prettify my widgets, so I need something that comes with that included, Gwt Ext is ruled out as is not purely based in GWT, Ext Gwt is good but they drift away totally from GWT and implement everything again (data stores, events, etc) and there is also the license. I found out about Vaadin and it seems pretty good, besides it improves on the weak side of GWT (in my opinion) which is that everything is client side, pre rendered (the whole website is on the client side, even if, lets say, your cient has not yet authenticated). The only thing about Vaadin is that I don't see a lot of widespread usage, maybe is very recent, so I can't get a lot of opinions.

Any solutions proposed don't have to be based in GWT, is just that it integrates JS and JAVA in a great way, abstracting from me, a Java developer, all the JS goodness that I would need to learn in order to develop a web app.

So, basically: Java developer needs opinion on different Java based web frameworks. Requirements: no deep knowledge of CSS or JS required to use it (basic knowledge is of course, always required, but I don't want to be tinkering with the internals too much), nice, acceptable looking widgets already included, ability to use Java development tools/techniques (Eclipse, Netbeans etc).

As you can see GWT fits almost all of my requirements and that was my first choice, but now I would like to get more feedback regarding other options. Thanks in advance, teto.

A: 

You could take a look at RIFE. I'm not sure if it has the widget support you want, but it otherwise meets the requirements.

Yishai
+3  A: 

Grails, if you don't mind a Rails like framework for the JVM.

Langali
Grails is Groovy framework, not Java.
jpartogi
Groovy is Java. You can substitute one for the other in Grails.
Simon
+2  A: 

JSF - Richfaces or Icefaces with Seam it's a nice pack.

If you decide not to abandon all your works - you can also leverage GWT with Seam.

cetnar
+1  A: 

Stripes is pretty good if you're going for jsp style framework.

However, if you're developing more of an "application" and not a " web site", I would strongly recommend using plain html with ExtJS. You can then connect this back through something like DWR and write very little web code at all.

Kevin
Ext JS is from the same people that makes Ext Gwt and Gwt Ext, and they all have the same licensing model, so for me that's a no-go. Anyway thanks for the answer and for pointing out DWR, another tool for my toolbox
teto
To be fair, Ext-GWT and GWT-Ext are extensions to ExtJS. I will say that for a commercial product, the Ext licenses are well worth the bargain.
Kevin
Yes, with Ext-GWT being pure Java and that is big plus, and I agree with you that the license is acceptable, but it is not up to me to decide that, that is why is not a viable option for me.
teto
As a technology professional, its YOUR job to communicate the right choices for your superiors :)
Kevin
+1  A: 

If you like component based approach, have a look at Apache Wicket. Regarding 3rd party JavaScript libraries, you can use whatever JS libraries that you want to. Wicket core really only uses it's own custom JS for Ajax, etc. Check out wicketstuff for a lot of ready-made integrations between popular JS libraries and Wicket. Some of them are less mature than others, but the good ones can give you inspiration for how to accomplish what you need. Another option: Wicket ExtJS Integration Module.

Personally, I prefer Stripes, an action based framework which promotes Conventions over Configuration. Again, Stripes doesn't force the use of any particular JS library so just use what you want to. You might want to read [Stripes-users] Suggestions for a good widget framework for STRIPES though.

Finally, Grails could be the joker candidate. It has AJAX support (you can use YUI, prototype, dojo), a jQuery Plugin, etc. You might want to read Which Grails Rich Client Plugin is the Best? for more inputs.

Pascal Thivent
A: 

Although not Java based, Flex is an interesting and compelling technology for creating rich internet applications and especialy creating gui's in no time. It can also very easily communicate with a Java backend through a data service provider such as BlazeDS.

The Flex application is eventually compiled to a .swf (Flash) file and runs in the browser with the Flash plugin. This may very well be not wat you want, but I'm just pointing it out for your information.

Most Java based web frameworks I've worked with, boil down to css when you want to change the look of the components in component based frameworks and even more in MVC based web frameworks.

nkr1pt
A: 

The Seam Framework is a modern framework used in a lot of commercial web apps. Spring Webflow is another good option.

Personally, though, I'd look at using Grails. It's so much more lightweight and dynamic than traditional Java frameworks, has a really active community and an strong plugin ecosystem. Obviously it uses Groovy but I'm sure you'll find learning that a delight! I'd say with confidence that you'll be able to produce a quality web app in a lot less time with Grails.

Olly
+2  A: 

Well,

In my opinion you should really invest time in CSS. The web without css is just asking for trouble. Most web frameworks will need some HTML and CSS to do the final presentation. They might abstract them away, but without understanding the underlying technology you are always going to get stuck when you need something special in your UI.

Imagine writing a UI in swing without wanting to learn the concept of LayoutManagers.

David

David Nouls
A: 

First of all thanks to everyone that took the time to answer, I went over each of them and after considering what each framework/solution had to offer I opted to stick with plain GWT and resort maybe to CSS styling if needed, is never too late to learn something as CSS. Most of my codebase is already up and running and as I have a deadline to meet this seemed the most logical option to me. Grails and Groovy are definitely worth a look, maybe in my next project I will start from the ground up using them.

teto
A: 

Sproutcore or EXTJS are alternatives but sticking with GWT might be a good bet

Jet