“Sometimes life is going to hit you in the head with a brick. Don’t lose faith.” Steve Paul Jobs
I attended many more sessions at JavaOne 2014 than I would have if I had to perform lots of sessions. This circumstance allowed me to relax, to put my feet up as it were. I spoke to many developers and influential people about their future Java prospects. I will give you my opinions on the sessions, I attended.
CON3015 Java EE 8
CON1993 JavaFX 3D: Advanced Application Development
Selfie clockwise from 6pm: Andres Amilray, Ixchel Ruiz and Marcus Eisele.
I will be honest and say that I have not written any JavaFX code for a very long time. Maybe the last time, I fired up that ScalaFX Video Cube was about 2 years ago. I always felt that JavaFX had a specialist niche interest in the world. So I was intrigued with the work that other engineers had attempted with JavaFX 8 in my absence. This session was a 3D demonstration show case, which was chaired by long term advocate Jim Weaver. I was not disappointed, JavaFX 3D is perfectly usable for complicated modelling work. Sean Philips, consultant at Ai, demonstrated the visualisation of chaotic orbits around the moon Titan, using astrophysics data. The idea was to find the most stable orbit for a spacecraft and it helped to have an appreciation of gravity wells in order to comprehend the solution, but clearly the third dimension helped considerably! The thousands of orbits could be tracked and spun on the screen and clearly it was easier for user to decide on a plausible stable orbit. Jose Pereda from Spain demonstrated a leap motion controller connect to a Mac, and using it was able to control a virtual hand in 3D space. He wrote the software interface himself and was able to pick up a virtual ball in 3D space, as he closed his right hand side, the virtual hand would also close. Pereda could even detect movement in individual fingers. I promised myself again to revisit JavaFX and experiment again in 2015.
CON2341 Enterprise JavaFX
Hendrik Ebbers gave this talk on Enterprise JavaFX and I was in the session for most of the talk before bailing out before the end. Ebbers informed us about the way Java FX applications can communicate with the Java EE and another server using the Task API, which allows developer to spawn background threads outside of the display and event handling GUI threads, in order to execute processes that would otherwise block the graphics processes. No user expects to see a spinning hourglass or bouncing beach balls, whilst there spreadsheet is blocked. So this information is very useful for developers. The speaker moved on asynchronous tasks to other areas including the Open Dolphin project, which was mildly useful. It was not clear if the framework was all in and you could use just part of it. I expected more information beyond REST and JavaFX, what about JMS queues or may be directly using RMI using EJB Client? Whilst I found the content fascinating, the delivery was disjointed at times. Nevertheless there was useful info.
BOF JavaOne 2014 Developing Java EE 7 Applications with Scala
So this BOF was my own talk. I will let other folk comment on this session. All I will say that the people who did attended were interested in Scala and Java EE 7 integration. I was surprised by the interest, because the BOF was late in the evening. I had some good questions to the end of the talk. The demonstration went very well.
CON3698 Java on iOS? Yes, You Can!
Henric Mueller and Niklas Therning presided over this packed session. RoboVM translates Java byte code into native ARM or x86 chip instruction code and therefore resultant machine code avoid interpretation. This is called ahead-of-time compilation. RoboVM provides a Java to Objective-C bridge that in order to allow developers to write non-portable code that uses the native iOS CocoaTouch APIs. This means that common Objective-C objects can be used just like any other Java object. RoboVM claim that it is easy to share code between desktop and mobile application by following their model. Muller talked about the standard JDK Java packages, which are
java.util.*. These libraries are based on the work that they did with the Android runtime. The current toolkit, sadly, is based on Eclipse toolchain and Maven, so Gradle and IntelliJ and NetBean developers have a harder time to configure the RoboVM seamless. The talk finished well ahead of time, and the audience in the room asked plenty of searching questions on the RoboVM capabilities. At the moment, RoboVM does not support JavaFX media or JavaFX 3D, because no work has yet been applied to rasterisation and rendering language, shaders for the GPU. These limitations mean that the true cross platform for mobile devices and desktops are almost there. There is however a workaround to access OpenGL and media video and audio features using the CocoaTouch bridge. Hopefully, Oracle and RoboVM and a few of the expert top JavaFX coder may be able to help RoboVM push even further with their breakthrough effort.
Mark Reinhold presents at the Sunday JavaOne keynote and 2015 will be twentieth anniversary of Java, when John Gage of Sun Microsystems announced the Java 1.02 on 23rd May 1995 at the Sunworld conference.
CON2450 Lessons Learned from Real-World Deployments of Java EE 7
This was a talk by Arun Gupta , which covered three industrial deployments around Java EE 7. The first these was a description and overview of a system that Mohamed Taman (Duke’s Choice winner 2014) architected and developed. Taman built an application Union Nations High Commission for Refugee (UNHCR) that just used the standard Java EE 7 API and almost nothing else. The system relied on PrimeFaces JSF plug-in and JQuery for the view technology. The second project was a Red Hat sponsored community project called Miles 2 Run. So it is a bit of cheat, I suppose, as there are no commercial or volume business customers there. The third project was Tipi Camp (tipi.camp), which allows proprietors and owner to have SaaS campground management for about £1/€1 per day. Both of projects relied PrimeFaces, Batch API, Concurrency Utilities, WebSocket and the common attractive standard in Java EE 7 like JAX RS, JPA, Servlet, EJB and CDI.
One could have hoped for more businesses to be brave about Java EE 7 adoption, but I suspect the lack of commercial adoption has to do with the current application servers available: GlassFish 4.1 and WildFly 8.1 are the only two. Until this conference, GlassFish has little commercial support and WildFly just was too new to fully rely on Red Hat. Oracle’s own Web Logic Server has some Java EE 7 features already, but it will not be fully certified until 2015. If Tom EE were to cross the finishing line on Java EE 7 certification line then that it might make the situation easier for businesses to make the leap of faith. Also I think that many people have the wrong idea, still, about what is genuinely heavy weight and light weight, and they still tuned in to Rod Johnson’s devastating criticism of the old J2EE, circa 2002-2007. In fact, the recent popularity of service configuration management technology, Chef and Puppet, and the mentality of high scalable web performance site, “Prepare for failure. Let it fail, let it burn or burn it, then rebuild and restart; or restock”, alters the old argument and renders it redundant.
CON6759 Java EE Game Changers
This was the first talk that I saw with David Blevins, the CEO of Tomitribe. I have seen David before at Devoxx UK in 2013 talk some of these topics, particularly Message Driven Beans and the Java Connector. In this session, he concentrated on embeddable containers and testing. He covered a brief history of the Java EE standards and illustrated how we moved from XML deployment and overkill in metadata configuration to the Java EE annotations that we have now. David wafted the flag up again for meta annotations and stereotypes. I think we need the ability to have meta-annotations in Java EE 8 in order to achieve better readability and flexibility of turning the requirements into working code. He also enthuse over CDI events in order to decouple model and layers in Java EE enterprise application.
David Blevins always has a lot of content and many opinions that presentation time allows, he is worth listening to and watching in my opinion.
CON6650 Understanding Java Garbage Collection
I had penned this session as possibility, but there was no chance to actually attend it at 8am. Sorry. The great thing is that I can pick Gil Tene’s presentation later in the year on Parleys.
CON2228 Packaging Your JavaFX Apps for the Mac and the Mac App Store
Happily, I did make into the conference for this interesting talk by David Ferrin and David Dehaven. This is the session that explained in technical detail how to write a Java FX for the Mac App Store. It is increasingly important, because the trend for even desktop applications looks like sandbox application environment. Also, consumers are getting used to the idea of installing applications from a dedicated store. Happily, JavaFX Mac OS X platform port has supported extensions, properties to integrate a Java application to the native operating system. So the slides for the talk include advice for setting up the menu bar and rendering anti-alias views, which are obviously important for retina laptops. The speakers also gave advice to creating resources for the Mac OS X application, including pixel sizes and dimensions for the application icon and graphics and finally they had advice for getting the application through the store to the other end. Developer will need OS X Yosemite or the last patch update for Mavericks and be signed up to the Apple Developer Program. The answer is no, you can reliably build Mac App Store applications on a Windows or Linux machine, in fact they said the developer agreement expressly forbids it. I thought this was a really helpful session, especially for JavaFX application writer who not yet prepared to go mobile (with RoboVM) and just want to test the waters with desktop applications first.
CON6782 Apache TomEE, Java EE Web Profile, and More on Tomcat
This was the second of David Blevins talks of the JavaOne that I attended. To be honest, I am not sure that I learn more personally, however the material content was definitely useful for new Java EE people. This session was particularly useful for people who want to develop against Tom EE 6, and I also think there are many organisations out there who will not upgrade to Java EE 7 to GlassFish or WildFly, but the impedance mismatch to Tomcat is a lot lower. As this talk was live coding, David demonstrated testing using Arquillian framework using the Tom EE server. He also talked about the web profile and how Tom EE extends it with support for additional APIs such JAX-RS, Bean Validation, JSF, CDI and EJB.
CON1690 Sensor Networks with Java SE Embedded and Java(FX)
The last technical session of the day was Gerrit Grunwald and it was very impressive. Gerrit was a Java FX developer well known in the community and used to work for Canoo, but now is a developer advocate at Google. He is very much in the Internet of Things, and playing with embedded devices. His talk at JavaOne was about home monitoring, which is not the same as automation. He has wireless connected his house with little units called XBEE, which consume low battery life and have a range of sensors, such a temperature. XBEE have WIFI transmitters, so Gerrit distributed nine of the cards around his home including his garden shed and set to work building a Java application to monitor the temperature every 5 minutes or so continuously. He developed the JavaFX 8 user interface for the main pub, which is actually very attractive, and looks like a heat map. Of course, he has the code running on a tablet as well as a desktop. This presentation showed another interesting push for the IoT movement.
Gerrit Grunwald graphical visualisation of the temperature of one of his XBEE controllers as a polar coordinate heat map. He programmed this against JavaFX on a Raspberry Pi and, of course, it works perfectly fine on a desktop machine.
CON1740 Scala Macros: What Are They, How Do They Work, and Who Uses Them?
Unfortunately I skipped Adam Warski talk on Scala Macros, so I can’t tell you much about it. I was walking back to Hilton with Mark Heckler, who was going to the Java Desktop Lunch. I tagged along with notable leaders in JavaFX and Java embedded devices.
CON1766 Reactive Programming for Java Programmers
Sadly, I locked out of this session, because it was full. Yes again, I had pre-enrolled, but there you go, they say the rules are the rules. I actually arrived 3 minutes after 1pm. It was time for hallway conversations of which there were many. I do remember going back to the speaker room to chill.
CON11532 Testing Java EE Applications with Arquillian
Reza Rahman gave this talk about testing Java EE applications. Of course, Arquillian is featured in my first Java EE 7 Developer Handbook. It really does help to validate the operation of CDI, EJB, Servlet, JAX-RS and WebSocket endpoints inside the container. Arquillian is not a unit test framework rather it solves the problem of developing practical integration tests. Reza Rahman covered most of these features. He also touched on Graphene and Warp, which are Arquillian module extension to web driver testing and client and server side testing. Arquillian can also help improve database integration testing with enterprise application with another extension. I think the speaker presented well enough on a complex topic.
CON1914 Map, Flatmap, and Reduce Are Your New Best Friends
The final session of JavaOne 2014 was Chris Richardson overview of the basis of functional programming. The map, flatmap and reduce are operations for manipulating data (immutably) in all functional programming language. Richardson presented the behaviour of these operations in Java 8 with Lambda functions, expressions and the Stream Collections API. He then pointed out the limitation of Java as a language and crossed over to Scala for other examples. A good example of this was the explanation around the optional types in Java. In Java, you can also avoid null pointers, but Scala, as the speaker said, options are on steroids through the language support for pattern matching and sugaring around foreach and for expressions. Overall, it was a good talk and inspired me to ensure that I play with Java 8, Lambdas and Streams in 2015 even though I am now a full time Scala developer.
This photo was also from GlassFish party. From L to R Bruno Baptista (Portugal), Roberto Cortez (Portugal) and Bruno Borges (Brazil, Oracle). Bruno also came to my Developing Java EE Application with Scala talk. Thanks!
Adam Bien is on stage talking about where Java EE 8 will concentrate next, including Java collections, and lambda expressions.