JEEConf 2016 schedule

Friday 20th May 2016

The goal of HTTP/2 is to increase the perceived performance of the web browsing experience. This is achieved by multiplexing over TCP and Server Push among other techniques. What implications does this have for developers? How does Servlet 4.0 embrace HTTP/2 and what support is there in JDK 9? We will see, with code examples, what the future of developing with HTTP/2 might look like.

This presentation is about the world of asynchronous programming in Java, where everything is a stream. We'll talk about how reactive extensions change the way you design Java applications. You'll see how to consume observable streams of events and apply a variety of operators offered by the RXJava library, which requires a different way of thinking about writing code.

The importance of search for modern application is evident and nowadays it is higher than ever. A lot of projects use search forms as a primary interface for communication with a user. Though implementation of an intelligent search functionality is still a challenge and we need a good set of tools. In this presentation, I will talk through the high-level architecture and benefits of ElasticSearch with some examples. Aside from that, we will also take a look at its existing competitors, their similarities, and differences.

In this talk we will go through spock-framework features and compare them with what JUnit and TestNG can offer instead. Together we will try to find out both pragmatic and emotional answer to the Ultimate Question of Unit Testing: finally, should one use spock-framework in the year of 2016? Finally, we will take a quick look on spock-framework ecosystem and examine what the hell is JUnit 5 (yes, it’s a thing).

Footnotes:

Vulcans are extraterrestrial humanoid species from the planet Vulcan attempted to live by reason and logic with no interference from emotion.

Mr. Spock is Half-Vulcan and Half-Human, so he can greatly combine pragmatic and emotional approach.

As Mr. Spock has an A7 computer expert classification he is surely interested in unit testing.

In this talk we will go through spock-framework features and compare them with what JUnit and TestNG can offer instead. Together we will try to find out both pragmatic and emotional answer to the Ultimate Question of Unit Testing: finally, should one use spock-framework in the year of 2016? Finally, we will take a quick look on spock-framework ecosystem and examine what the hell is JUnit 5 (yes, it’s a thing).

Footnotes:

Vulcans are extraterrestrial humanoid species from the planet Vulcan attempted to live by reason and logic with no interference from emotion.
Mr. Spock is Half-Vulcan and Half-Human, so he can greatly combine pragmatic and emotional approach.
As Mr. Spock has an A7 computer expert classification he is surely interested in unit testing.

During my time at Twitter, I engaged in lots of JVM performance tuning at scale. The talk summarizes lessons that were learned in the process of doing this in the area of memory, CPU, lock contention, and threading tuning.

By definition, intrinsics are functions which are handled specially by the compiler or the VM. The HotSpot virtual machine supports intrinsics for specific API functions in the interpreter as well as in the C1 and C2 JIT compilers. In general, intrinsics are a great possibility for optimization. But they also come at a certain cost. First of all, they are inherently platform and implementation dependent. If available, they can lead to consistency problems if they are implemented differently in the interpreter and the JIT compilers. Finally, they can change the program control (e.g. safepoint behavior) and observability (e.g. profiling, instrumentation) in subtle ways.

This talk will give an overview of the intrinsics currently available in the HotSpot VM. It will explain how their usage can be controlled, in which way they are implemented and how you can add an intrinsic for your favorite Java method.

Sometimes your program executes slower than you expect. Of course the code we write ourselves is perfect and the bottleneck is hidden in one of the third-party libraries. It does not make our life easier, does it? What are the steps to investigate the root cause of the issue? What is the proper way to profile Java application?

Code profiling is not a mere launch of a profiler tool. On contrary, profiling is a process that enables you to catch performance bugs proactively during development phase, hunt them in test environment as well as in production. System.out/perf4j/poormansprofiler might perfectly suit for some cases. Those approaches, however would not help you with investigation of yesterdays slowness of QA server. How would you convince a customer to implement your profiler in production server taking into account the fact he might have previous negative experience with «profilers». Profiling process should not get in the way of typical development flow, so simple tasks like «find a method in the profiling result» should indeed be simple.

Java allows you create your own profiler in a blink of an eye: Instrumentation API enables you to augment java classes, and write-once-debug-everywehere bytecode allows to support different hardware platforms without pain. We will review how those features could be used to write a profiler. We’ll see why certain profilers might not meet requirements/expectations of your cusomter. We’ll higlight the key points for creating a profiler from scratch, and discuss how profiler should interact with the application being profiled.

A lot of players on the market have built successful MapReduce workflows to daily process terabytes of historical data. But who wants to wait for 24h to get updated analytics? This talk will introduce you to the lambda architecture designed to take advantages of both batch and streaming processing methods. So we will leverage fast access to historical data with real-time streaming data using Spark (Core, SQL, Streaming), Kafka, Apache Parquet, etc. Clear code plus intuitive demo are also included!

If you heard about web-scale or have a requirement to survive under web-scale or you just would like to prepare your application to handle an X effect this topic is for you. During a presentation you will understand aspects and caveats of performance testing, nuances of performance testing of Java based web applications.
As a practical part you will get a brief overview of existing tools and will get a guide of using Gatling as a tool to make a load for your application.
Gatling is an open source tool for performance loading written in Scala and provides comprehensive DSL for load scenario specification.

In this talk, we'll dive into the details of how various language features supported by Kotlin are translated to Java bytecode. We'll use the JMH microbenchmarking tool to study the relative performance of various constructs and to understand how we can ensure top performance of the Kotlin code that we write.

Ratpack is a fully non-blocking, asynchronous, minimalistic web framework that focuses on developer friendliness and productivity. Learn about a modern, Java 8 based web framework that allows for rapid prototyping of web applications.

The landscape of stream processing frameworks gets more and more complicated. Some time ago Apache Storm was the only boy/girl in town. After that Spark Streaming emerged, then Apache Flink - European answer to Storm & Spark. What's more - just few days ago Apache Dataflow entered incubation stage - aiming at API unification and backed by Google. I'm not even mentioning Samza, Flume nor projects that failed to gain traction.

In the talk I'd like to clear things a bit to help listeners (and myself) decide - which of above fit particular needs and which ones are stable enough to be used without fear.

In my talk I will explain how the IoT has changed the understanding of high-load and why this trend changes the rules. What are asynchronous sockets and how they work. What are the solutions up to date and why Netty has no competitors. How does Netty work, what are its strengths, weaknesses, pitfalls. How does the architecture of our Blynk IoT platform look like and why we don't use Spring, Hibernate, RDBMS and other traditional java mainstream technologies in it. How vanilla java allows to build and design extremely fast applications.

FRP & RxJava have already gained an important place in software development of all kinds, from mobile applications to high load servers. But it is just a beginning. The approach proposed by RxJava gives us such benefits as functional composition over observable streams, easy asynchronous programming, including error handling, an amazing toolbox of functions to build workflows.

This talk is all about short but expressive examples where RxJava gives more possibilities requiring less code.

Javac plugin API was introduced in java 8. We can use this API for getting cool things done (like code generation/code analyzing). However it is not widely used right now. Most of `java magic` projects like Lombok, Java-OO are using annotation processing. I want to show brand new approach for making the magic in java which has some benefits. Right now I have prototype which gives us the power of auto type casting in java and, if you want to use it, you shouldn’t add any dependencies to your project for using it, you should only add flag for compiler. In future I think it can be done through build tool plugin.

Working with Scala can be compared to experiencing the “forth dimension”. Many of the features of Scala are unique and provide ways to look at application development in a new way. Polymorphism in Scala is multifaceted and this is going to be our topic.

Angular 2 is a complete re-write of the super popular Web framework AngularJS. According to Pluralsight survey, Angular leads the list of what developers want to learn in 2016. Angular 2 is a component-based framework that will have an effect in JavaScript community similar to what Spring framework did for Java. This presentation is an overview of this hot framework, which finally made Web development understandable for Java developers.

Do you know that contended AtomicLong.increment() works in JDK 8 much faster than in JDK 7? There are a lot of ways to implement thread-safe counters in Java and 100500 ways to shoot yourself in the foot when you doing this.

During this talk we will consider several ways of implementing thread-safe counters (synchronized, Lock, AtomicLong, Unsafe), compare their performance, and try to understand why some implementations are faster than others in this or that scenario.

We aren’t sure about you, but working with Java 8 made one of the speakers to stop shaving and the other lose his sleep. If you still didn’t reach the level of Kuksenko or Shipilëv in mastering lambdas and strings, this talk is for you. And if you think you did, we have some bad news for you, you should attend as well. We’ll show you some surprising, bizarre and inconceivable parts of Java 8 and make sure that you won’t be (too) surprised when it hits you in production. As any other puzzlers talk, this session will consist of two speakers, lots of puzzling questions, answers by the audience, t-shirts flying around and a lot of fun, all for one purpose – to make you understand Java 8 better.

Java containers appeared back in the era of big expensive hardware and monolithic applications, and currently feel like an impediment to Java progress. More and more developers opt out of containers in favor of runnable jars, especially with the advance of microservices architectures. Andrus Adamchik will present a new open source tool called Bootique (https://bootique.io), a pluggable and extensible technology intended for various kinds of container-less Java apps – REST services, webapps, job runners, desktop apps and what not.

At Grammarly, we have long used Amazon EMR with Hadoop and Pig in support of our big data processing needs. However, we were really excited about the improvements that the maturing Apache Spark offers over Hadoop and Pig, and so set about getting Spark to work with our petabyte text data set. This talk describes the challenges we had in the process and a scalable working setup of Spark that we have discovered as a result.

Angular 2 is a complete re-write of the super popular Web framework AngularJS. According to Pluralsight survey, Angular leads the list of what developers want to learn in 2016. Angular 2 is a component-based framework that will have an effect in JavaScript community similar to what Spring framework did for Java. This presentation is an overview of this hot framework, which finally made Web development understandable for Java developers.

Apache Cassandra and Apache Spark have proven to be a winning combination for building modern OLTP and OLAP applications that serve many millions of concurrent transactions and analyze petabyte-scale datasets. In this talk, we discuss requirements and challenges of big data-driven applications, how these requirements are supported by Cassandra and Spark, and what it takes to become proficient in these technologies. We then present the integrated architecture of Cassandra and Spark in more detail, introduce the Cassandra data model and query language, and focus on a selected subset of Spark Scala API. Finally, we demonstrate how to build your first functional recommendation system with Cassandra and Spark using less than 50 lines of code.

Different Java implementations exist. Your code lives multiple lifes inside them and JIT compilers provide performance behind the scenes. Some JVMs have ahead-of-time (AOT) compilation that shortens the path. Statement of the problem is different, as well as solutions. Let’s talk about why do we need pre-compiled code, how it can already be produced and used with Hotspot. How Project Graal lets Java to compile Java to native code and how new Java-Level JVM Compiler Interface incorporates Java to compilation work of JVM.

Alexander graduated from Saint-Petersburg State University in 2010, department of mathematics, he has a lot of prizes from international and regional mathematical competitions. In 2008, Alexander started to work for JetBrains, where he became Scala plugin for IntelliJ IDEA team leader. From 2012 he started teaching Scala in Saint-Petersburg Academic University.

JHipster is a trendy Yeoman generator that provides the possibility to create an AngularJS + Spring Boot project from the scratch in no time. I would like to share the idea of JHipster and a set of tools that it comprises. I will superficially cover scaffolding and the explicit tool, that makes scaffolding plain and easy to adopt, named Yeoman.

Started in October 2013, JHipster has grown and obtained a developing community, furthermore, it is growing rapidly as for the past year about 150 programmers contributed to it. During the presentation, I want to perform a live demonstration of creating a new project based on the aforementioned core and a few subsidiary technologies. Since JHipster includes a great deal of technologies it’s a good source of common practices.