Enterprise scale AngularJS: Embracing Agile development in a brand new way

Reporting from Devoxx 2014 in Antwerp, Geertjan Wielenga tells of some of the lessons learned on day four of the conference. News to many is the fact that banking development may be cool again, especially if those banks are embracing Agile development in a whole new way, and sprinkling their Java programs with a little AngularJS.

Powering through into the second half of the week, Thursday, the fourth day of Devoxx 2014, brought yet another range of new topics to mull over. In the first slot, sessions competed on a range of topics, from the latest features in Android Lollipop, which included multiple device compatibility, new material design interface, updated camera and much more, to an overview of refactoring, to functional coding styles in Java 8, to yet another energetic session on Gradle by its founder and lead inspiration, Hans Dockter. Not only that, but attendees were shown how to build rock-solid apps, based on the experiences of creating Shazam, a popular audio recognition app that is installed on hundreds of millions of Android devices, which taught its creators to make their release schedules faster, more predictable, and with more features through the use of behavior driven design and automation testing.

Erasure is starting to look like a really practical compromise.

Java Language Architect Brian Goetz

Is it cool to work for a bank again?

Meanwhile, a fully packed room listened with palpable enthusiasm to a session entitled Enterprise scale AngularJS: Component library and Style guide. Here, developers working for the software division of the international bank ING revealed the architecture of Spectingular, a business framework created by ING on top of a range of popular JavaScript related frameworks, from AngularJS to Grunt, Karma, and Protractor. The banking websites under the domain of ING are in the process of being rewritten on top of Spectingular and the speakers discussed the reasons for the rewrite and the benefits of their choices in the architecture stack. ING, one of the key sponsors of Devoxx, has caused many developers' eyebrows to be raised at Devoxx, as well as a week earlier at J-Fall, the annual JUG conference in the Netherlands.

Quite clearly, not only is the technology stack with which ING is heading into the future filled to the brim with all the popular technologies, but the methodologies that have been adopted, away from out sourcing in a new embrace of agile, continuous delivery, and 'two pizza teams', signal the adoption of everything that is cool within the IT sector of a bank. A bank is supposedly the last thing to be considered cool, yet here we are with ING sounding increasingly similar to Google. Is change in the air right across the industry? It surely must be when a representative of one of its most stolid segments is clearly so progressive in its choices.

Elsewhere at the conference, attendees learned about setting up a lean start-up from Martijn Verburg, the 'Diabolical Developer', while Oracle stalwarts Stuart Marks and Brian Goetz explained API design with Java 8 lambdas and streams. Goetz and Marks argued that the new changes in the Java language and core API features have created opportunities for Java architects to make their APIs more concise and more expressive, while they also examined a variety of techniques and idioms that are enabled by the new Java 8 features, demonstrating how API design has already begun to evolve in the context of Java 8. Together with these topics, the early part of the day featured sessions on behavior-driven design, business-process modeling, and programming 'the real world', which focused on programming architectures and tools that can be used to extend logic from the data center down to devices in the real world.

Silent majorities and backwards compatibility

One of the most popular sessions at the conference was a discussion forum led by Java 8 architects Stuart Marks, Brian Goetz and Paul Sandoz. In a wide-ranging discussion full of pithy remarks and interesting insights, the speakers, in particular Goetz, relativized a number of widely held assumptions about the rate of change demanded by users of APIs, such as those provided by the Java language. For example, at one point Goetz commented: "There's always a silent majority that doesn't think it's so obvious for new features to be added to, for example, the JDK." It is very difficult to avoid the situation where the squeaky wheel, i.e., the loudest Tweet, is taken more seriously than all those who are perfectly happy with the way things have always been. Being conservative in the rate of change and committed to backward compatibility is, as Marks stated, exactly what ensures that Java is so popular. "We're popular because we don't throw you under the bus." He also made the argument that backwards compatibility is not a burden, but a constraint. It was these kinds of measured responses to questions that made this session so interesting.

Elsewhere in the same session, the speakers suggested that rather than rapidly introducing new features into the language, such as 'reification', the better approach is to identify what the actual pain points are that developers are facing. For example, maybe reified generics are not needed and instead, better type literals would solve most of the related problems. "Erasure is starting to look like a really practical compromise," Goetz posited. While discussing parallelism, his pragmatic insight was that "many innocent mistakes can be made in parallelism that may undermine any benefits you derive from it."

A benefit of parallel code is a very practical one, Marks mentioned, almost in passing. “When switching from sequential to parallel programming, you don't need to rewrite via fork/join. Instead, since sequential and parallel code is now so similar in Java 8, you can write the same code for both models, and switching between them is trivial," Marks said.

Blithely picking up a central tenet of performance guru Kirk Pepperdine's doctrines, Goetz argued for performance problems meaning "measure, don't guess". He stated that things should be measured correctly. For example, Marks pointed out that System.currentTimeMillis() is undermined by the JIT compiler and that benchmarking frameworks, in particular the jmh open JDK project, go to great lengths in identifying precise measurements and statistics, while avoiding JVM benchmarking pitfalls. As an ultimate endorsement of 'jmh', the speakers agreed that "if a benchmark isn't written in 'jmh', it will be wrong".

Farewell, Java Posse

It was a sad session indeed that followed, with the announcement that after 10 years, the Java Posse had decided to hang up their hats for good. The Java Posse, led by the ever-energetic Dick Wall, have run the most popular Java podcast for some 10 years and, for a variety of reasons, primarily Dick Wall's enthusiasm for the Scala movement, and his Scala-related podcast, have called it quits. The signature tune, "Java, Java", will remain a prominent part of Java developers' memory systems for a long time to come. New podcasts should come to fill the gap, though the unique flavor, breadth of insight, and relativizing humor of the likes of Tor Norbye and Chet Haase will be hard to come by.

Later sessions in the day covered an eclectic collection of topics again, including Apple's Swift language, 3D printing, dependency injection, Java EE 7 with the excellent Arun Gupta, and an overview of the state of the Groovy nation by its leader Guillaume Laforge. The evening BOFs focused on Devoxx4Kids, the 'Adopt OpenJDK' project, the rise of Polymer, and the annual Devoxx JUG BOF. Though this report is by no means exhaustive, since not even any of the rapid fire, the 'quicky sessions’ and 'ignite sessions’ have been touched on, nor has the crowded exhibition floor, it should be clear that the fourth day was certainly not short of interesting developments, insights, and newsworthy opinions.

And so, onwards and outwards into Antwerp's bars the attendees flocked, to recover from the heaps of information loaded into their systems, to revitalize their systems for the final day of the conference.

Dig Deeper on JVM performance tuning

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.