Hibernate is not really a database abstraction layer, though. It is an ORM so by design, the developer works with objects and Hibernate takes care of the remainder (how those objects get saved in to a RDBMS). I don't think you are comparing two competing libraries, rather you are comparing a full object oriented approach (Hibernate) versus an object-per-table approach (jooq or Rails) and these are fairly different approaches, each with their own tradeoffs.
For instance, jOOQ would not be able to map to an RDBMS as well as a NoSQL store. Hibernate has the Hibernate OGM project (just starting) which should be seamless to the developer (unless they did a bunch of stupid things like hard coding SQL queries and whatnot).
Anyway, I think jOOQ looks interesting but I don't think it's targeting the same thing as Hibernate. Hibernate would prefer you create an object model and then let it generate tables (or tweak that) instead of saying "here is my schema create DTOs". Hibernate is for people like an ex-coworker I had, who wanted to work with an object model and didn't care how it got persisted. Does this cause problems? Yea, we discovered SQLServer has a limit on the number of joins in a query; to him, the real power came from being able to work with objects and not worry about databases.
Also, Grails has a great wrapper for queries.
> So for someone familiar with Rails and it's patterns (or anti-patterns depending on your view) what are the most common tools for achieving the same things in Java
How has someone not suggested Grails?
It's definitely not down, and http://www.downforeveryoneorjustme.com/grails.org shows it being up also.. Try it on someone else's machine and/or network. One thing that did change recently is they're using CloudFlare for SSL and the http index page is redirecting to https, maybe that's stopping you? Do you configure your browser to not allow that?
Try going direct to http://grails.org/plugin/spring-security-core - that's not redirecting for me.
If all you're looking for is release builds, those were recently mirrored at GitHub with release notes and direct download links: https://github.com/grails/grails-core/releases
I also prefer idea Intellij, for personal use the licence is $200(well worth it), but if you can hold out they usually have one really good sale once a year, where I picked up a copy for $50.
Other than that there is the Groovy/Grails Tool Suite, which is free and based on Eclipse http://spring.io/tools/ggts I've had mixed results with this in the past, but it's free, so at least worth a try.
Also don't for get you have grails console: http://grails.org/doc/2.0.2/ref/Command%20Line/console.html Which can be useful for debugging/playing with code, and looking at the code generated from an ast transform.
I'm more than a little familiar with Grails, but I haven't integrated Angular with it yet. The link you provided is about how I was imagining it would work. Just a bunch of ajax calls to the controllers in grails.
Here's a plugin for angular: http://grails.org/plugin/angularjs-resources
It looks like it makes it easier to use the angular stuff within the gsps.
If you have any other specific grails questions, shoot.
The official user guide was what helped me the most when we studied it in college. I also browsed through Grails In Action and that helped me somewhat with my project work.
Good luck with it, I found it to be an interesting framework and really helped speed up development in Java.
I'm a Grails hobbyist. I'm not aware of any really good tutorials. Your best friend is going to be this page.
I jumped into Grails without much knowledge of the Java ecosystem, which threw me for a loop. There are many different places you may have to look if you're having trouble with something. You need to determine whether your problem is with the Grails framework, the Groovy language, or one of the underlying pieces of Java, and then base your search on that.
Are you basically familiar with the Model-View-Controller layout of the Grails framework?
A tool we often use where I work is GRAG. It creates your domain models based off your legacy database. Very useful to get up and going quickly.
You will often have to make a handful of modifications to the domain models created, but nothing show-stopping.
I don't quite get what that test has to do with grails being slow. First of all, any groovy code that runs in a grails request is usually of insignificant execution time compared to the rest of the request (network, routing, param bindings, bean injection etc). The grails implementation itself is mostly written in java and does not suffer from the groovy slowdown.
Secondly, if you for some reason needed higher speed in that file printing, you could either compile the java code in a groovy file, or simply implement your logic in java and call that (groovy++ should give you almost native speed too).
The long stack trace you generally got is annoying, I agree on that, even though it is of no real inconvenience other than having to scroll up there. Stuff has become way more terse in 2.0. STS, netbeans and intellij points you right to the offending code by clicking the stacktrace in the console just like regular java code, you just had to (before 2.0) scroll up to the top of a 30 line trace.
There is certainly no lack of successful huge deployments with grails: http://grails.org/Testimonials .
Serving a billion requests a month is more of an infrastructure / architecture design issue than it is a language/framework issue.
I might come off as a fanboy (guilty as charged), but I do get a bit tired of people claiming bad things about grails that simply are not true.
Yeah JARs are the top drawer prize - but generating them can be a bit tedious when you're developing and deploying a lot to something like JBoss/Tomcat.
Like, I use Grails a lot which is great for hot-compiling of changes. When it comes to deployment, I just have an embedded jetty server (using war-exec), so I can do this on the server to get it running:
git pull --rebase grails prod war java -jar target/twopee-1.0.war
If I tell curl to follow the redirect with the -L option curl fails during the SSL handshake. This matches what happened with "lynx" although I was able to tell lynx to ignore the SSL error:
:/opt:99> curl -v -L http://grails.org snip * Ignoring the response-body * Connection #0 to host grails.org left intact * Issue another request to this URL: 'https://grails.org/' * Found bundle for host grails.org: 0x7f9761c11a90 * Hostname was NOT found in DNS cache * Trying 104.28.16.63... * Connected to grails.org (104.28.16.63) port 443 (#1) * Server aborted the SSL handshake * Closing connection 1 curl: (35) Server aborted the SSL handshake
I don't know what to tell you, on a server outside of my network that I have shell access too it can't connect to grails.org either. It can connect to cnn.com just fine.
[meow ~]$ curl -v http://grails.org * About to connect() to grails.org port 80 (#0) * Trying 2400:cb00:2048:1::681c:113f... ^C
[meow ~]$ curl -v http://www.cnn.com * About to connect() to www.cnn.com port 80 (#0) * Trying 23.235.39.184... connected * Connected to www.cnn.com (23.235.39.184) port 80 (#0) GET / HTTP/1.1 User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2 Host: www.cnn.com Accept: /
HTTP/1.1 200 OK
Well http://www.isitdownrightnow.com/grails.org.html shows it as down, so either "down for everyone or just me" or "is it down right now" is lying" :-)
http://grails.org/plugin/spring-security-core does load for me but without a stylesheet. Something is not configured right on the server end. I have access to a server outside of my current network, let me see what curl does with it from that server...
I want to share some links that could be useful.
rest plugin to handle in-house auth with tokens http://grails.org/plugin/spring-security-rest
scrib https://github.com/fernandezpablo85/scribe-java
Rest plugin will do the job for custom tokens. And scrib is a fancy way to do the connections with facebook, google, etc.
Hope it helps!
install grails-melody plugin
The Grails user guide actually uses JQuery in its examples of ajax functionality. Are you saying you don't need ajax and just want to deliver the whole dataset, because that is trivial. http://grails.org/doc/latest/guide/theWebLayer.html#ajax
There's a plugin for anything specific usually.
I was just as OSCON, and talked to some of the spring guys. Their advice was to not start a new project in Roo. They have what they believe are better ways of doing what Roo used to do. For example, for starting a project and getting all the configuration set up properly, the now recommend spring boot (which can be configured to generate either a traditional war you put on an app server, or a jar with an embedded app server), and for handling CRUD stuff, instead of using the roo approach of aspect j files that get injected at compile time, they recommend using spring data repositories (http://docs.spring.io/spring-data/data-commons/docs/current/reference/html/repositories.html).
As far as an admin interface to crud operations for your data--I don't think there's anything built in that will give you a UI, but there is something that will give you a complete rest interface to your objects--see http://spring.io/guides/gs/accessing-data-rest/ for an example.
All that said, I agree with the other posters, who said Grails is closer to Django. For example, you actually can get a prebuilt admin ui: http://grails.org/plugin/admin-interface
You will discover soon the basic concept via official grails.org/tutorials and then i found very useful simply reading the documentation at http://grails.org/doc/2.3.x/ ... you will find a lot of interesting topics at https://leanpub.com/groovy-goodness-notebook and groovy reference at http://groovy.codehaus.org/
It may be a lot of material but learning curve was quite fast for me simply reading the documentation.
My first full stack project used around Grails. Grails is a framework which uses Groovy but you can integrate Java if needed.
I created an LMS (Learning Management System) which integrated with the Xenserver API. You could compare it to Code Academy but for learning system administration.
I did some stuff with JSP and I hated every minute of it. If you have to use Java/JVM, look into frameworks like Lift (in Scala), Play (also Scala), or Grails (in Groovy).
But for a beginner, I would still recommend starting with a dynamic language like python or ruby instead of Java. Personal preference though.
Java is beast when it comes to Web Development. There are many many frameworks. So of course you are over whelmed with choices.
Which one to choose is again another big question. If you are comparing java web development with PHP, things are different. PHP is scripting language. Now it has many features like classes, inheritance, etc. but it started as scripting language. That's why its easy to pick up and go with it.
Java is a language. So to develop web applications with Java, you need to know about language itself then you can choose frameworks based upon your need. If you are learning and want to go for simple needs try Play Framework or Grails. If you want to go for complex, try Spring framework.
How do you start? I would say try learning concept of MVC or DI (Dependency Injection) and pick one strong framework. How to pick one? Try Google Trends or stackoverflow.
If you're giving someone a class that makes them do a lot of the hard lifting themselves, that's not fun. :(
If you're interested in redbean, you might get really interested in GORM with Grails. Only drawback is you have to use Java/Groovy, instead of PHP. Perhaps not as much of a downside as you think. :)
http://grails.org/doc/latest/guide/GORM.html
def beatles = Artist.findByName("Beatles")
def albums = Albums.findAllByArtist(beatles)
etc
groovy docs are good. groovy in action 2nd edition is on the way.
for grails, grails reference docs are great. http://grails.org/doc/latest and peter ledbrook is also writing a new grails book for grails 2.0.