views:

357

answers:

4

I am new to Java. Its only been six months but I do understand Java.

While reading about it sometimes, I come across these terms - Groovy, Grails, Hibernate, JBoss, Jade and many more.

I know I can read all about them individually. But can somebody give me a treetop view of what is happening here? What is all this? We have Java and these are based on Java? Why so many things? Why do we need them?

+12  A: 
  • Groovy is its own programming language, but runs on a Java Virtual Machine.
  • Grails is a web application framework for Groovy (build websites with database support).
  • Hibernate is a tool for mapping Java objects to database tables and back.
  • JBoss is a Java application server where you can deploy web applications to.
  • Jade, I believe, is a framework for building distributed "agents" in Java.

To answer why we have them: programming languages are not enough. If you were to tell me at an interview "I know Java" but didn't know about things like Hibernate, Spring, log4j, JAXB, etc. I would say you don't know Java. That's because no one builds applications with just the core language any more. They reuse frameworks and components so they can spend less time developing infrastructure and more time solving business problems. So, Hibernate, JBoss, and Jade are reusable frameworks or platforms for the Java language. Similarly Grails is a framework for the Groovy language, both of which support integration with Java.

It's a cool time to be a developer, but there is also so much to learn :-)

SingleShot
cool! I wonder why nothing of this sort happened with other languages - C/C++?
Lazer
I think it has to a certain extent in Ruby, Groovy, perhaps others. There are a good number of libraries for C++ (ex. Boost) but there aren't many that have become de facto standards, whereas with Java there are.
SingleShot
A: 

The Java Posse actually talked about this briefly in one of their recent newscasts. In many programming circles, there is generally one major library or framework for a particular purpose (Python tends to be like this). But in Java, there is often more than one, as you mention. They speculated that this is because the Java programming community is so big that there simply is room enough for more than one major solution to the same problem.

Having said that, the projects you mention are all actually designed with different purposes in mind.

If you have the inclination to listen to podcasts, I recommend The Java Posse for their entertaining look at new technologies around and related to Java.

Greg Hewgill
A: 

Some of this is an analogy and isn't perfect. This is an over simplification but should give you a starting point to fine more info. Groovy is Ruby but runs on the JVM. Grails is a java version of Ruby on Rails using Groovy instead of Ruby as the programming language. Hibernate is an Object relational mapper that is used by a lot of Java programmers and is also used in the Grails framework. Jboss is Apache but it runs Java code instead of CGI or PHP. I don’t know anything about Jade so will refer you to SingleShot’s answer. We have so many things because the Java community is huge, and people have there own ideas of how things should be done. We don’t technically need these since Java is Turing complete but they increase developer productivity. It’s a lot easier to use Grails then it is to write Spring XML files by hand.

Jared
JBOSS is not Apache and never was. It was an open source Java EE app server whose company was bought by Red Hat. And it's not even close to say that a Java EE app server "runs Java code instead of CGI or PHP".
duffymo
"It’s a lot easier to use Grails then it is to write Spring XML files by hand." - this is simply wrong as well. Grails conventions are not about getting rid of Spring XML configuration. Sorry, I've got to vote this answer down. There's too much misinformation.
duffymo
I'd also disagree that 'Groovy is Ruby on the JVM' - JRuby is Ruby on the JVM, Groovy is a lot closer to Java than Ruby. Grails borrows some conventions from Rails but is also quite different in it's approach to modelling the database.
leebutts
Where I worked we chose Grails and one of the major reasons was avoiding the complexity Spring caused us for basic web apps.
Jared
A: 

JADE (Java Agent DEvelopment Framework) is a software Framework fully implemented in Java language. It simplifies the implementation of multi-agent systems through a middle-ware that complies with the FIPA specifications and through a set of graphical tools that supports the debugging and deployment phases

for more informations: http://jade.tilab.com/

djug