JAX London 2017 Archive

JAX London  is a four-day conference for cutting-edge software engineers and enterprise-level professionals. JAX brings together the world’s leading innovators in the fields of JAVA, microservices, continuous delivery and DevOps.

2017 Conference Tracks

Below, you find the Sessions of the past JAX London of 2017. We are happy to be able to provide a platform for connecting, learning and teaching about Java & Software Innovation. Hopefully, we’ll have you visiting in 2018 too!

Workshop: The Ultimate Asynchronous Stack

Workshop: Cool Web Apps with Spring Boot, Angular and TypeScript

Workshop: Architecture with Agility

Workshop: Running Production Microservices

NodeJS 101 Workshop

The Error of Our Ways

The Ultimate Java Microframework Shoutout

The Road to Continuous Deployment: A Case Study

Lambdas: It’s Java Jim, but not as we know it

Deep Learning Anomalies with TensorFlow and Apache Spark

Better software development systems through stress; the hidden ingredient behind learning and continuous improvement

The Future of IDEs

How to Build a Microservices Infrastructure in 7 Days

Turbo Charge CPU Utilization in Fork/Join Using the ManagedBlocker

Eclipse MicroProfile: Accelerating the adoption of Java Microservices

Heraclitus, the Metaphysics of Change, and Streaming Data

DevOps Driven Development and Delivery

Busy Architect's Guide to the Cloud Offerings

Java in the 21st Century: are you thinking far enough ahead?

Blockchain: Why Open Source and Collaboration are Crucial for Tech

All Things Data

RESTful Hypermedia APIs

Continuous Delivery with Containers: The Good, the Bad, and the Ugly

Java 9: Escaping JHell with JShell

Kafka Connect

How to organize your Code

Load Testing Like a Pro

Resilient Microservices with Kubernetes

Java 9: Beyond Contention!

Keep the JVM – Ditch Java

Finally, Enterprise JavaScript Is Easy!

Agile Machine Learning: From Theory to Production

Simple and Modern Concurrency in Java: Completing the Promise

Fly High with Microservices Architecture

Busy Developer's Guide to NodeJS

The Long Road

Measuring DevOps: the Key Metrics that Matter

REPL Driven Development: Immediate Feedback for your Server-side Code

A Breathless Tour of Blockchain

Complicating Complexity: Algorithm Performance in the New Machine Age

Jump-start Your Microservices Development with Java EE

CQRS & Event Sourcing in the Wild

Server-side Swift for Java Developers

Java SE 9 Modules: an Introduction

Busy Java Developer’s Guide to TypeScript

G1GC: The Dark Horse

Scaling Blockchain Systems

Java SE: Current Status

A Practical Guide to Docker and µService Deployments

Porting Doom 3 to Java: Lessons Learned

Using Ethereum to build Java applications on the blockchain

The monster coming over the hill - enterprise coding is dead

CloudStack-UI - origin, purpose, roadmap and architectural notes

Lessons to Build your Software Career: The Secret of Miyagi

Scaling Event Sourcing for the IoT and Mobile

Automated Data-driven Deployments

[Sold out] Workshop: Developing Java applications on the Blockchain with web3j

[Sold Out] Busy Java Developer’s Workshop on DDD with Apache Isis

JAX London 2017 on Twitter


Russ Miles – Better software development through stress

Production hates you. The machines, the networks, the very users you hope to provide a service hate you. This is reality, and it makes production a hostile battle ground. In this talk Russ Miles will talk about how to turn this pain to your advantages. Following on from his popular “Why don’t we learn?” talk it is now the time for the sequel. Through a sequence of case studies, personal stories and code examples Russ will talk about how sociotechnical systems like your development team improve through stress, turning this pain to their advantage through learning loops so that it is no longer about “how do we avoid the pain” but rather “how do I embrace and thrive on more”.

Khanderao Kand – Deep Learning Anomalies with TensorFlow and Apache Spark

TensorFlow and Apache Spark are important open source frameworks with rising adaptation for big data and machine learning. This presentation will cover deep learning in general and TensorFlow and Apache Spark in specific. Apache Spark is widely used for big data and machine learning, while TensorFlow augments it for deep learning.

Heinz Kabutz – Turbo Charge CPU Utilization in Fork/Join

Fork/Join is a framework for parallelizing calculations using recursive decomposition, also called divide and conquer. These algorithms occasionally end up duplicating work, especially at the beginning of the run. In this talk we will demonstrate this issue and offer a solution in the form of the ManagedBlocker. Combined with the Fork/Join, it can keep parallelism at the desired level. In this session, we will explain how you can can reduce wasted CPU cycles by implementing a reserved caching scheme. Before a task starts its calculation, it tries to reserve an entry in the shared map. If it is successful, it immediately begins. If not, it blocks until the other thread has finished its calculation. Unfortunately, this might result in a significant number of blocked threads, decreasing CPU utilization.

Helen Beal – DevOps Driven Development and Delivery

How do you drive development? Via test? Value? Behaviour? How do you drive operations? Are they Agile? And Lean? In this talk Helen will explore the characteristics of DevOps Driven Development and Delivery, the best practices for regulated organisations where security and auditability are key and what this means for the way we manage change, funding, safety, failure and experimentation.

Emily Jiang – Eclipse MicroProfile

While there are likely a dozen or more Java-based microservice / cloud native initiatives in the industry, Eclipse MicroProfile provides a platform for Java developers to collaborate and innovate on areas of common interest. This session will give a short overview of MicroProfile and how it plans to optimize microservices for Enterprise Java, followed by the demonstration of the MicroProfile config and Fault Tolerance specification being prototyped in MicroProfile. While MicroProfile’s first release is founded in Java EE (CDI + JSON-P + JAX-RS), it is not intended to remain a subset of Java EE 7 (or 8). The intent is to collaborate and innovate as a community in the context of a microservices architecture across the 8 (and growing) MicroProfile implementations today. The end goal of MicroProfile is to feed the Java Community Process (JCP) with JSR submissions backed by well-thought-out concepts and even implementations that developers and enterprises can rely on.

Daniel Bryant – Continuous Delivery with Containers

Implementing a continuous delivery (CD) pipeline is not trivial, and the introduction of container technology to the development stack can introduce additional challenges and requirements. In this talk we will look at the high-level steps that are essential for creating an effective pipeline for creating and deploying containerized applications. Topic covered include: the impact of containers on CD; adding metadata to container images; validating NFR changes imposed by executing Java applications within a container; and lessons learned the hard way in production. A supporting O’Reilly report, “Containerizing Continuous Delivery in Java”, will also be available. This contains instructions and code for how to create a Jenkins-based continuous delivery pipeline that takes a series of Java applications and containerizes them, ready for functional and nonfunctional testing, and ultimately, deployment.

Lorenzo Nicora – Scaling Event Sourcing for the IoT and Mobile

Event Sourcing is a popular persistence pattern that allows reconstructing different views of reality from its history. While the commonly accepted approach guarantees consistent events at write-time, it may fall short scaling to big-data magnitudes. This presentation gathers experience, errors and successes from real-world projects. Often, consistency enforced on write doesn’t scale when you have to cope with unreliable clients and transport, as with IoT and mobile, and keep latency low. You have already abandoned ACID transactions, but you have to push BASE (Basic Availability, Soft-state and Eventual consistency) one step further, making compromises between low-latency writes, read delays and read-model consistency. This presentation will cover authentic problems like building consistent read models from late or missing events, and lack of any global time reference until everyone will have an atomic clock in his pocket. It offers an alternative point of view on Event Sourcing described with whiteboard-like drawings and lessons from the trenches.

Graham Charters – Jump-start Your Microservices Development with Java EE

When asked what framework to use when creating Java microservices, people don’t necessarily suggest Java EE first, but many people are seeing the benefits Java EE brings to a microservices architecture. If you have existing Java EE applications or are simply curious about what makes Java EE a good fit in this space, this is the session for you. It covers everything from creating your application to a choice of IDEs for developing your app and deploying it to the cloud. It also demonstrates how to configure Docker to leverage the power of existing lightweight Java runtimes and make use of the OpenAPI spec in your application. Finally the presentation discusses the innovation being carried out by communities such as microprofile.io.

Sarah Saunders – The monster coming over the hill – enterprise coding is dead

Recently within Capgemini, we took part in an exercise to try and understand why the development community is so big on sharing knowledge, compared with other communities. The kudos you get from sharing code has a greater value to your career than the code itself. With sites like Stack Exchange, you can download every snippet of code you’ll ever need. Add this to the Open Source movement, and the growing number of products which generate code from diagrams and GUIs, and there’s a scary conclusion to be drawn: THE CODE WE WRITE HAS NO VALUE. So, what is it that IS of value in what we do? Through a study of “citizen integrator” projects that didn’t require any code to be written at all, I’ll try and distill the skills that underlie our job description as developers.

Ian Partridge – Server-side Swift for Java Developers

This session will give you an introduction to the Swift language, where and when you might use it, and see how it compares when building a real application server application in Swift and Java. The range of languages and frameworks that are available for building server applications has exploded over the last few years, with the most recent of these being the Swift programming language from Apple that was originally designed for iOS devices, which is now being labelled as the fastest growing language. Is Swift the future for server applications, meaning that you should stop developing Java server applications, or is it just a passing fad?

Peter Lawrey – Scaling Blockchain Systems

Blockchains open up a significant number of opportunities to decentralise services. Increasing demand has raised scalability issues. In this talk we will look at some of the problems scaling blockchain and proposed solutions to increase transaction rates.

Maurice Naftalin – Complicating Complexity: Algorithm Performance in the New Machine Age

It’s no simple matter to explain the performance of even a simple Java program, when instruction execution time is often overshadowed by other costs. Even when network and IO have been taken into account, two programs with similar computational complexity—their big-O characteristics—can differ in cache usage, with big resulting differences in performance. For the Java programmer, this means that big-O analysis no longer gives enough guidance in choosing a collection implementation for performance-critical code. In this talk we’ll explore optimization of the memory layout and performance of some simple programs via alternative collection implementations and frameworks, and the open-source ObjectLayout library.

Davide Fiorentino lo Regio – A Practical Guide to Docker and µService Deployments

It takes months to update everything in a software stack and you *never* know when or where something will break (but you *know* it will). Sounds familiar? In this session, we will go over what tools and technologies that I used in order to build a stable and reliable environment of Web and Standalone Applications. Here’s what I learned during that long journey, whether it’s how to talk with all the stakeholders involved or how to split a monolith from an architectural/deployment point of view. I’ll dive into dockerizing applications, managing images, system configurations, experimental features as well as running and scaling those containers. Along the way, I ran into many obstacles. Some people were unaware of existing and future issues, others had superficial or no knowledge at all of those “alien” tools. Other hurdles included vLANs issues, unconnected servers, and even people asking for docker images for everything. I’ll share my solutions to these issues and more, so that others don’t have to suffer like I did! Best for system administrators, developers and DevOps.

Sumanas Sarma and Rob Hinds – Agile Machine Learning

Artificial Intelligence(AI) and Machine Learning(ML) are all the rage right now. In this session, we’ll be looking at engineering best practices that can be applied to ML, how ML research can be integrated with an agile development cycle, and how open ended research can be managed within project planning According to a recent Narrative Science survey, 38% of enterprises surveyed were already using AI, with 62% expecting to be using it by 2018. So it’s understandable that many companies might be feeling the pressure to invest in an AI strategy, before fully understanding what they are aiming to achieve, let alone how it might fit into a traditional engineering team or how they might get it to a production setting. At Basement Crowd we are currently taking a new product to market and trying to go from a simple idea to a production ML system. Along the way we have had to integrate open ended academic research tasks with our existing agile development process and project planning, as well as working out how to deliver the ML system to a production setting in a repeatable, robust way, with all the considerations expected from a normal software project. Filmed at JAX London 2017.

Geertjan Wielenga – Finally, Enterprise JavaScript Is Easy!

JavaScript in the enterprise: is it hard? Is JavaScript really usable in the context of enterprise applications and as the basis of front-end browser-based applications? How are enterprises such as PayPal, Tesco, and Oracle solving these problems? In this session, you’ll be introduced to Kraken.js by PayPal, as well as Oracle JET (oralejet.org) which is Oracle’s JavaScript toolkit, including data visualizations, architectures, templates, components, and a range of enterprise solutions, such as modularity, internationalization, and accessibility.

Everything is free and open sourced on GitHub and you’ll be shown how to get started with it, via demos and live coding. By the end of the session, you’ll be able to leverage free and open source technologies as the basis of your own web and mobile solutions, today!

Rob Harrop – Load Testing Like a Pro

In this talk, we’ll see how to design, construct, execute, verify and analyse a load test to answer the three important questions: 1. How much load can my system handle before it is saturated? 2. What service can I expect my customers to see at a given load level? 3. What are the bottlenecks in my application that cause saturation? Load testing is an important part of systems engineering. A good load test tells us whether our system is equipped to handle expected load, what kind of service level our customers can expect and how our system behaves when it’s saturated. Despite their usefulness, many teams don’t run load tests, and those that do often make grave mistakes that all but eradicate the usefulness of their tests. Many open source load testing tools result in inherently incorrect results due to incorrect handling of latency measurements: the so-called Problem of Coordinated Omission. In this talk, we’ll see how to overcome this problem to obtain reliable results using the standard JMeter load-testing tool.

Monica Beckwith – Java 9: Beyond Contention!

At the last JavaOne keynote, Mark Reinhold talked about how Java 9 was much bigger than Jigsaw. To put that in numbers – 80+ JEPs bigger! Yes, we see more presentations on Jigsaw since it brings about modularity to the once monolithic JDK. But what about those other JEPs? One of those “other” JEPs, is JEP 143 – ‘Improve Contended Locking’. Monica will apply her performance engineering approach and talk about JEP 143 and Oracle’s Studio Analyzer Performance Tool. The crux of the presentation will entail comparing performance of contended locks in JDK 9 to JDK 8.

Kai Tödter – RESTful Hypermedia APIs

RESTful web services have been around for quite some time and are very popular. Many of the known public web APIs claim to be RESTful. However, many current APIs do not fulfill an important element of REST: Hypermedia as the Engine of Application State (HATEOAS). This session gives an overview of the topic and shows many concrete examples why RESTful Hypermedia APIs are useful. Kai will introduce various hypermedia formats, like HAL and Siren, as well as their integration into existing infrastructures, such as the Spring Stack. Kai also provides practical tips for creating API documentation. The goal of this session is that all attendees can decide whether hypermedia offers advantages for their own REST API.