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!
In this workshop, you will learn to build an asynchronous application, from the front-end, based on Angular 4, the server API, with Vert.x all the way to the NoSQL backend, based on MongoDB.Event based systems are hot. Using an asynchronous, event driven approach can potentially process huge amounts of requests in a short amount of time. In an event based system, events are distributed to handlers when they are available. The event loop is non-blocking, results are passed backed by means of callbacks. This optimizes the available CPU resources. To be truly effective though, the complete application flow from front-end all the way to your persistence mechanism should be asynchronous.
In this workshop we will develop a small but complete (client/server based) web application. The client part is implemented with Angular, TypeScript and Bootstrap. The server part is based on Spring Boot, we will also use Spring Data / REST / HATEOAS. We will develop a RESTful Web Service, which is enriched with hypermedia. Kai will explain the basics of Spring Boot and the used frameworks, as well as the general principles of REST and HATEOAS (Hypermedia As The Engine Of Application State, an important REST architecture principle). For client development Kai will give a brief introduction of Typescript, Angular, Bootstrap and the standard JavaScript development tools like npm, Jasmine, Webpack etc. At the end of the day, we will have developed a complete Web application using all those technologies.
Every system has an architecture, whether accidental or intentional, and regardless of whether it was put in place by a nominated architect or whether it emerged from the decisions and discussions of a team.All too often the focus of what is often described as architecture is centred around a specific set of platform technologies, which forms only one part of the set of concerns an architecture should address. And all too often architecture is seen as a separate concern from development process, whereas the two are intertwined — what you build is influenced by how you build it, and vice versa.This workshop day looks at the relationship between agile processes and good architecture, taking in development process models, architectural styles, requirements techniques, sufficient modelling techniques, design patterns and testing practices.
If you intend to “write it and run it”, or even come close to that, then this is the course for you.”Microservices promise the advantages of fine-grained scalability, effective team organisation, speed of delivery and amenability to the key stress on a software system: change.“Running Production Microservices” takes your system and deep-dives into the tools and techniques that make your distributed system operable at runtime. Applying DevOps and Site Reliability Engineering techniques, practices and tools, this course helps you fashion a management and monitoring strategy that enables a rapidly changing, distributed system rather than becoming the bottle-neck.You’ll learn how to decide where to apply SRE and DevOps thinking and when to implement key concepts such as Circuit Breakers and Bulkheads using the latest tools. Techniques such as A/B, blue/green deployments, distributed logging strategies and effective deployment pipeline-management are all brought together to give you the best runtime microservice operability and debugging toolbox possible.
Are you unfamiliar with NodeJS, and are curious to learn about this fascinating environment? Do you have the NodeJS basics, but would like to tighten your understanding and learn a little more? If so, then this workshop is for you. During the workshop you will learn the basics of Node. You will learn about the unique asynchronous nature of Node, learn how to use callbacks, how to use APIs like the filesystem API, how to create node modules, and how to build web applications using express.Since we are in 2017, you will also learn how to leverage ES2015 to make your code nicer and more concise, and to leverage Promises to make asynchronous programming bearable. Given that I am a _firm_ believer in testing your code, you will also learn about how to write tests in Node using Mocha - unit tests, integration tests, and end to end tests.
What tools will you be using to develop code ten years from now? The state of developer tooling is changing fast in thanks to the explosion of new languages, frameworks and technologies emerging. Integrated development environments that aim to be a one-stop-show for developers are struggling to keep pace with the changes. Does this mean that the days of full-blown IDEs like Eclipse and IDEA are numbered?
This talk looks at current trends in the developer tools world. It looks at how tool development is evolving to keep up with languages by use of the language server protocols. It examines the trend of moving to the cloud, are containers and cloud workspaces inevitable? This talk also looks beyond today’s trends to the future: will AI/machine learning be used to help us write code faster and find bugs quicker? How will tools evolve for each new generation? How will developers themselves affect the future of IDEs?
Hailing from the Persian city of Ephesus in around 500 BC, the Greek philosopher Heraclitus is famous for his trenchant analysis of stream processing systems, saying “You never step into the same river twice.” Central to his philosophy was the idea that all things change constantly. His close readers also know him as the Weeping Philosopher—perhaps because dealing with constantly changing data at low latency is actually pretty hard. It doesn’t need to be that way.
Almost as famous as Heraclitus is Apache Kafka, the de facto standard open-source distributed stream processing system. Many of us know Kafka’s architectural and pub/sub API particulars as well as we know the philosophy of Heraclitus, but that doesn’t mean we’re equipped to build the kind of real-time streaming data systems that the next generation of business requirements are doing to demand. Like Heraclitus was telling us 2,500 years ago: we need to get on board with streams.
This talk is a thorough introduction to the Streams API, an important recent addition to Kafka that lets us build sophisticated stream processing systems that are as scalable and fault-tolerant as Kafka itself, and also happen to align quite well with the microservices sensibilities that are so common in contemporary architectural thinking. We’ll talk about how to deploy Streams applications and look at actual working code that will bring your thinking about streaming data systems from the ancient history of pub/sub paradigms into the current era.
Microsoft has one, Amazon has one, but it turns out that there's a lot of different developer-focused cloud environments out there, and sometimes it's exactly what you need to get your project going quickly--assuming you know it exists. In this session, we're going to take a survey of a variety of different cloud providers, many with wildly varying different approaches to "what developers need", and give you a series of ideas to explore the next time the boss says, "We need to move into the cloud!"
Discussions abound about the ‘future of Java’ though most of them are actually focused on the here and now. What are the consequences of Java 9 modularity, of moving JEE to Eclipse, of running your application in the cloud? All questions that are important now. but what are the important questions for tomorrow?
In this keynote learn about IBM’s view on the real future of Java. See how new hardware technologies, new software approaches and new ideas are powering Java towards a life far removed from that envisioned at its inception. It’s time to look up and see how you will need to change how you think: Whether it's driven by AI or Quantum Computers the problems of tomorrow demand new approaches and new thinking. Are you ready?
Your goal is simple: take that is happening in your company—every click, every database change, every application log—and made it all available as a real-time stream of well-structured data? No big deal! You’re just taking your decades-old, batch-oriented data integration and data processing and migrating to to real-time streams and real-time processing. In your shop, you call that Tuesday. But of the several challenges to tackle, you’ll have to get data in and out of that stream processing system, and there’s a whole bunch of code there you don’t want to write. This is where Kafka Connect comes in.
Connect is a standard part of Apache Kafka that provides a scalable, fault-tolerant way to stream data between Kafka and other systems. It provides an API for developing standard connectors for common data sources and sinks, giving you the ability to ingest database changes, write streams to tables, store archives in HDFS, and more. We’ll explore the standard connector implementations offered in the Confluent Open Source download, and look at a few operational questions as well. Come to this session to get connected to Kafka!
Most nontrivial software systems suffer from significant levels of technical and architectural debt. This leads to exponentially increasing cost of change, which is not sustainable for a longer period of time. The single best thing you can do to counter this problem is to carefully manage and control the dependencies among the different elements and components of a software system, and that includes dependencies between micro-services. This session will first look at the major reasons why so many systems end up in an unmaintainable state and then show how to address the problem by defining an enforceable architectural blue-print for a software system using an innovative domain-specific language for the description of software architecture.
The circle, as they say, is complete. JavaScript underwent a significant shift in thinking recently, from a "browser-only" language to a language that's increasingly seen as a server-side execution system. In some cases, a JavaScript engine is embedded inside a larger server program, such as what we see with different NoSQL databases (MongoDB, CouchDB), but now, with the increasing popularity of NodeJS, as a server itself. In this presentation, we're going to take a hard look at NodeJS, from installing it through using it write a variety of different server programs. No longer is JavaScript just a user-interface tool.
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.
JavaScript frequently confuses developers, with its odd language rules and inconsistent approach to various aspects of the language. TypeScript is an attempt to clean up the language, simplifying it and creating a syntax easier to understand and use, but that compiles down to native JavaScript for widespread use in the browser (and anywhere else JavaScript is expected). In this session, we'll go over the syntax, semantics and implications of TypeScript, and more.
Garbage First (G1) Garbage Collector (GC) is going to be the default in Java 9. G1 GC has incremental compaction and your friendly-neighborhood stop-the-world collections. G1 also has a concurrent marking phase. After having worked with it for many years, Monica will share her performance work in helping customers achieve their SLAs with G1 GC. So you don't want to miss it!
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.
Oracle has proposed to increase the release cadence of Java SE to every six months, and indicated they will begin distributing builds of OpenJDK under the GPLv2+CPE license. In this keynote, Donald Smith, Sr. Director of Product Management for Java SE at Oracle will give a quick overview of how OpenJDK plays a key role in the Java SE ecosystem, followed by details of the proposed plan and it’s current status. It will be followed by a panel whereby the two key proposals - increased cadence and Oracle produced OpenJDK builds - will be discussed for pros and potential gotchas. Panelists include Daniel Bryant, Stephen Colebourne, Peter Lawrey and Martijn Verburg.
The talk is about a new product CloudStack-UI which is a trial of rethinking and redevelopment of the classic Apache CloudStack UI with new stack of web development technologies (Angular 4, TypeScript, Material Design Lite).
We are going to tell the participants how and why the project was started, current results and future plans, explain what an average IaaS/PaaS user expects from the perspective of public cloud ISP HelpDesk, demonstrate interface of UI and its core differences from the native UI.
In the architectural part we are going to tell what vital role ACS tags have for the successful implementation of CloudStack-UI and what behaviours is impossible to achieve with the current API and require changes to avoid 3rd party components and hacks.
We also going to present two extensions:
1. Shell In a Box which provides a Web SSH console, which can be used for better VM access without a need to install ssh client to the customer workstation;
2. Pulse which enables “real-time” utilization charts (VM CPU, RAM, IO) integrated with CloudStack-UI
PLEASE NOTE: Workshop will be held in a different Location: Thistle City Barbican Hotel (Central St, Clerkenwell, London)
This workshop is for anyone who wants to look beyond the hype and get some hands-on experience developing with blockchain technology. You'll learn how to use and integrate Java applications with the dominant public blockchain Ethereum. We'll also touch on the private blockchain technology Quorum.
Specifically, you will learn:
PLEASE NOTE: Workshop will be held in a different Location: Thistle City Barbican Hotel (Central St, Clerkenwell, London)
"I invented the term 'object-oriented', and I can tell you for a fact that C++ was not what I had in mind." -- Alan Kay, inventor of Smalltalk.
But what, exactly, did Mr. Kay have in mind? If not the kind of object-oriented that C++ (and later Java and C#) developers became accustomed to, then what did he really imagine O-O development would be like? In this workshop, we'll examine a concept more recently popularized as "naked objects"--the idea that objects should not be used to present a user interface, but that the user interface should be based around the domain objects themselves. We'll look at the Naked Objects libraries, how they work, and what development using NakedObjects looks and feels like. We'll spend some time building a naked objects application, leveraging the RestfulObjects standard (for those who would prefer to still build their own user interface without losing the benefits of the NakedObjects infrastructure), and work to find where the edges to this idea--later popularized as "Domain-Driven Design"--rest and operate.
But be careful, though: once you start working with this stuff, you may never want to go back to "traditional" means of writing code ever again.
brilliant workshop – managed to get it all working and learned so much 🙂
— Robert Evans (@RobEvansUK) October 13, 2017
First #web3j #ethereum #java workshop with @jaxlondon. What a great turnout! pic.twitter.com/hiCrYB6VYG
— Conor Svensson (@conors10) October 12, 2017
Wrapped up a successful talk with @rob_hinds for @jaxlondon – Can’t wait for the next one! pic.twitter.com/oyQS1NM7DZ
— Qao (@qaoqz) October 10, 2017
Great fun being on the #JAXLondon Future of Java SE panel. I even wore my @java socks… 🙂 pic.twitter.com/14ZrT41NjR
— Daniel Bryant (@danielbryantuk) October 11, 2017
Full house at our async workshop at #JAXLondon #vertx #angular pic.twitter.com/xQb566czBr
— Erwin (@erwindeg) October 9, 2017
Time to catch my flight home. Thanks for having me @jaxlondon – good times! #jaxlondon pic.twitter.com/Sg3xZynE5t
— Michiel Rook (@michieltcs) October 11, 2017
Ernie (@RichardWarburto) and Bert (@raoulUK) are rockin #JaxLondon #concurrently. #Java8 #Java pic.twitter.com/KYfrKMQZOA
— Marcus Biel (@MarcusBiel) October 10, 2017
Another great day at the @jaxlondon conference! pic.twitter.com/SlGXVXkdPc
— Aquila Heywood (@aquilaheywood) October 10, 2017
@russmiles is rocking the stage at #jaxlondon! Better software development with metal riffs! #cool #java #programming pic.twitter.com/9MKQVnYyHg
— JAX London (@jaxlondon) October 10, 2017
#JAXLondon speaker dinner. pic.twitter.com/vqS8Fl3Hgv
— Erwin (@erwindeg) October 9, 2017
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”.
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.
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.
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.
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.
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.
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.
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.
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.
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?
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.
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.
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.
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!
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.
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.
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.