James Ward

Developer Advocate for AWS

Professional software developer since 1997, with much of that time spent helping developers build software that doesn't suck. A Typed Pure Functional Programming zealot who often compromises on his ideals to just get stuff done. Currently a Developer Advocate for AWS and AAIF Technical Committee member.

Presentations

The Java Platform has seen a tremendous amount of evolution and improvements over the past 5 years in many different areas including: language features in Java, Kotlin, and Scala, Functional Programming, dev environments, test workflows, Reactive, Stream processing, distributed data, containerization, Serverless, and AoT compilation.

This talk will give you a tour of the most important improvements, why they matter, and how to take advantage of them.

Over the past few years architectural patterns for distributed data have gained more importance and adoption. At the same time similar patterns have emerged for decentralized data. You will learn how CQRS and CRDTs are used in trusted and untrusted environments to overcome the challenges of eventual consistency, data privacy, and global scalability.

Through code examples you will learn how to use these patterns and will see how they are applied through higher-level abstractions like GraphQL, Cloudstate, and even Blockchain.

In this hands-on workshop you will learn how to take a Cloud Native Application from inception to production. Starting with a base sample application we will learn how to break the application into separate services that communicate via gRPC Kotlin. We will then learn how to containerize and deploy the application to Kubernetes. Along the way we will learn how to address some of the major challenges of deploying applications to Kubernetes, such as scaling and service discovery.

Some of the topics to be covered include:

Service communication using gRPC, a fast and efficient binary protocol

Creating Kubernetes Deployment Files
Deploying, Managing and Scaling services using Kubernetes
Using Kubernetes Service Discovery with gRPC

The Model Context Protocol (MCP) standardizes how AI agents connect to external data and tools.

Moving beyond local experiments, this talk explores advanced MCP architectures: local vs. remote server deployments, advanced human-in-the-loop features, and hosting and scaling strategies for remote MCP servers. With Java code we will walk through MCP features, highlighting how to use them in AI agents.

In this hands-on workshop you will learn how to build & deploy production-ready AI Agents. You will use Spring AI, MCP, Java, and Amazon Bedrock and learn how to deal with production concerns like observability and security. We will start with basic prompting then expand with chat memory, RAG, and integration through MCP. You will be provided a provisioned cloud environment and step-by-step instructions.

Bring your laptop, walk away with the skills to build your own AI Agents with Java.

In this session, Matt and James will develop two apps that do the same thing. One will be written in Grails and one will be written in Play. We'll deploying them to Heroku and hammer them to see how they both perform under load. Afterward, we'll compare performance, lines of code, etc.
Who will be declared the winner?!

Who will be declared the winner?!

This session will teach you best practices and patterns for doing Continuous Delivery / Continuous Deployment in Cloud environments. You will learn how to handle schema migrations, maintain dev/prod parity, manage configuration and scaling.

This session will use Heroku as an example platform but the patterns could be implemented anywhere.

Heroku is a Polyglot Cloud Application Platform that makes it easy to deploy Java and Scala apps on the cloud. Deployment is as simple as doing a “git push”.

This session will teach you how to deploy and scale Java and Scala apps on Heroku.

Heroku is a Polyglot Cloud Application Platform that makes it easy to deploy Java, Play! and Scala apps on the cloud. Deployment is as simple as doing a “git push”.

This session will teach you how to instantly deploy and scale Java, Play! and Scala apps on Heroku.

Books

Effect Oriented Programming

by James Ward, Bruce Eckel, Bill Frasure

  • Effects are the unpredictable elements in your programs.

    Concerns like network communication or user interaction might seem easy, but they are devilishly difficult to get right. The pristine world of algorithms devolves into the gory reality of failures and inconsistency.

    Traditionally, we've coped with Effects incompletely and often unwittingly. Programs have been difficult to build, adapt, and maintain.

    Discover a groundbreaking approach to software development using Effect Systems to control the unpredictable elements in your systems. We focus on practical techniques you can apply immediately, making complex concepts accessible to all developers. You'll learn resilient system development in a straightforward, pragmatic way, using simplified code examples and clear explanatory prose.