Blog: JavaOne Day 2

Yesterday was Community Day and a bit low on sessions, but day 2 of JavaOne really got technical if you wanted to. And we wanted it to. Since we had to finish up yesterday’s post only this morning and it’s half an hour drive we missed our first planned session about the Science and Art of Backward Compatibility. As opposed to Oracle OpenWorld, all JavaOne sessions are concentrated at the Hilton San Francisco Union Square, Hotel Nikko and Parc 55 Wyndham – a short distance from the Moscone buildings. Here’s an overview of the various sessions we attended:

I went to Hudson: The Little Heart of Big Enterprises. Oracle speakers Duncan Mills and Winston Prakash skimmed over the basics of Hudson as a continuous integration (CI) server and explored the nuances of Hudson set up for continuous delivery. Hudson is focused on development teams and one of the new features is Hudson team support, a new authentication mechanism which allows your physical team to be mapped to a Team and Team Members and/or Roles in Hudson. The team concept makes it possible to differentiate jobs between teams, such as a nightly build job (“nightlyJob”) for the “dev” team and the “qa” team. Automatically such a job would get the team’s prefix – “dev.nightlyJob” and “qa.nightlyJob” in this example. Connecting your Hudson instance with e.g. LDAP and having new colleagues within the company immediately assigned to the correct team, including proper permissions, is now a breeze. You can get Hudson from Eclipse nowadays. Read more about team support here.

Java-powered chess robot

Java-powered chess robot in Grand Ballroom, Hilton

In Getting Serious with Versioned APIs in Scala we met the company behind Lucidchart – a collaborative diagramming SaaS application. The session summary stated they would explain the migration from a monolithic CakePHP/MySQL application to a RESTful system based on Scala and Play! and how they ended up with a working set of services. Although I had hoped to actually see some (architectural) decisions to ditch PHP and the design of the new Scala (versioned) services, the speaker concentrated much of his effort explaining REST and how that worked out in some of Lucidchart’s webservices. Pretty interesting if you’re going REST, less if you wanted to see actually Scala and/or Play! in action.

“An EJB is just a CDI bean with aspects. Just 4 reflection calls.” - Adam Bien

After lunch with spicy chicken and rice it was time for some Demystifying Java EE with Java Champion, NetBeans Dream Team Founding Member, Oracle ACE Director and Java Developer of the Year 2010, Adam Bien. We’ll, he lived up to his reputation. He “demystified” a lot of misunderstandings about JEE in a sort of Q/A-format with himself – but he did reward daring audience members with smart questions with a special AirHacks.com sticker ;-) Questions like: do we need transactions? Is EJB bloated? (“just have an EJB throw an exception and look at the stacktrace”) What’s the overhead for an empty transaction (“None”), how does dependency injection work, is EJB pooling needed, using @Inject vs @Resource vs @EJB vs @PersistenceContext, why AOP didn’t took off in Java EE, concurrency & thread safety, high availability without a cluster, does JMS 2.0 scale well, is JSF the silver bullet, what’s the deal with CORBA and RMI…and more. The fasted pace I’ve ever seen in a session! Very good.

Old-school arcade, Parc 55

Old-school arcade, Parc 55

As if it wasn’t enough, right after it Coding Java EE 7: Making Easy Even Easier was up. Lincoln Baxter from Red Hat and Arun Gupta from Oracle took us through a the new JEE 7 features which really simplifies a developers life. A 30-line ‘classic’ JEE 6 way of sending a message to a queue has been replaced by just a few lines, some new annotations and JMS 2.0, designed specifically to take the boilerplate and error handling out of your way. The new Batch API with its reader, processor and writer – heavily inspired by Spring Batch – allows a standardized way in JEE 7 containers for bulk processing. Also a lot of effort has been made in JEE 7 to have all the various APIs aligned more clearly with each other. If you’re interested in trying our some of it yourself, check out the Java EE 7 Tutorial.

WebSockets in JEE 7

WebSockets in JEE 7

French speakers Pascal Cohen of Amadeus and Red Hat’s Corrine Krych took the audience in Embedded DSL: Groovy and Scala Fair Dual along in defining a domain-specific language (DSL) for…moving a turtle around ;-) I wasn’t about actual game programming for kids which the session summary might have suggested, but it was all about advanced techniques such as syntax tree manipulation (AST transformations), type embedding and compile-time metaprogramming. The “live coding” was carefully crafted and prepared in Groovy and Scala to “convince” us to choose one of the other for our own DSL needs. Although suggested to be a fun session, you actually had to have some steel nerves to sit out the entire 2 hours of DSL design intricacies. :-)

End of day 2

End of day 2

After that we were busted. Didn’t take time to eat yet, so stopped for some burgers at Super Duper, back at the Moscone center hoping over there that after dinner the Oracle wifi network wasn’t that congested as it was around the Hilton even around 8 pm. Had to skip 99 Ceylon Idioms because we also had to take a bus back to the hotel and again we forgot to remember the busstop where we got out this morning which kept us wandering for at least half an hour. Anyway, see you tomorrow!