Part of Oracle’s keynote demonstration across the platform editions from mobile to enterprise: here is the Java ME 8 with the chess playing robot.
Work, technology, training and people
Let me repeat myself for the umpteenth time, I am very sorry to my regular readers, for this next section of prose. Please skip ahead if you feel the need.
I feel like I am back in secondary school sitting in a half-hour detention as that mischievous thirteen year old child again and I have to write this; I goto technology conferences, because:
- Many times, I win acceptance on a proposal or two to present at the conference. Therefore I am a speaker and I attend the conference.
- I want to learn about the next step in a particular technology that I am interested in for professional and/or enthusiasm reasons.
- I meet people at the conference who share the same ideas and thoughts on technology.
- Every once in awhile, at a conference, I learn about a new direction or the beneficial technology in order to progress my career.
- Increasingly, I contribute answers back to new people who ask me questions. I am finding my role reversing slowly but surely, as IT experience does pay off in the long-term.
Where in the above bulleted list, are any notions about wasting time, idling of thumbs, or any hint of unworthiness? Conferences are there to help developers, designers and architects progress forward, move that technology vector in the correct direction, or help those of choose where to target next. Conference help improve knowledge share beyond the confines of corporate walls and into the wider world of community. Conferences are about individuals in a vulnerable learning mode (*this is education 101). If you really think that conferences are all about late parties, eating delicious food and drinking beer, sipping fine wines, alcohol and collecting tee-shirts and freebies, then you must be living on a cloud nine. At least for the good speakers, it is tremendous work to prepare materials, slide decks and coding demos. I can assure you that it is never the Carry-On Pathé saucy movie mixed with the British idiomatic having a good time. In fact, it’s bloody hard work. Conference participants are those who do not know the technology inside and out, and that is why they are there, to get good. It seems like a duh reason, but really it is so simple: learning, learning, and learning. So please Mr. Management don’t scandalise your direct reports by stifling their learning and self-improvement with your outmoded and prejudiced viewpoints of modern IT business. Oh by the way contractors also are learning and in the same vulnerable mode. As contractors if we are not continuously learning then we may as well stop being contractors right here, right now. My rant is over, let’s get back on track with this JavaOne 2013 Report.
It’s about humanity: human after all
I am stealing a phrase from the title of a Daft Punk album: Human After All. Here are some photographs of these people:
The Belgian connection: Far right Jo Voreendecker (Devoxx.be), far left: Stijn Van Den Ende (Devoxx.be)
The Sunday opening JavaOne keynote took place back at the familiar Moscone Center for the first time since 2009!
I am sitting next to two Very Important People in Oracle Java. Left is Cameron Purdy who is responsible for Java EE products, VP of development and in the centre is Nandini Ramani, VP of engineering, Java client and mobile platforms.
This is Stephen Chin, the Nighthacking guy, the JavaOne conference chairperson. He is ultimately responsible for the programme content!
This is Adam Bien after one of his four sessions. I think this was Demystifying Java EE.
This is Ms OTN herself, Tori Wieldt, and the owner of the Twitter handle @java. I believe it was taken at the JCP Evening event.
Here are the Java EE 7 book authors at JavaOne 2013: (L to R) Josh Juneau, Max Bohnbel (standing in), Josh’s friend, Antonio Gonclaves and myself. (I am actually holding a different Packt Pub book here: The Gradle book.) Arun Gupta is taking the photograph with my camera that is why he is not pictured. We are standing in the Digital Guru bookstore at JavaOne 2013, Hilton Hotel.
Here is Arun Gupta in the rightful photo of the official Java EE 7 book authors at JavaOne 2013. (L to R): Josh Juneau, Arun Gupta, Antonio Gonclaves and, of course, yours truly.
The developer handbook
Let’s begin with the Developer Handbook. I am really happy about crossing the finish line: I am now a published technical author and the subject matter is terrific, it couldn’t be better and relevant to my career. Java EE is my day job and enterprise Java in its many forms with or without EJB, Spring Framework,whether it is in a so-called lightweight Java EE or a WebSphere application server 7 is my bread and butter.
The Java EE 7 Developer Handbook was printed on Friday 20th, September 2013, whilst I was on a transatlantic jet flying 39,000 feet over Greenland. The book is published and is out now! Sadly, the first printed books never made it to San Francisco. I personally would have loved to sign them at the Oracle bookstore. Ultimately, I take full responsibility for this failure, because I am the main content writer. There is no book with the author writing it. Despite my best intentions and an urgent final push to deliver the book to the JavaOne, the mess of internal communications caused us, Packt Pub and myself, to fail in this endeavour. Therefore I apologise to you the readers who were waiting patiently after the announcement. I shall say publicly that the Digital Guru bookstore and Oracle are themselves excused from any fault there.
I know that some of you have already bought my book. Hopefully, I can sign it for you in person at the next conference opportunity. At that moment, it looks like Devoxx 2013 Belgium, although at the time of writing, my attendance is subject to confirmation. The book is available in print from Barnes and Noble, Amazon UK and Amazon USA, and is available on Kindle and directly from Packt Pub. By the way, you can try the sample chapter 10 about Bean Validation 1.1.
Antonio Gonclaves signs copies of his Java EE 7 book at the JCP Sunday meeting. (He is a lucky devil!)
The exclusive Sunday Brunch in the Hilton hotel with Oracle was great to meet up with other Java leaders and community folk. The announcements were less exclusive this year in comparison to 2011, when I was really worried about the future of JavaFX, moving 1.3 to 2.0. I think at the brunch some leaders were explicitly asking about Nashorn and embedded mobile environments, the eventual unification of Java SE with that Java ME. It is Oracle’s intention to achieve unification of SE and ME post the Java SE 8 release for desktop.
The fire at the Buzz Cafe on the closed-off Mason street.
Lambdas had the attention of lots of JavaOne attendees. There were full sessions on Brian Goetz‘s introduction into Lambdas in the upcoming JDK 8. This should not surprise anyone, as I said in the piece about conference education, there is a void in knowledge about functional programming in the Java language, and attendees want to comprehend and become accustomed to the next breaking wave: Lambdas.
Even I, yes me, a Java Champion had a false thought about Lambdas before I attended JavaOne 2013. Originally, I thought that Lambdas would mean tons of porting and upgrade work for existing library writers. In fact, Lambdas will be backwards compatible with many libraries. Certainly, library will add direct Lambda compatible over time, and there is really no rush. The Java compiler performs functional interface conversion between the types. Brian Goetz made it absolutely clear that there is no new function type in Java 8 and therefore there is no radical revamp of the Java type system. In other words, the compiler will do as much work as it can, to get the correct result. Sometimes, the compiler can’t infer argument types and/or the return type of a functional interface. It needs persuasion by declaring explicit parameter types or a casting the result type of the functional block.
Brian Goetz strikes a pose during his Road to Lambdas session
Later in the week, there are another session, Lambda: A Peek Under Hood also with Brian Goetz. I was surprised to learn that the JDK 8 implementation is unoptimized and yet already achieved 10 to 20 performance compared to traditional inner classes. Peeking under the hood of Lambda, entailed learning about workings of inner classes, finding out why they were not a favourite with the team. Why they could have locked in the Lambda implementation forever and thus making it difficult to adapt and maintain with any future innovations. The current JDK 8 implementations uses of invokedynamic calls, which cleverly avoids hardwiring in the Lambda implementation to a specific strategy. Invokedynamic calls implies the optimisation of lazy loading of Lambdas much like a factory design pattern shared between the JVM and the [Java] language runtime.
I gave up my Canon EOS 700D camera to the one of Nao Guys, who took this picture in the exhibition hall.
Java enterprise and crossover
Amongst the traditional Java EE sessions, Adam Bien had a great one about Demystifying Java EE headaches and myths. He did well to demonstrate the so-called heaviness of a EJB, the stateless session variety, as a fantasy by throwing a deliberate exception and then invited the audience to inspect the stack trace. I wished that I had thought about that one as an explanation, instead of the word prose in my book. The stack trace showed that there only four indirection calls, which is nothing to the Hotspot JVM, especially once it accelerates the invocations by aggressive inlining. In fact, Adam had a run of four sessions at JavaOne, which even he said to me in conversation that it was a surprise for all acceptances.
Another angle on the keynote demo: Java ME 8 running on an embedded platform controlling this robot arm.
I went along to a fully attended BOF on Monday night that actually could have been a technical session: Java Persistence for NoSQL. The stupid thing was that NoSQL is area of Java EE that potentially requires standardisation and more input from open source projects and vendors. The audience were probably expecting a solution for Java EE and NoSQL. The BOF was chaired by Shaun Smith of EclipseLink, Oracle and he noted there is experimental support for MongoDB and other NoSql storage and this was bleeding edge EclipseLink. It is not ready for production. This BOF actually needed the real vendors and people who know the inside-and-out of the key values databases to be available. It is worth noting that Pivotal’s Spring Data project addresses this area. I decided that more experts were required, so I bailed it halfway through.
I skipped briefly into Emmanuel Bernard and Marina Vatkina’s Nuts and Bolts of Java EE Interceptors talk. This was a condensation of the specification and the reason why Interceptors were stripped out JAX-RS and CDI into their own JSR. This was revision subject matter for me, obviously, being a Java EE 7 book author! However, it was very good to see their interpretation of the specification including declarative transactions for CDI beans, for the very first time. I think there was guy there that did not understand the specification on initialisation callbacks, @PostConstruct and @PreDestroy are not permitted to throw exceptions, yet he kept asking for resolution on it. Sometimes there will be students who attempt to jump two chapters ahead of the subject, but they need to step back and learn the basics of containers and lifecycle. Sadly, I had skipped out of this talk and I missed my chance to ask a question about CDI extensions and interceptors.
Java Champions reserved seating at the Sunday evening Keynote.
Here is the JavaFX update. It looking still great after I dropped it completely this year in order to write and finish the Java EE 7 Developer Handbook. JavaFX 8 is in good hands under Richard Bair, Kevin Rushford and Jasper Potts. It is almost completely open source, the tricky remaining part is the media components and modules and that is expected to be released in the first few months of 2014.
Gerrit Grunwald, as you know, or rather many of you do know, is heavily involved in JavaFX components on the desktop. His work is found in the JFXTras.org project. I attended his talk called Use The Force, Luke.,which he gave a very prescriptive advice on how to write JavaFX components using CSS support instead of graphic nodes. The key advice is rely on CSS to draw gradients, shapes and regions in order to reduce the number of graphics nodes. His advice was really relevant to embedded JavaFX development on the Raspberry Pi. Gerrit also showed some excellent examples of writing to the JavaFX Canvas using the ImageWriter and still there were graphic designer notes for the willing apprentice. By the way, Gerrit said that he has fallen in love with Lambdas as he has been recently developing with the JDK 8 preview on the Pi, which of course has Lambdas in preview. Here is another instance of the crossover pollination, and also a nice nod of the head to web technology. If you understand CSS 2 then you can probably follow along with the JavaFX CSS extensions, pay particular attention to the Scalable Vector Graphics paths and how it is so simple to define a shape using Adobe Illustrator or InkScape and get it imported into a CSS file.
After his talk, I did ask Gerrit about his thoughts on JavaFX 3D and he said that really he has no need for it at the moment. He also gave his opinion on Skeuomorphism versus flat-level design, and Gerrit said that the new interest (rad or fad) in flat-level design is impractical for his clients in the engineering industry. “They want see controls that look like real dials, input and outputs on an industrial control panel. If they were flat then it wouldn’t work.”
Text cannot do Gerrit Grunwald presentation full justice, when you get a chance, go and see it visually on Parleys. I believe these talks will be published about two weeks after JavaOne, online.
Here is Gerrit Grunwald giving me [us?] the +1 sign.
I attended the JavaFX State of the Uniont talk, which was all about the open source project OpenJFX, which is now part of the OpenJDK effort. Richard Bair and Stephen Northover discussed the various modules of the OpenJFX project and how it was put together as an architecture. The media modules will be released as open source later as I said at the head of the section.
They confirmed for me, at least, that the OpenJFX project in mercurial is the development basis for JavaFX 8. Oracle take this HEAD version and for JavaFX 8 Runtime add some proprietary closed source bits and bots. For the most part, OpenJFX project is the core source code. Northover explained how the team has fought the various issues porting Ant to Gradle over the past 9 months or so. There was also fair amount of description and architectural diagrams over the Prism/Glass interface. This talk was usefully for the strongest coffee drinker hacker, who wants to port JavaFX to a new CPU tool chain and operating system. (I am looking at you the hard-core iOS developer with Objective C and OpenGL knowledge, which I certainly do not possess at this point.) If you seriously about the internals of OpenJFX this presentation is worth also checking out on Parleys as soon as humanly possible. Richard Bair went over the governing rights issues to becoming a JavaFX committer, it takes dedication, patching of code and a mentor to guide anybody who wants to achieve this accolade. It is a pity that many recent OpenJFX new committers could not be at JavaOne in person, because I’d dearly love to hear their views on the open sourcing of JavaFX.
I partially jumped into JavaFX 3D talk with Kevin Rushford and Peter Chien. I think this was a simple update on last’s year discussion. In JavaFX 8 we know have movable cameras, the camera itself is a node and therefore it is easy to manipulative. The new stuff is the support for reading 3D graphics files, especially from the popular Maya, Collada and Blender formats. At the moment, JavaFX 3D supports Phong shading only. These guy did say JavaFX 3D is not functionally equivalent to Java 3D in the 8.0 time format. For instance, the picking support is not good enough, they said and also they want to allow the developers to control 3D normals. (My goodness! We are totally inside crossover with 3D knowledge if you have managed to read everything up to this point! Normals are from 2d/3d transformation and mathematics; they are cross vector products of two (or three) perpendicular vectors in space. We are quite a long way from Java EE 7 here! It is the nature of the technology beast, and some will say, the flipping belly of the tech-beast 😉
At some point I want to try out this JavaFX 3D myself. I keep meaning to write this 3D space game in my head, and hopefully I will not be 65 years old before I attempt it.
James Ward talks to participants about Web Fundamentals or maybe it was the Play Framework
These are the Parleys guys: (L) Jo Voreendecker and (R) Stephan Janssen
This is a photo of the Demogrounds staff at the Oracle stand. Is it a coincidence that they are all ladies?
Here I am starting with the NetBeans Dream guys and the Bruno Borges (far R), I am almost blocking the face of José Pereda (R). NetBeans Dream team members are Sven Reimers (far L) and Alex Kotchev (near L).
I think these are Java speakers and representations from Japan. I believe they were presenting Java EE and GlassFish project on the Sunday.
Sadly, I don’t remember their full names. These fellows are (l) Yoshio Terada and (r) Shin Tanimato. Terado is an Oracle employee, works on GlassFish and held a session on JavaEE, CON10982. Tanimoto is a Japanese speaker on the right with the short beard. He is a GlassFish and Java EE application fixer and he held a session on Java troubleshooting, BOF7862. [Thanks Guys 😉 ]
This is the Oracle tent in Yuerba Buena gardens.
I will leave you in interested quote. Jack Dempsey said, “A Champion is someone who gets up when I they can’t.”
This Peter Pilgrim reporting from JavaOne 2013