Devoxx is some kind of obligatory pilgrimage for Java developers, at least European. Antwerp is a bit like the forest of the Carnutes. Every year at this time, the druids of Java development, Web, Android, gather there, attracted by a strange call.
Once again this year the tribes came from many countries, more than fourty, and from far beyond the seas. This year again, the high priests were there, and brought us the good word. Because by next year we will have a new version of Java, the 8th, the long-awaited 8th should I say. Being there to present this new version is a challenge, both on the strategic and business sides for Oracle.
So Java 8 arrives, in a bit more than four months at the time of publication of this blog, even if with the version available today, one can begin to learn the new APIs, including Stream and Collectors. Because yes, with the arrival of Java 8, we will have to sharpen our knowledge. New things there are: the language changes, the APIs and the patterns. And even if it affects us less as developers, the JVM itself changes.
With the presence of Mark Reinhold, Brian Goetz and Paul Sandoz, Devoxx 2013 was undoubtedly the best opportunity to make an inventory of all this. Brian described the whys of everything, tracing the path of his thoughts. Paul explained how the Stream API works internally. An expert speaking, since he is the one who wrote the Stream API. And finally, Mark gave us the road map of the development of Jigsaw, or what remains of it, or more precisely what it will become.
A peek under the hood
Brian Goetz’s conference aims to detail how lambdas are implemented in Java. Java is the latest popular language to embrace lambdas. C++ and C# did that a long time ago. So implementations, their qualities and their defects are known, which is of course an advantage. On “the first idea that one can have is not always the best” tone, Brian describes the first ideas, evaluated, implemented, evaluated again, and finally … discarded. Beautiful humble for such an expert! The implementation of lambdas in Java will affect 9 million developers and more applications. Error is not allowed: it must be perfect, as efficient as possible, and should not close the door to future improvments in the implementation of the JVM. This is the case.
This conference is a must, Brian delivers a very complex technical discourse, but also describes his intellectual approach, imbued with great humility.
Java 8: lambdas in the stream
Lambdas are not an end in themselves. Brian Goetz tells us: the primary purpose of the possibilities of a language is to allow the development of new APIs, and the emergence of new patterns. This objective has been fully achieved with the arrival of lambdas, since a new API, Stream, arrives to fully exploit them in the application context of processing large collections of objects in memory. The application context is clear and makes sense. 20 years ago data was massively stored in relational databases. The canonical approach was then to perform the processing on data in the database, and output the results of these operations in the application code. Transfering data in the application process for that purpose was heresy!
Things have changed, applications have much more memory available to them, and JVM works better in large memory spaces, thanks to the new GC (among other things). Moreover, we know that the relational approach does not allow to process requests beyond a certain pace, quite quickly reached by popular web applications. The solution to this problem has a name: NoSQL. It can then become interesting to transfer data in memory in order to be processed. It will be interesting to see if it leads to more powerful and possibly more efficient ways of processing data, than using the NoSQL engines.
The Stream API was designed precisely for this reason: to process large volumes of data. It was the subject of Paul Sandoz’s presentation. This API may seem simple at first, and it is. However, the effective use of it is actually very complex, because of the interaction between implementation details and parallelism. New concepts, new patterns, so new bugs, and especially new opportunities!
One had to give geeks a chance to troll, and Mark Reinhold drew the short straw. Jigsaw, the long awaited Maven ala Java sauce, the inconceivable OSGI on our platform, will not come. At least not in the form in which it was expected. I think the reason is simple. Maven, although criticized by many users, even if this tool is aging and does not show a flurry of activity on the front of news (the list of recent updates is a sadness…), Maven is still a de facto standard, which has shaped the process of construction and delivery of our projects.
On the other hand, OSGI, which does not really win unanimous support, manages classpath, complex JARs for hidden content and version conflicts. I would have added that it managed remarkably well loading and unloading dependencies while running, but the fact that Eclipse advises me to restart after every plugin update makes me wary about this. Is it really reliable?
So no, Java will not add one more tool, duplicating Maven on the one side or OSGI on the other. Java will provide a linker that will create lightweight runtimes on demand, and will take the form of profiles in Java 8, which are supposed to solve deployment problems on small devices, with little memory. Not very exciting, admittedly, but after all, if it is effective …
Devoxx, the essential conference
Yes, Devoxx is undoubtedly essential.
Oracle choses Devoxx to serve its speech to European developers. The greatest speakers and specialists came, with the aim to present, explain and convince. Also to show the strategic axes: Internet of things, Java on small connected devices. Their introductory video is exciting to analyze. What we would have seen in it 6 years ago? Probably server rooms, data centers, masses of data processed in real time for business, online sales, IT and leisure. What do we see today? Evocations of all these little devices that we carry: smartphones, glasses, watches, bracelets for bio-medical supervision. According to Oracle, which is not a philanthropic organization, business challenge lies in the multitude of connected devices, data exchangers, all equiped with a JVM.
Google is also here. What reasons are they here for? To announce with much fanfare the first stable release of Dart 1.0 in front of 3,500 European developers. Regardless whether the presentation lacks a bit of punch, and is a bit old fashionned (next slide please). This is part of a carefully laid communication plan. Google highlights its developers’ genius, no matter if the talk is not so great. Public wants to see developers and technology. Serve bullshit, get bad tweets!
Seeing major companies like Oracle or Google to choose Devoxx for their communication plans is a good sign for us. It is a sign that Devoxx is a conference taken seriously, a brand that has built its reputation over the years. A particular place also where the big brands that compete can coexist in peace. Will we have a Java One Europe or Google over this side of the Atlantic? No need, we have Devoxx!
Back from Devoxx
I go to Devoxx because, despite its 3,500 participants, despite its huge rooms (about 800 seats for the largest), despite the incredible stress that should represent such an organization, the atmosphere remains cool. Stephan and his team can be seen, relaxed and smiling, available to shake hands, chat, share jokes, congratulate ourselves. Devoxx, despite gigantism, has the atmosphere of a JUG 50 people. You do not believe it? You are right, go and check by yourself!
I go to Devoxx also to fish ideas through conferences I attend, and countless discussions (technical or not) that I can have. To exchange two hours with Brian Goetz on the right way to introduce lambdas and Stream API. To sit with Paul Sandoz around a laptop screen and talk about parallelization and algorithms. To find inspiration, and to understand what my program of work for the coming year should look like.
And then I am also there to deliver talks, I am not hiding it. This edition has kept its promises and beyond, on all these points. Of my university talk, precious and unique reader, I did not talk in these lines, but rest assure, this is only a postponement.
Beautiful inspirations in perspective!