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?
- 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 :-)
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.
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.
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/