Throughout its 18-year evolution, the Java programming language has been an industry leader in defining the behaviour of concurrent programmes. With the introduction of the Java Memory Model (JMM) in Java 1.5, Java’s contribution became particularly apparent.
This is an area where a low-level understanding can help developers strike the right balance between safety and performance, so we’ll kick off the discussion with some counterintuitive low-level examples. Then, we will “work our way out of the weeds” to describe the JMM as a foundation for more familiar programming patterns. We’ll discuss how C, C++, and C# approach the same problems, as well as functional languages and Java 8.
This material can aid most developers in gaining a deeper understanding of concurrency issues in their code. Be there or be out of sync!
David Douglas Bullard
This year, JDK 8 was one of the hottest topics at JavaOne. This presentation contains a synopsis of all the positive aspects. Come see what will be happening in March! (Hint: consider “lambdas”) Also included are additional topics of interest. Want to learn how to install Java on an iOS device? There are already Java-written applications in the Apple App Store; come see how!
Introduction to Elasticsearch
Will provide an overview of what Elasticsearch is, why it was created, how it operates behind the scenes, and how to integrate it with your Java/Groovy applications. I will then demonstrate how to index data into Elasticsearch, visualise it with Kibana, and search it.
Time Management with Clojure and core.async
Ship, Howard Lewis
We are all aware that the most difficult programming issues we are likely to encounter involve threading. Numerous threads coordinating and communicating in complex and unpredictable ways. Clojure’s immutable data structures and threading primitives (such as atoms and agents) get us partway there, but coordinating multiple threads in the manner required by real-world applications increases complexity and decreases performance.
core.async is a new library for Clojure that rationalises and simplifies coordination of large numbers of threads using communicating sequential processes. The result is manageable code that appears synchronous… easy to read and maintain. As is frequently the case in Clojure, the combination of a few simple primitives opens up a vast universe of possibilities.
Testing Single-Page Web Applications with Java and Selenium WebDriver
Learn how Jama tests their massive single-page web application using Selenium WebDriver. We will examine strategies, common pitfalls, and how it has been implemented into our processes.
Async Task-Based Programming
Providing scalability by optimising the throughput of mixed resource tasks in a multi-core setting.
Asynchronous Application Development for the JVM Using Vert.x
Ravi Luthra is the founder of the Ravi Luthra Foundation.
Ravi Luthra is a Bay Area, California native with a passion for software development, specifically Java and everything on the JVM. Pool and camping are pastimes when time permits.
Using HTML5 WebSockets for Real-Time Web Page Construction
WebSockets are one of the most intriguing additions to HTML5. With bandwidth capable of streaming video and audio, real-time push web pages, such as multi-user forms and HTML control panels, enter an entirely new era.
We will examine the browser client side of WebSockets, followed by the server side communication with a backend Java Servlet via JSON, in order to create a multi-user browser web page.
What Works and What Doesn’t Work as Well at Scale in Java
Java is used everywhere and for everything, a phenomenon that can be explained by its efficiency, portability, developer productivity, and platform for application frameworks and non-Java languages. However, not everything is perfect; developers struggle with Java’s greatest strength: its memory management.
We will discuss the areas where Java needs improvement, the difficulties it presents to developers who must provide dependable performance, the reasons why these difficulties exist, and how developers can circumvent them. We’ll also discuss Azul Systems, its history of addressing Java scale issues, and how it addresses the mismatch between Java and big data.
What has changed in Grails 2?
What’s new with Grails 2? A comprehensive look at the core Grails features as well as some tips for working with or migrating to Grails 2. We will begin the discussion with a comprehensive overview of Grails and the reasons why a developer might want to use it to develop enterprise-quality software more quickly. After our introduction, we’ll delve into some of the more advanced features of Grails, such as creating a RESTful application and testing it with GMock.
Peopleware: Productive Projects and Teams Presentation
“The most significant issues in our work are not so much technological as they are sociological in nature.”
Building quality software products is a challenging endeavour, and although we frequently focus on technical risks, social issues frequently derail projects.
Peopleware covers a wide range of issues that arise in our industry, including office environments, staffing, overtime, team chemistry, software processes, etc. And it does so with wit, anecdotes, and references to case studies and research that underpin much of the material.
Peopleware is without a doubt my favourite software book, a must-read for anyone in management who works in the industry.
Apache Drill (Slides)
The author is Gera Shegalov.
The Apache Drill incubator project is new. It aims to provide a distributed system for interactively analysing massive datasets. It aims to process trillions of records per second, inspired by Google’s Dremel technology. We will discuss Apache Drill’s objectives, use cases, and relationship to Hadoop, MongoDB, and other large-scale distributed systems. We’ll also discuss architectural details, extensibility points, data flow, and our first query languages (DrQL and SQL).
Don’t Let Your Bytecode Just Sit There
Java bytecode works flawlessly. It works so well that over 250 programming languages compile to bytecode on the JVM. It is so effective that we can generally ignore it.
But given the popularity and success of Java bytecode, shouldn’t we examine its inner workings? Once you do, you may discover that manipulating bytecode is not only entertaining, but also useful for solving intriguing problems.
This session will examine how bytecode is represented and how to view and manipulate it using the ASM library. We will use the Java Instrumentation API to modify and alter the behaviour of classes as they are loaded.