Conference program

Conference program is forming and call for papers was opened. We will publish all submitted talks here after initial review stage. Final version of the conference program will be published on April 6th. If you have any questions related to the program and talk submission please send them to review@jeeconf.com.

Submitted talks

Do we need JMS in 21st century?

Abstract: JMS is known as standard way to implement distributed work with messaging in Java world. There are many JMS providers, both open source and commercial. Large percent of developers use JMS for almost every case when they want to sent message and process it on the other side. But now there are many alternative solutions to organize message queues: AMQP, Redis, ZooKeeper, Apache Kafka or even custom solutions based on Cassandra. Why not to use them instead of JMS? In this talk we will discuss key “issues” in any messaging system and then with this knowledge in mind look once again at JMS and alternative approaches using practical cases from my experience. May be after this talk some more people will stop using JMS and start using their mind. :)
Format: Talk (50 minutes)
Language: Russian

How Java developers must test their applications

Abstract: In the modern development all developers understand importance of testing. In theory, most of Java developers even understand that they need to write unit and integration tests, or functional tests as the best result. But there is a question from many of them “HOW?”. In the real life everything is not so easy like in samples from the internet. In this talk I will present my expericence, tools and techniques for testing different layers of the application witj RDBMS, NoSQL storages, file system, MVC frameworks, multithreading, REST services and other common parts of almost every Java application. This talk will have very low number of slides, only code, only hardcore!
Format: Master-class (1 hour 40 minutes)
Language: Russian

CompletableFuture is here

Abstract: Many have said that Java has no future. But it is now 2015, the new APIs and trendy lambda dances in Java 8. And a crowd of advanced neighbors​​ that have their own means of asynchronous processing for ‘going to production quickly.”

Let’s talk about other languages ​​and libraries a bit. For a long time we already have Future and ExecutorService for asynchronous execution. However, with the advent of CompletableFuture in JDK 8, the way opened from callback hell to clean and more functional code.

We look at practical examples of the challenges CompletableFuture ‘with streams and lambdas’ takes and about it’s efficiency.

Format: Talk (50 minutes)
Language: Russian
Speaker: Dmitry Chuyko

Side-By-Side Performance Comparisons

Abstract: Suppose you want to have a general understanding of how the performance changes when you add a new JVM argument. For instance, you develop an agent, and you want to make sure that the clients’ performance does not suffer when it’s attached. Or you want to see if it is a good idea to enable a JVM option by default.

There are surprisingly many ways to do it wrong. The talk will cover some of them and discuss the general problem of benchmark suites for Java.

Format: Talk (50 minutes)
Language: Russian
Speaker: Gleb Smirnov

Just what are you doing, HotSpot?

Abstract: Most engineers face problems that are new to them from time to time. Sometimes reading the docs is enough to solve it. Sometimes, there is someone who can help you out. Some other times, you have to dig in by yourself. When things get as deep as JVM, many engineers tend to back down.

But come on, HotSpot is not a mysterious machine. It is opensource, after all! All the seemingly weird JVM behavior can be reproduced, and explained if one goes just a bit deeper.

This talk will take the audience to the fun world of the JVM sources and review several case studies that are initially puzzling, but are actually quick to be dissolved.

Format: Talk (50 minutes)
Language: Russian
Speaker: Gleb Smirnov

Introduction to Real-Time Big Data with Apache Spark

Abstract: This presentation will be useful to those who would like to get acquainted with Apache Spark architecture, top features and see some of them in action, e.g. RDD transformations and actions, Spark SQL, etc. Also we will cover real life use cases related to one of ours commercial projects and recall roadmap how we’ve integrated Apache Spark into it.
Format: Talk (50 minutes)
Language: Russian

Where Is My Memory?

Abstract: Memory leaks and other memory exhaustion situations are frequent enemies of Java application developers and administrators. They can crash your application or make it unbearably slow. This tutorial explains different ways to monitor the memory usage of Java applications and how to distinguish between normal and critical situations. It also explains what information is necessary and when and how to collect it to start solving memory-usage-related problems in your application. You’ll also learn what a memory dump is and how to use it. The presentation also briefly discusses what class loader leaks are and how they differ from object leaks. The session ends with a brief discussion of what other tools are available and if they are useful.
Format: Talk (50 minutes)
Language: Russian

First steps in GC tuning

Abstract: Correctly configured Garbage Collector is essential for application performance. Unfortunately, there are more than 200 JVM configuration parameters which influence GC in one way or another. Their very obscure names make your command line looks like a magic incantation.

The goal of this talk is to demystify Garbage Collector optimisations. I will explain the basics of Garbage Collector tuning, starting from data collection and analysis. I will show how to formulate optimisation hypotheses, choose right parameters for it and verify if they worked. You will not become a GC expert, but you will not be afraid of GC tuning anymore.

Format: Talk (50 minutes)
Language: Russian

Heap, off you go

Abstract: Automatic memory management and garbage collection is one of the biggest advantages of JVM compared with previous platforms. But it has a price: GC overhead and pauses. When every millisecond counts this price can be too high. You can get away and not pay it by taking responsibility back into your hands.

I will describe what does “off-heap” memory means for java application developer and how he can use it in order to speed his application up. The majority of this talk is live code demonstration. I will use different ways to implement off-heap data storage and will show how fast one and the same piece of code runs with each implementation.

Format: Talk (50 minutes)
Language: Russian

MVC 1.0 by Example

Abstract: JSR 371: Model-View-Controller (MVC 1.0) Specification is targeted to be a part of the upcoming Java EE 8 release. In this session I will quickly go through the nuts and bolts of this JSR. I will then jump right into a demo showing the key concepts by building an application based on MVC 1.0 from scratch. As we go I will also make a quick comparison with other frameworks, such as Spring MVC. This session will be based on a live coding demo backed by a set of introductory slides.
Format: Talk (50 minutes)
Language: English
Speaker: Ivar Grimstad

Improve your tests quality with Mutation Testing

Abstract: Unit testing ensures your production code is relevant. But what does ensure your testing code is relevant? Come discover mutation testing and make sure your never forget another assert again.

In the realm of testing, the code coverage metrics is the most often talked about. However, it doesn’t mean that the test has been useful or even that an assert has been coded. Mutation testing is a strategy to make sure that the test code is relevant.

In this talk, I will explain how Code Coverage is computed and what its inherent flaw is. Afterwards, I will describe how Mutation Testing work and how it helps pointing out code that is tested but leave out corner cases. I will also demo PIT, a Java production-grade framework that enables Mutation Testing on a simple code base. If time allows, a demo will also show how PIT can be integrated with SonarQube.

Format: Talk (50 minutes)
Language: English

Spring Boot for Devops

Abstract: Spring Boot is a product from Spring, that provides many configuration defaults for a new Spring project, so that one can set up a project in minutes.

However, this is only one of the many features of Spring Boot. One of its module also provides many important Non-Functional Requirements out-of-the-box: monitoring, metrics, exposing those over HTTP, etc. In this presentation, I’ll demo some of those, that will make DevOps more than a little happy.

Format: Talk (50 minutes)
Language: English

JavaFX 8 everywhere, write once runs anywhere

Abstract: If you are a Java developer, an experienced Java Swing, Flash/Flex, SWT or web developer looking to take your client-side applications to the next level, so this session is for you. You will find this session your guide to help putting you on the right way to begin creating a fancy, customizable, and compelling user interfaces.

Also you will gain the learning skills on how to create high-performance rich client-side applications rapidly, which more importantly runs on any platform either it was desktop, web, mobile, or embedded systems such as RaspberryPi, Arduino, and touchless interactions using Leap motion devices.

This session is a fast paced guide that will help you to get a head start on Java GUI programming leveraging JavaFX 8, deployed and runs on any platform. So what are you waiting for?! Click to enroll.

Format: Talk (50 minutes)
Language: English
Speaker: Mohamed Taman

JQuery Mobile & AngularJS marriage for building fantastic Mobile apps on NetBeans 8

Abstract: There no doubt that JQuery mobile one of the best framework for building mobile we applications, which uses SPA architecture, and provides a greater animations and page transition APIs, along with JQuery library to easily traverse and manipulating the DOM.

AngularJS as it named build to enhance the web, and make it development more structured as it is based on MVC* pattern, with a great concepts and separation of concerns.

In this workshop we are going to combine both frameworks, to take the power of each for building a hybrid (JavaScript) mobile applications that runs on different OSs in a timely manner. But integrating them together alongside Web SQL storage APIs is not that easy task; because of my experience with building such apps I will provide you with tips and tricks that you will never find on Google, because I am talking from experience.

So let’s build a mobile application that works fully offline based on WebSQL storage database, jQuery as our UI, and AngularJS as MVC arm, using Phonegap / Cordova to package our native binaries and get app-store ready for your customers.

So what are you waiting for?! Click to enroll.

Format: Talk (50 minutes)
Language: English
Speaker: Mohamed Taman

Effective Design of RESTful APIs.

Abstract: Developers creating websites needs to know how to build RESTful APIs correctly. This session will help you plan and model your own APIs and understand the six REST design constraints that help guide your architecture. I will starts with a simple overview, including advice on identifying the users or “participants” of your system and the activities they might perform with it. I’ll help you paper test your model, validating the design before you build it. You’ll then explore the HTTP concepts and REST constraints needed to build your API.

Topics include: The three approaches to adding an API, Modeling tips, Creating and grouping API methods, Mapping activities to, verbs and actions, Validating your API, Working with HTTP headers and response codes, Caching, Layered systems, Creating a uniform interface.

All those explanations topics will be provided by examples to clear up the idea and demonstrate the concept. So what are you waiting for?! Click to enroll.

Format: Talk (50 minutes)
Language: English
Speaker: Mohamed Taman

JDK: CPU, PSU, LU, FR — WTF???

Abstract: For the time beeing, there are 4(!) different types of Oracle JDK Updates: Critical Patch Update (CPU), Patch Set Update (PSU), Limited Update (LU) and Feature Release (FR). We will talk about differences between these types of updates, about reasons that leads Oracle to this model. As a result, you will understand what version of JDK/JRE you should use in production, in test environment and on your develment machine and what to expect from another JDK release.
Format: Talk (50 minutes)
Language: Russian

Atomics, CAS, and Nonblocking Algorithms

Abstract: This talk will introduce you in dusadvantages of locking, CAS operations, Java atomic variable classes and a couple of nonblocking algoritms: nonblocking stack and nonblocking queue. If we have time, we will also talk about ABA problem. The talk is based on JCIP (§15) and TAoMP (§§ 5, 7, 10, 11). It will be interesting for Java programmers who have heard baot CAS and lock-free, but who have no experience in writing non-blocking code.
Format: Talk (50 minutes)
Language: Russian

Big Data: from mammoth to elephant – transforming legacy solutions with Hadoop infrastructure

Abstract: You run your SQL-centric infrastructure for 10 years and slowly starting to note you can’t do this way anymore – everything is getting too expensive but your business requires things which are simply impossible without radical cahnges.

This is exact situation we had 2 years before. So we’d like to shouw our experience:

  • Why and how we came into Big Data?
  • Why we choose Apache and Hadoop?
  • What to do and what is already done?
  • What lessans were learned?
  • Hadoop and relational databases: fight or synergy?
  • Reactive Big Data manifest.
Format: Talk (50 minutes)
Language: Russian

Painfree Object-Document Mapping for MongoDB

Abstract: Morphia is MongoDB’s JPA-like Object-Document Mapping (ODM). However, there is no object-relational impedence mismatch since documents fit the concept of object-orientation much better. This removes a lot of JPA pain, which makes database interactions fun again.

On a practical level we take a look at the available annotations and how to map your objects as well as how to easily query data in MongoDB. Next we discuss some patterns on how to solve common requirements, such as the proper use of generics, auto-increments, and the encryption of sensitive data. The talk concludes with some tips and lessons we’ve learned from using Morphia in production for three years.

Format: Talk (50 minutes)
Language: English
Speaker: Philipp Krenn

Fault tolerance – look, it’s possible!

Abstract: The world of old-school approaches to develop software look like are going away. We have no rights to ignore errors that might never happen; connections that might never will be broken or interrupted, processes that might never be killed; networks that might never be slow and this list could continue further…

Let’s endue our software with capabilities to survive in the wild world of reality. In this talk I’m going to depict fault tolerance concepts and patterns, to provide guidance for implementing resilient software.

Format: Talk (50 minutes)
Language: Russian

Spring Puzzlers

Abstract: Everyone knows, that Spring is one of the most powerful and useful frameworks for Java. So how deep are you familiar with it?

  • Level 1 – You know how to use Spring basic without understanding how it actually works under the hood.
  • Level 2 – You understand Spring internals, so you can customize it in accordance with the needs of your project.
  • We offer you an upgrade to Level 3 – to obtain knowledge of very particular but important details about Spring. This session includes many intricate riddles about Spring, which were gathered from real production java projects. Solving them will help you to acquire very important knowledge about Spring and will protect you from different mystical bugs.

Format: Talk (50 minutes)
Language: Russian

Building an Enterprise-less online bank

Abstract: I am pleased to tell you about the architecture of an online banking platform based on Play Framework and PSJ – Plain Simple Java. I will show why it’s better, faster and cheaper than building on the overused Java Enterprise stack. Online banking solutions on this platform now serve Bank Saint Petersburg and UBRD in Yekaterinburg, both of which have won many awards right after launch.

Play Framework greatly helped to give a quick start and put architecture on the right track, but of course the real life has made some corrections, especially related to integration with backend systems: online bank is responsible for the overall user experience, so it must work around any flaws of IT systems in the bank and outdated legal requirements. I will talk about what is particularly good about Play Framework and what we had to do differently, as well as how Agile practices help us to fight poorly designed backend-systems.

Format: Talk (50 minutes)
Language: Russian
Speaker: Anton Keks

Write code faster with fewer errors: is it possible?

Abstract: Developers want to make very few errors in their code and to spot them as early as possible: with the help of unit tests, or earlier, during compilation, or best of all, immediately after they typed something wrong in their IDE. This is what static code analyzers are for. Some of them are built-in, others need to be run separately, some check just about any code, the others require it to be annotated first, and there are tools that are a little bit of all. Do the ends justify the means? Is it even worth trying? What kind of errors can be spotted by static code analysis? How sure can we be if what an analyzer gives us is a real error or a false positive? This talk hopefully helps you answer these questions.
Format: Talk (50 minutes)
Language: Russian

Cassandra in a Microservices platform

Abstract: Building a Microservices platform takes time and challenges a number of traditions in our industry. Coming to grasp with the Brewer’s theorem, BASE, streaming, and de-normalisation of data is a crucial step in accomplishing a successful Microservices platform.

There’s a lot of theory on Microservices out there, and with your nose up to the grindstone and progress slow it can at times be difficult to relate to and to remember how important it all is. With a run through of development styles of streaming, raw event stores, event sourcing, graph databases, and drilling down to infrastructure components like Graphite, Kibana, and Zipkin, this talk will share with you the experience needed to implement Microservices, with Cassandra as a cornerstone technology, in a modern polyglot persistence enterprise platform.

With 6 years experience breaking up a monolith java+sql enterprise dinosaur into a Microservices platform today existing with over 200 thrift and http services – Mick can give a hands on account of facing these challenges.

Format: Talk (50 minutes)
Language: English

RESTful services and OAUTH protocol in IoT

Abstract: From the software development perspective Internet of Things (IoT) is about programming sensors, connecting them with each other and integrating them with existing business applications.

While IoT-enabled devices can use a variety of proprietary software, RESTful Web services and OAUTH protocol play a role of a glue that allows to integrate multiple devices into an application workflow. This presentation will demonstrate a sample architecture of such an application. You’ll also see a live demo of using commercial consumer devices as a part of an application that utilizes REST API, OAuth, Websockets, JavaScript and Java. This presentation will give you an idea of how to authenticate users and integrate new IoT devices as they become available on the market.

Format: Talk (50 minutes)
Language: Russian
Speaker: Yakov Fain