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!
Docker is a popular choice in tech today. However, containers alone are not enough to bring complex applications into production. Load balancing, fault tolerance, continuous integration and delivery, logging/monitoring, and release management are some of the other important aspects for successfully rolling out software products.
Kubernetes helps achieve these tasks by transferring the area of containers to the cloud. It makes it possible to model a single large host from many “small” hosts, which then benefits from automation. However, Kubernetes is just a piece of technology meant to simplify the release and development process.
Finally, OpenShift from Red Hat is a well-rounded approach towards DevOps that brings everything together.
A key part of any organization's testing strategy is the performance test harness. Without access to accurate telemetry and results, it is difficult to reason about the limits of a system's performance. We place our trust in various tools to place our services under stress, but how can we be sure that the outputs from these tests reflect reality?
This full-day course explores how to validate that your load-testing harness is producing accurate results. Attendees will develop and iterate on a load-test harness to measure the responsiveness of a simple microservice. The course will cover how to measure and report system throughput and latency, and how to measure the system-under-test to understand where bottlenecks lie.
Key takeaways:
Continuous Delivery makes it possible to exploit findings of cognitive psychology and neuroscience to increase the productivity and happiness of our teams. This session will highlight fascinating academic research that answers:
• How can we improve willpower and decrease technical debt?
• Is the present bias real? How can we turn it to our advantage?
• Can you increase a team’s effective IQ?
• How do DevOps and Product Teams increase empathy, and what impact does empathy have on productivity?
The OECD and Bank Of England are both puzzled over missing productivity. Are we failing to exploit the benefits of modern technology by running our software businesses and teams as if they’re post-war factories, rather than continuously delivering?
How we run our applications is always evolving - Monoliths to microservices, migration to the cloud, containerisation, improved orchestration. Containers have become synonymous with microservices but they present a new set of challenges...
In this talk I will share some of our experiences and rationale behind early adoption of containerisation using an in-house written orchestration mechanism through to migrating to Kubernetes.
In this talk I will discuss:
Cloud Native’ is one of those buzzwords we hear all the time but the concepts behind seem to be quite fuzzy. Some think that it’s all about virtualizing existing architecture paradigms so that they just run on Cloud platforms. Others say that only Spring Boot/Cloud can make you Cloud native, while some seem to pack everything into Docker and run it with Kubernetes. We’d like to discuss together with some experts — and with you, all the attendees! — the flavors of Cloud Native, what Java devs have to learn (and maybe to unlearn), and why we should care about Cloud Native development.
What does it mean for our programs to be asynchronous and back pressured and why is it important? This talk aims to answer these questions. We’ll cover:
- Thread per request vs asynchronous services
- What back pressure is and how to do it all the way down to the network layer
- How to achieve all of this with Akka HTTP and Akka Streams. Time permitting we’ll also demo a networked application sending back pressure through the application layer, through TCP and into the client application.
The economics of Cloud continues to dictate the need for radical changes to language runtimes. In this session, you'll learn about how OpenJDK with the Eclipse OpenJ9 JVM is leading the way in creating an enterprise strength, industry-leading Java runtime that provides the operational characteristics most needed for Java applications running in the Cloud. This talk will introduce the significant benefits that Eclipse OpenJ9 brings to Cloud applications and will show you how easy it is to switch to OpenJDK with Eclipse OpenJ9 in various Cloud and container environments. Whether deploying microservices or more traditional Java applications, the combination of OpenJDK with Eclipse OpenJ9 can help you reduce operational costs across the board.
The Java ecosystem is very rich both for production and testing code; testing code is just as important as producing code. In this session, we'll explore how to fake out REST APIs to test out client code; fake out REST clients to test out server code; write better parameterized tests; take care of concurrency related events; spy/mock/stub out collaborators to ensure cleaner and isolated tests; and more.
What can you do in Scala that you can’t do in Java? What are the practical uses of more advanced language features? What could the future hold for Java? We’ll cover specific language features with their use cases:
- Function composition as an alternative to layered architectures
- Functional approaches to implement dependency injection
- Writing reusable code with higher kinded types
- Avoiding mutability with expressions
- Compile time checked serialisation with generic programming. As well as posing some higher level questions about language features:
- Why do we embrace runtime reflection frameworks but fear compile time implicit parameters?
- Ease of initial understanding vs long-term productivity of a language
- Simple vs familiar language features and patterns. The goal of this talk is for you to learn some specifics about language features not yet in Java as well as to get you excited about programming languages in general.
Functions and the so-called serverless computing have freed developers from worrying about infrastructure, and even upper platform layers, as well as some steps in the software development lifecycle. But once you have functions deployed, how do they interact with each other? How does a message navigate between them? Maybe, just maybe, it’s time to look back again at EIPs - Enterprise Integration Patterns, and their use in this new way of deploying code to the Cloud.
This talk will cover primarily the use of one of the key EIP frameworks — Apache Camel — and top patterns applicable to Serverless Computing using Functions services by Cloud vendors as part of the demonstrations.
Ever been one of those developers who is just so sick and tired of all the quirky behavior around JavaScript? Ever wondered if there was something else "out there" that could run in the browser, and do all the things that we like JavaScript to do, but without having to put up with JavaScript's... nature? In this session, we're going to do just that--look at how to write JavaScript, without using the JavaScript language itself.
Cybercrime is rising at an alarming rate. As a Java developer you know you need to be better informed about security matters but it’s hard to know where to start. This workshop will help you understand how to improve the security of your application through a series of demonstration hacks and related hands on exercises. Serious though the topic is, this practical session will be fun and will leaving you more informed and better prepared. Start building your security memory muscle here
“Fred Brooks said, "How do we get great designers? Great designers design, of course." So how do we get great architects? Great architects architect. But architecting a software system is a rare opportunity for the non-architect. The kata is an ancient tradition, born of the martial arts, designed to give the student the opportunity to practice more than basics in a semi-realistic way. The coding kata, created by Dave Thomas, is an opportunity for the developer to try a language or tool to solve a problem slightly more complex than "Hello world". The architectural kata, like the coding kata, is an opportunity for the student-architect to practice architecting a software system.
In this workshop we'll focus on possibilities to include UI development in a DevOps environment. I will focus on the methods of design thinking, SCAMPER, MVP and agile UI development. Besides the methods for continuous delivery of UI, I will add measurement and feedback methods for validation of the new versions. This includes some Big Data and Data Mining aspects. At the end of the workshop, participants will have learned ways to integrate UX at the speed of DevOps and how to evaluate them. It is an interactive workshop where participants will test some methods and we’ll create an UI in an simulated environment.
And just like that, #JAXLondon is over! I’d like to say a big thank you to all the participants, speakers and JAX London team who made me feel so welcome! My first time speaking at an international conference has been incredible and I’m sure it won’t be my last! ?
— Erica Tanti (@EricaTheDev) October 13, 2018
The knowledge we gathered from our amazing speakers at #jaxlondon 2018 as well as from all of you who attended is endless! With this recap, I will try to give you a small taste of all the wonders that took place at JAX London 2018 https://t.co/f0Zy5lxbFU pic.twitter.com/vPEqk3Tgcz
— JAXenter.com (@JAXenterCOM) October 12, 2018
Full House at @jaxlondon! Our Co-Founder @berndruecker is speaking about the 3 common pitfalls in Microservices integration and how to avoid them. Come and meet the team at our booth in the exhibition area! pic.twitter.com/eUvDuWmA19
— Camunda (@Camunda) October 10, 2018
You can’t mention chaos engineering without referencing the excellent work of @tammybutow 🙂
@danielbryantuk #JAXLondon pic.twitter.com/ErpYEK3MFI— ????? ??????? ??? (@rmoff) October 9, 2018
It was great fun sitting on this #jaxlondon keynote panel about @java and cloud native! I’ve had a few people reach out to me and ask about the specific tech I mentioned for optimising Java for container runtimes (thread continues)… https://t.co/JTuYox3MOh
— Daniel Bryant (@danielbryantuk) October 12, 2018
Threw together a fun little video of my day yesterday at #jaxlondon! I couldn’t capture everything, but you can see we all had a blast! cc: @jaxlondon #LoECDA pic.twitter.com/Ls3KtNmkPi
— Jessica Deen (@jldeen) October 10, 2018
Super interesting insights from @berndruecker at @jaxlondon today about circuit breakers, stateful retry, and how zucchinis are idempotent ? #JAXLondon pic.twitter.com/OV28n9Hmfr
— Desy Kristianti (@dessskris) October 10, 2018
Integrating microservices and taming distributed systems is hard. This talk presents the three challenges we observed in real-life projects and discuss how to avoid them.
1. Communication is complex. With everything being distributed failures are normal so you need sophisticated failure handling strategies (e.g. stateful retry).
2. Asynchronicity requires you to handle timeouts. This is not only about milliseconds, systems get much more resilient when you can wait for minutes, hours or even longer.
3. Distributed transactions cannot simply be delegated to protocols like XA. So you need to solve the requirement to retain consistency in case of failures.
Continuous Delivery makes it possible to exploit findings of cognitive psychology and neuroscience to increase the productivity and happiness of our teams. This session will highlight fascinating academic research that answers:
• How can we improve willpower and decrease technical debt?
• Is the present bias real? How can we turn it to our advantage?
• Can you increase a team’s effective IQ?
• How do DevOps and Product Teams increase empathy, and what impact does empathy have on productivity?
The OECD and Bank Of England are both puzzled over missing productivity. Are we failing to exploit the benefits of modern technology by running our software businesses and teams as if they’re post-war factories, rather than continuously delivering?
This talk we will focus on the following topics:
• What are enterprise blockchain solutions
• Functional blockchain solution designs
• The five pillars of an enterprise blockchain solution design
• Permissioned/Private & decentralised/P2P
• Immutability, data integrity and scalability
• Security
• The three layers of an enterprise blockchain solution design
• The blockchain
• The data store
• The application
• Overview of architecture built for POS & E-commerce platform with NEM and Ethereum underneath
• Lessons learned: Do’s and don’ts
Testing microservices is challenging. Dividing a system into components naturally creates inter-service dependencies, and each service has its own performance and fault-tolerance characteristics that need to be validated during development, the QA process, and continually in production. Join Daniel Bryant to learn about the theory, techniques and practices needed to overcome this challenge.
Transactions are still important to process management in the age of microservices orchestration in heavily regulated industries, such as banking. With ACID transactions becoming available in NoSQL, we show how we have achieved a native integration of open source BPM to MongoDB. We compare the potential of this with the established relational implementations, in terms of performance, scalability and flexibility.
JDK 10 was released only six months after JDK 9, demonstrating that the new six-month cadence for the OpenJDK works. Even with such a short development cycle, there were still over a hundred new features covering the language, core libraries and the JVM.
In this session, we’ll take a look at how the Java platform is evolving with the introduction of big features like the Java Platform Module System (JPMS) in JDK 9, local variable type inference in JDK 10 and dynamic class file constants in JDK 11. We’ll also cover many of the smaller features that will make your life as a developer easier. What might JDK 12, 13 and 14 include? We’ll explore some of the longer-term plans for Java, like project Amber, Loom and Valhalla.
Debugging applications in production is like being the detective in a crime movie. Especially with microservices. Especially with containers. Especially in the cloud.
Trying to see what’s going on in a production deployment at scale is impossible without proper tools! Google has spent over a decade deploying containerized Java applications at unprecedented scale and the infrastructure and tools developed by Google have made it uniquely possible to manage, troubleshoot, and debug, at scale.
Watch this session to see how you can diagnose and troubleshoot production issues w/ out of the box Kubernetes tools, as well as getting insight from the ecosystem with Weave Scope, JFrog Artifactory & Stackdriver tools.
Testing microservices is challenging. This is because, despite their independence, they are often still coupled via API calls or message passing. It’s this coupling that can lead to issues such as:– Too much reliance on slow and brittle end-to-end testing– False positives generated by inaccurate stubs– No idea whether changing an API endpoint will break anything– Difficult to reason about microservice dependencies.
This talk will introduce the consumer-driven contract testing technique, a TDD at the API level approach for microservices. It aims to resolve all of these issues and more, leading to truly independently testable and releasable services.
The economics of Cloud continues to dictate the need for radical changes to language runtimes. In this session, you’ll learn about how OpenJDK with the Eclipse OpenJ9 JVM is leading the way in creating an enterprise strength, industry-leading Java runtime that provides the operational characteristics most needed for Java applications running in the Cloud. This talk will introduce the significant benefits that Eclipse OpenJ9 brings to Cloud applications and will show you how easy it is to switch to OpenJDK with Eclipse OpenJ9 in various Cloud and container environments. Whether deploying microservices or more traditional Java applications, the combination of OpenJDK with Eclipse OpenJ9 can help you reduce operational costs across the board.
What can you do in Scala that you can’t do in Java? What are the practical uses of more advanced language features? What could the future hold for Java? We’ll cover specific language features with their use cases:
– Function composition as an alternative to layered architectures
– Functional approaches to implement dependency injection
– Writing reusable code with higher kinded types
– Avoiding mutability with expressions
– Compile time checked serialisation with generic programming. As well as posing some higher level questions about language features
– Why do we embrace runtime reflection frameworks but fear compile time implicit parameters?
– Ease of initial understanding vs long-term productivity of a language
– Simple vs familiar language features and patterns. The goal of this talk is for you to learn some specifics about language features not yet in Java as well as to get you excited about programming languages in general.
Developers have a tendency to focus on low-level implementations to handle concurrency, locks, lock-free algorithms, compare-and-set etc. But you shouldn’t jump into any implementation without first deciding which high-level concurrency control pattern is right for the problem. To help you make the right decision, I cover the four common concurrency control patterns that let you safely update shared mutable state: pessimistic locking, optimistic transactions, queue to a single thread, and partitioning the data.
Today our world is full of things that are “as a service” – infrastructure, containers, platforms, software…and of course functions. With developers just now wrapping their heads around application platforms and containers, what are they to make of functions as a service? How does a busy developer cut through the hype and make sense of the world of serverless, Kubernetes, Spring Cloud Function and all the rest? This talk will clear up the confusion! We examine Riff, a FaaS built atop Kubernetes. We will discuss where functions and serverless fits in your world, and how you can get started with some simple demos. Though functions aren’t a silver bullet, they are an important part of the development toolbox; this talk saves you from the buzzword bingo to give you a solid foundation of the FaaS landscape.
Leadership is easy when you’re a manager, or an expert in a field, or a conference speaker! In a Kanban organisation, though, we “encourage acts of leadership at every level”. What does that mean for those of you who code as part of a team?
In this talk we look at what it means to be a leader in the uncertain, changing and high-learning environment of software development. Find out about the importance of safety, how to create it both technically and socially, and become an agent of change… without changing your job!
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!
The Agile and DevOps movements place a lot of emphasis on the autonomy, self-organization and responsibility of teams. A common misconception is that there is little or no role for leaders of such teams. On the contrary! In this rapidly changing world, where competition is fierce and the pressure to deliver is high, effective leaders create environments that allow teams to thrive. They enable, coach and inspire. But what makes a leader an effective leader?
Microservices are here to stay. When applied properly, microservices techniques and culture ultimately help us continuously improve business at a faster pace than traditional architecture. However, microservices architecture itself can be complex to configure. All of a sudden, we are faced with the need for a service discovery server, how do we store service metadata, make decisions on whether to use client side load balancing or server side load balancing, deal with network resiliency, think how do we enforce service policies and audit, trace nested services calls…. The list goes on.
Sure, it’s easy to have a single stack that makes everything work provided there are good microservices support – but what if you have a polyglot environment? How would you make sure all of the stack canaddress the same concerns in a consistent way? This is where a service mesh comes in.
In this talk, Ray will introduce Istio, an open source service mesh framework created by Google, IBM, and Lyft. We’ll see how the service mesh work, the technology behind it, and how it addresses aforementioned concerns.