

HTTP+JSON Services in Modern Java - AirbnbNerds
http://nerds.airbnb.com/httpjson-services-in-modern-java

======
Cyranix
Thanks for the introduction to Twitter Commons! I've used Dropwizard in the
past and loved it. It seems like the shared libraries of both frameworks --
Jetty, Jersey, and Jackson -- provide them with an equally strong foundation.
Guice seems to be provided by default in Twitter Commons whereas it's provided
via a separate module in Dropwizard, so that's more or less another
commonality between them. Can anyone describe differences or pros/cons between
using these two frameworks? (Similarly, who was being referenced in the phrase
"an opinionated framework that forces certain patterns on you")?

~~~
tknaup
Dropwizard wasn't around yet when we built our first service.

I'm not referencing any particular framework, but Rails is an example.
Recently the Rails team has done a lot to modularize it too though.

------
mintplant
This would be a far better article if it was interwoven with actual code
examples. Otherwise, you'd have to switch back and forth between a copy and
their code and the blog page to actually grok what they're talking about.

------
sandGorgon
Could you talk about how you're deploying these services. Coming from
passenger world, I found jetty deployment to be a bit complex.

are you using maven, etc.? I would be very interested to find out how a ruby
centric dev shop is handling Java deployments and builds.

P. S. how about mocks and testing?

~~~
csense
Please, if you're starting a new Java project, and have any say at all in the
build process, don't use Maven. Go with Ant. You'll thank yourself later, and
anyone else who ever has to build the project will also thank you.

Personally, I can't begin to describe the awfulness of Maven in words. I'd
sooner use makefiles and shell scripts, or manually type in build commands
written in pen on a stack of notecards.

But you don't have to take my word for it; here's an SO discussion about how
much Maven sucks:

[http://stackoverflow.com/questions/861382/why-does-maven-
hav...](http://stackoverflow.com/questions/861382/why-does-maven-have-such-a-
bad-rep)

~~~
sandGorgon
interesting - so did you decouple dependency management from tge build process
and still use maven/ivy for that part?

------
frncscgmz
I've build REST applications in Java using the Restlet library before, anyone
knows some of the advantages of Jersey over Restlet?

~~~
avelis
I haven't played with Restlet. From my experience Jersey's magic sauce is its
annotations. Jersey's featured set of annotations can allow for expressive
source code. Basically I can create and define my API with less boilerplate
source code.

------
neuronotic
Did anyone have success at getting this to work? I'm getting this error:

com.twitter.common.application.AppLauncher exit

SEVERE: Failed to apply arguments

java.lang.IllegalArgumentException: Failed to parse:

app_class - No parser found for java.lang.Class<? extends
com.twitter.common.application.Application>

------
ElectronPusher
Minor gripe, but a list seems wrong for that usage. A map or set seems more
appropriate.

Referring to: [https://github.com/airbnb/twitter-commons-
sample/blob/master...](https://github.com/airbnb/twitter-commons-
sample/blob/master/src/main/java/com/airbnb/suggest/rest/SuggestionResource.java)

------
rshm
404 here.

~~~
Terretta
Seems to be at [http://nerds.airbnb.com/httpjson-services-in-modern-
java#mor...](http://nerds.airbnb.com/httpjson-services-in-modern-java#more)

