Is there a Java Web Framework, with mvc, thrid-party integration APIs, libraries and tools? Something like Zend Framework for PHP?
There are a lot of Java web Frameworks, here you have a list with lots of them: http://java-source.net/open-source/web-frameworks
The most "famous" would be Struts, JSF or Spring mvc framework (not in that particular order).
Play Framework is more light weight compared to Spring , JSF or Struts. More close to Zend in some sense. and has scala support :)
Using Zend for a while, I found the transition to Spring fairly easy.
Spring does come with more bells and whistles (Dependancy injection, AOP etc)
You also have AppFuse
AppFuse is an open source project and
application that uses open source
tools built on the Java platform to
help you develop Web applications
quickly and efficiently. It was
originally developed to eliminate the
ramp-up time found when building new
web applications for customers. At its
core, AppFuse is a project skeleton,
similar to the one that's created by
your IDE when you click through a
wizard to create a new web project.
AppFuse 2.x is a restructuring of
AppFuse 1.x to use Maven 2 and JDK 5
and annotations. The major reasons we
use Maven 2 are:
Dependency downloading
Easier maintenance (everything can be compiled at once)
Easier upgrading for end-users
If you'd like to help out or ask
questions about AppFuse 2.0, please do
so on the user mailing list. If you'd
like to use AppFuse 2.0, see the Demos
and Videos and use the QuickStart
Guide to get started.
Related
I have been using PHP (OOP) with various Frameworks for all my webdevelopment projects for the last few years. Next year I'll have to learn Java as part of CS university course, so I thought it may be a good idea to switch to Java for some of my smaller webdevelopment projects, so that I can get to know Java in advance.
What do I need to use Java for backend web development? What IDE/Server software/etc. should I use? What frameworks are available and which documentations could one recommend?
I know this is strictly not a Stackoverflow question, but I'd really like to hear the opinion of the very professional community here at Stackoverflow!
The web development component of Java is called Java EE. You should look into that.
As IDE you can use Eclipse, Netbeans, etc. (you can download versions that are specifically aimed at Java EE development, with bundled servers like GlassFish or Tomcat).
Use all of these technologies and learn what the terms mean: Servlet, JSP, JSTL, Filter, Tag library (create your own).
A very popular framework is Spring. Spring Core and Spring MVC has recreated most of the Java EE components but in a way that is easier to use.
The DWR library makes AJAX very easy.
Learn how to use Spring ORM, Hibernate or JPA.
I also just want to add my own answere to show what I choose in the end to work with:
IDE: NetBeans
Framework Play! Framework
in our company we are switching to Java. We want to develop Web Applications using the Spring Framework. We had 4 days of training where the trainer showed us Java using the Springsource Tool Suite which is based on Eclipse.
However i have used previously NetBeans for developing PHP applications.
What do i lose using NetBeans 7.0 compared to using Springsource Tool Suite 2.7.0? Is it really worth developing Spring Framework Web Applications using the dedicated Springsource Tool Suite with having in mind that we are novice in Java?
UPDATE
To provide more information: we want to use the following technologies:
- Spring Framework 3
- JPA (Hibernate)
- Apache Wicket
- Maven
STS has built in Spring refactoring facility - one among a variety of reasons why STS is the preferred choice for spring development. So for example, you were changing the bean names, the STS will automatically update the bean definition XML files.
I personally prefer eclipse over Intellij Idea; since eclipse is more lightweight than IDEA. Since STS is built on top of eclipse, that makes STS my preference too.
All the spring tutorials and examples by springsource are in STS.
STS is free whereas IDEA is not. I haven't used Netbeans though.
I would recommend IntelliJ over Eclipse. I can't speak for STS, since I've never used it, but IntelliJ's Spring support is excellent.
I couldn't disagree more with the comment above stating that Eclipse is lightweight.
STS is the best IDE for Spring IMO. Besides Spring ,it includes Maven, Spring Roo which I like very much and there is a version that includes Google's App Engine SDK and GWT SDK.
I think the biggest reason to go with STS is that the majority of developers using spring choose that IDE. Most of the tutorials, forum posts and documentation you view will be based on STS. I also like how maven and tomcat are prepackaged in the IDE. Also the Spring Template Projects easily port into STS, these projects are extremely helpful because they are prewired. I'm not sure if you can get them through netbeans without a bunch of initial configuration of maven.
I suggest using IntelliJ IDEA. It is the best IDE for developing SpringSource applications in my opinion. You can demo the ultimate version it or use the Community edition.
I like IntelliJ quite a bit. However, if you are an Eclipse shop, look at SpringSource Tool Suite http://www.springsource.com/developer/sts
There are many helpful tools in STS specifically designed for Spring Developers. Check out my DZone Refcard which was just published this week http://refcardz.dzone.com/refcardz/eclipse-tools-spring
I like to use IntelliJ IDEA. It has some advanced code related suggestion which would give not only benefit for Spring Framework, but also other frameworks. To me, it is the complete IDE. For Spring it gives convenient auto detection feature. The code navigation for Spring Framework in IntelliJ IDEA gives uniqueness and convenience.
is Spring Roo supposed to be only a tool for rapid development of web applications, thanks to all that scaffolding, source code generation and similar stuff, such as grails for groovy.
Or can it be utilized as a source code generator / osgi platform for building enterprise applications ? What I mean is, that there are source code generators, that generate only domain model and light DAO layer based on metadata definition when starting a new project and you have to stick to the objective - create a web app. But there are also generators, that generate the entire DAO and service layer - fantastic for iterative dev process of bigger apps - and you are not restricted otherwise, you are just using it to build you enterprise app step by step. With this you can really build a huge enterprise applications / platforms that will be maintainable for a very long time.
Also the OSGI model could be employed in a way, that you might develop a core portal application for instance, with a package of social office addons that you may plug in, etc. etc.
My point is, that Java development needs to be "Rubyfied". I mean Ruby on Rails environment where you have everything unified and standardized. A platform that could rule the java world some time :-)
Since Thomas and #jhericks trashed Spring Roo I'm going to say I actually like it mainly because its not a framework. Roo also (now) support multi-maven modules.
To answer your question: Spring Roo is not framework. It is code generation.
So yeah it is a code generation platform not only for web apps but any Java app.
There are couple of reasons why some people don't like Roo:
It uses AspectJ
It uses Spring
It does Code Generation
After building several applications with Spring Roo I can say its greatest value is its ORM generating abilities and its DataOnDemand test generation.
Other than that Spring Roo is really just Spring *.
Frameworks like Play and Ruby on Rails are just not really the "Java Way". That is most Java (Web) Apps I see are combination of libraries and not a giant framework.
As far as I experienced, Spring Roo is meant to be a RAD/bootstrapping tool for web applications. There are some major features missing and not on the roadmap that would make it truly useful in an enterprise application context. An example being multi-module Maven support.
This rather polemic article and its follow ups summarize quite well how I feel about Roo and similar projects like Seam Forge.
If you are looking for something RoR-like for Java check out the Play Framework that currently seems to gain momentum.
I recently came across spring surf project and Spring webscripts .
Both these technologies (I guess) seem to come from Alfresco developers
Web Scripts
Surf
Is it correct ?
As I was investigating both of them couple of hours, it seems to be very clever technology. Little bit focused on CMS, but it makes better impression and sense than JSPs, Icefaces (which I haven't liked for many years, but I've been forced to use them).
It's a shame that both technologies are in state of incubation within springsource.
Could please anybody who has experience with them tell us some stories from production use ?
I noticed that Surf can be used together with Spring Roo. Is there any other support, like maven, IDE etc ?
Yes, those technologies were developed by Alfresco and then donated to Springsource to detach them from Alfresco and become first-class web development libraries.
I'm not aware of any remarkable use of those libraries out of the Alfresco scope, but that's most likely because of my current focus being on Alfresco, or because they are still quite new as standalone projects.
Have a look at Alfresco Share or the Web QuickStart to see how web scripts and Surf are used to create fully functional and standalone applications.
Spring Surf and web scripts are built with maven and deployed into Alfresco maven repository, which should give you enough support for your maven builds. I'm not aware of any maven archetype for Surf or web scripts.
As per developer tools, I'm only aware of Spring Roo. The official documentation could bring some more information, though.
If we only need to graphically authorize a user,
view a few tables representation (from database),
ability to change data in the database visually
what tools to use to write such a web application that will run on Tomcat?
What framework allows to do that in the most straightforward, easy-to-manage and elegant way?
I would look at Spring Roo as the framework for building your app. It will allow you quick construction of most of the features you are looking for in several minutes. (or so they claim)
There are so many elegant web frameworks available to choose from...
A JSF solution is a one suggested by the Java EE standard - if you select JSF you'll have to be more verbose in the code, but you'll have the assistance of tools such as the Visual JSF designer in NetBeans. Using JSF2 is a much better idea, IMO.
I personally recommend you to have a look at Wicket - it's a great Java web framework, centered around ideas such as ellegance, simplicity and usability.
There are many more great frameworks out there, but this is a start.
You can also try Grails. It's Java + Groovy scripting + Spring Framework + GORM + Spring Security. Less boiler plate.
Tools: Spring Source Tool Suite (Eclipse based IDE).