Das war die BaselOne 2017
Vielen Dank an alle Teilnehmer, Speaker und Helfer für diesen erfolgreichen Tag in der Markthalle in Basel.
Wir sehen uns an der BaselOne 18:
183
Tage
23
Stunden
57
Minuten
25
Sekunden
Location
Markthalle Basel, Viaduktstrasse 10, 4051 Basel
ab 08:30 Uhr
Türöffnung und Eintreffen
09:00 Uhr
Saloon
Begrüssung
Ballroom
Cafe
Kitchen
09:15 Uhr
Saloon
Choosing a frontend strategy
Jonas Felix,
Flavie Laurens
Choosing a frontend strategy
The request developers get today: “It has to run on my iPad, on his Android, on their iPhones. It has to run on the web. It should be global and scalable. It has to run everywhere. And it has to do everything. And of course, only write it once.”
In this “use it everywhere” world we have to change the way we build our frontends. We start to move more and more logic to the frontend and are ending up using mostly JavaScript for the UI. The Backends get thinner and the Frontends explode in size and complexity. Even offline mode in the browser or apps in the store have to be built with the same tools. So we build single page applications which need a framework to tackle their complexity. We have established frameworks for our backends in any language, frameworks we love and trust. But now in the frontend world, we are confronted with an extremely fast paced and atomized world of libraries, patterns, packages, styling methods and platforms.
Let us give you a little guide through this jungle. Let us show you the crucial points to consider by comparing today’s big players: ⇒ React and Angular.
The request developers get today: “It has to run on my iPad, on his Android, on their iPhones. It has to run on the web. It should be global and scalable. It has to run everywhere. And it has to do everything. And of course, only write it once.”
In this “use it everywhere” world we have to change the way we build our frontends. We start to move more and more logic to the frontend and are ending up using mostly JavaScript for the UI. The Backends get thinner and the Frontends explode in size and complexity. Even offline mode in the browser or apps in the store have to be built with the same tools. So we build single page applications which need a framework to tackle their complexity. We have established frameworks for our backends in any language, frameworks we love and trust. But now in the frontend world, we are confronted with an extremely fast paced and atomized world of libraries, patterns, packages, styling methods and platforms.
Let us give you a little guide through this jungle. Let us show you the crucial points to consider by comparing today’s big players: ⇒ React and Angular.
Download Slides
Ballroom
Cloud Native Java - Getting started
Christian Schwörer
Cloud Native Java - Getting Started
Spring Boot hat sich als das JVM-Framework zur effizienten Entwicklung von Microservices etabliert. Es vereinfacht die Anwendungsentwicklung drastisch, in dem es unter anderem das convention-over-configuration-Paradigma konsequent umsetzt.
Mit Cloud Foundry steht eine quelloffene und multi-cloud-fähige Plattform (PaaS) zum Betrieb von Microservices zur Verfügung. Auch sie zeichnet sich durch Entwicklerfreundlichkeit sowie der ganzheitlichen Unterstützung des Entwicklungszykluses aus.
Der Vortrag stellt praxisorientiert dar, wie durch das Zusammenspiel dieser beiden Technologien innerhalb kürzester Zeit ein Microservice erstellt und in der Cloud betrieben werden kann. Dazu wird nach einer Einführung in die wesentlichen Konzepte eine Spring Boot Anwendung entwickelt und direkt in der Cloud Foundry Plattform deployt. Zusätzlich werden die grundlegenden Mechanismen zu scaling und availability angesprochen.
Spring Boot hat sich als das JVM-Framework zur effizienten Entwicklung von Microservices etabliert. Es vereinfacht die Anwendungsentwicklung drastisch, in dem es unter anderem das convention-over-configuration-Paradigma konsequent umsetzt.
Mit Cloud Foundry steht eine quelloffene und multi-cloud-fähige Plattform (PaaS) zum Betrieb von Microservices zur Verfügung. Auch sie zeichnet sich durch Entwicklerfreundlichkeit sowie der ganzheitlichen Unterstützung des Entwicklungszykluses aus.
Der Vortrag stellt praxisorientiert dar, wie durch das Zusammenspiel dieser beiden Technologien innerhalb kürzester Zeit ein Microservice erstellt und in der Cloud betrieben werden kann. Dazu wird nach einer Einführung in die wesentlichen Konzepte eine Spring Boot Anwendung entwickelt und direkt in der Cloud Foundry Plattform deployt. Zusätzlich werden die grundlegenden Mechanismen zu scaling und availability angesprochen.
Download Slides
Cafe
JDK9 mit dem Java Plattform Modulsystem
Wolfgang Weigend
JDK9 mit dem Java Plattform Modulsystem
Nach der Freigabe vom JDK 9 im September diesen Jahres lohnt es sich einen Blick auf die Plattformmodularisierung im Projekt Jigsaw zu werfen. Über die JDK-Enhancement-Vorschläge JEP 200 (Modulares JDK), JEP 201 (Modularer Source-Code) und JEP 220 (Modulare Laufzeit-Images) gelangen die technischen Vorschläge ins JDK 9. Diese Veränderungen lassen es zu, mit dem JDK 9 die gewünschte technische Paketierung von ausgewählter Java-Funktionalität selbst zu bestimmen. Das Projekt Jigsaw hat die primäre Aufgabe, das Design und die Implementierung eines Standard-Modulsystems für die Java-Plattform und für das JDK 9 bereitzustellen. Dabei soll die durchgängige, dynamische und einfache Anpassbarkeit der Java-SE-Plattform & dem JDK, auch für kleine Endgeräte berücksichtigt werden, sowie die Verbesserung von Sicherheit und Wartbarkeit von Java-SE-Plattform-Implementierungen, speziell vom JDK, verwirklicht werden.
Im Vortrag werden Demo-Beispiele gezeigt, die eine Erstellung von individueller Java Runtime mit Anwendung anhand der JDK 9-Werkzeuge verdeutlichen.
Nach der Freigabe vom JDK 9 im September diesen Jahres lohnt es sich einen Blick auf die Plattformmodularisierung im Projekt Jigsaw zu werfen. Über die JDK-Enhancement-Vorschläge JEP 200 (Modulares JDK), JEP 201 (Modularer Source-Code) und JEP 220 (Modulare Laufzeit-Images) gelangen die technischen Vorschläge ins JDK 9. Diese Veränderungen lassen es zu, mit dem JDK 9 die gewünschte technische Paketierung von ausgewählter Java-Funktionalität selbst zu bestimmen. Das Projekt Jigsaw hat die primäre Aufgabe, das Design und die Implementierung eines Standard-Modulsystems für die Java-Plattform und für das JDK 9 bereitzustellen. Dabei soll die durchgängige, dynamische und einfache Anpassbarkeit der Java-SE-Plattform & dem JDK, auch für kleine Endgeräte berücksichtigt werden, sowie die Verbesserung von Sicherheit und Wartbarkeit von Java-SE-Plattform-Implementierungen, speziell vom JDK, verwirklicht werden.
Im Vortrag werden Demo-Beispiele gezeigt, die eine Erstellung von individueller Java Runtime mit Anwendung anhand der JDK 9-Werkzeuge verdeutlichen.
Download Slides
Kitchen
10:15 Uhr
Saloon
Testing Java Code effectively
Andres Almiray
Testing Java Code effectively
The Java ecosystem has myriads of libraries and projects that can be used to create the features our customers require, there's no shortage of options everywhere you look when it comes to writing production code. But what about testing code? If you ascribe to the Clean Code ideals then you know that testing code is as important as production code. Luckily there are a good number of libraries that can be used with popular testing frameworks. In this session we'll discover how to write better parameterized tests; take care of concurrency related events; spy/mock/stub out collaborators to ensure cleaner and isolated tests; fake out REST APIs to test out client code; fake out REST clients to test out server code, and more.
The Java ecosystem has myriads of libraries and projects that can be used to create the features our customers require, there's no shortage of options everywhere you look when it comes to writing production code. But what about testing code? If you ascribe to the Clean Code ideals then you know that testing code is as important as production code. Luckily there are a good number of libraries that can be used with popular testing frameworks. In this session we'll discover how to write better parameterized tests; take care of concurrency related events; spy/mock/stub out collaborators to ensure cleaner and isolated tests; fake out REST APIs to test out client code; fake out REST clients to test out server code, and more.
Download Slides
Ballroom
Restrukturierung der Code Basis mit Java 9
Rabea Gransberger
Restrukturierung der Code Basis mit Java 9
Dieser Vortrag zeigt Strategien zur Modularisierung von großen Projekten und berichtet von den gemachten Erfahrungen.
Jeder Entwickler ertappt sich dabei, wie er sich wünscht mit einem neuen Projekt zu beginnen, um diesmal alles besser zu machen und dem Chaos im aktuellen Code zu entfliehen.
Mit Version 9 unterstützt Java die Aufteilung von Code in einzelne Module. Zugriffsregeln zwischen den Modulen können z.B. die Nutzung von UI Klassen aus Model-Klassen heraus verbieten. Durch diesen Ansatz kann die bestehende Code-Basis in einzelne Teile zerlegt werden, um mehr Übersicht zu schaffen. Diese kleineren Module sind als eigene Projekte deutlich einfacher zu warten und sorgen für ein besseres Gefühl bei Entwicklern.
Dieser Vortrag zeigt Strategien zur Modularisierung von großen Projekten und berichtet von den gemachten Erfahrungen.
Jeder Entwickler ertappt sich dabei, wie er sich wünscht mit einem neuen Projekt zu beginnen, um diesmal alles besser zu machen und dem Chaos im aktuellen Code zu entfliehen.
Mit Version 9 unterstützt Java die Aufteilung von Code in einzelne Module. Zugriffsregeln zwischen den Modulen können z.B. die Nutzung von UI Klassen aus Model-Klassen heraus verbieten. Durch diesen Ansatz kann die bestehende Code-Basis in einzelne Teile zerlegt werden, um mehr Übersicht zu schaffen. Diese kleineren Module sind als eigene Projekte deutlich einfacher zu warten und sorgen für ein besseres Gefühl bei Entwicklern.
Download Slides
Cafe
Perform Database Actions Using Java 8 Stream Syntax instead of SQL
Emil Forslund
Perform Database Actions Using Java 8 Stream Syntax instead of SQL
Why should Java developers need to use SQL when the same semantics can be derived directly from Java Streams? When one takes a closer look at this objective, it turns out there is a remarkable resemblance between Java streams and SQL. For example, stream operations like filter(), sorted() and flatMap() can be automatically translated to corresponding “WHERE”, “SORT” and “JOIN” SQL statements.
By leveraging retrospective streams, open-source Speedment can drastically reduce your code base and allows you to write pure Java code for entire database applications. Speedment is using lazy evaluation of streams, meaning only a minimum set of data is actually pulled from the database into your application and only as the elements are needed.
Why should Java developers need to use SQL when the same semantics can be derived directly from Java Streams? When one takes a closer look at this objective, it turns out there is a remarkable resemblance between Java streams and SQL. For example, stream operations like filter(), sorted() and flatMap() can be automatically translated to corresponding “WHERE”, “SORT” and “JOIN” SQL statements.
By leveraging retrospective streams, open-source Speedment can drastically reduce your code base and allows you to write pure Java code for entire database applications. Speedment is using lazy evaluation of streams, meaning only a minimum set of data is actually pulled from the database into your application and only as the elements are needed.
Download Slides
Kitchen
Service discovery in Kubernetes with Fabric8
Andy Moncsek
Service discovery in Kubernetes with Fabric8
Kubernetes/OpenShift is clearly becoming the new de facto standard in container orchestration. You can even run your legacy applications without rewriting them, which might be one of the reasons for it's success. But still, distributed systems consists of many different services (even in legacy applications) and rely on service discovery.
In this talk I will introduce the Fabric8 Kubernetes API and how you can use it in you existing Java EE and Spring application to do service discovery inside Kubernetes. I will provide step-by-step examples how to use the Fabric8 CDI integration and how to discover Services in Spring or in any other Java application.
Kubernetes/OpenShift is clearly becoming the new de facto standard in container orchestration. You can even run your legacy applications without rewriting them, which might be one of the reasons for it's success. But still, distributed systems consists of many different services (even in legacy applications) and rely on service discovery.
In this talk I will introduce the Fabric8 Kubernetes API and how you can use it in you existing Java EE and Spring application to do service discovery inside Kubernetes. I will provide step-by-step examples how to use the Fabric8 CDI integration and how to discover Services in Spring or in any other Java application.
Download Slides
11:15 Uhr
Pause
11:30 Uhr
Saloon
Building fast and efficient Microservices with binary protocol gRPC
Ray Tsang
Building fast and efficient Microservices with binary protocol gRPC
gRPC is a high performance, open source, general RPC framework that puts mobile and HTTP/2 first. gRPC is based on many years of Google's experience in building distributed systems - it is designed to be low latency, bandwidth and CPU efficient, to create massively distributed systems that span data centers, as well as power mobile apps, real-time communications, IoT devices and APIs. It's also interoperable between multiple languages.
But beyond that fact that it's more efficient than REST, we'll look into how to use gRPC's streaming API, where you can establish server-side streaming, client-side streaming, and bidirectional streaming! This allows developers to build sophisticated real-time applications with ease.
In addition to learning about gRPC and HTTP/2 concepts with code and demonstrations, we'll also deep dive into integration with existing build systems such as Maven and Gradle, but also frameworks such as Spring Boot and RxJava.
gRPC is a high performance, open source, general RPC framework that puts mobile and HTTP/2 first. gRPC is based on many years of Google's experience in building distributed systems - it is designed to be low latency, bandwidth and CPU efficient, to create massively distributed systems that span data centers, as well as power mobile apps, real-time communications, IoT devices and APIs. It's also interoperable between multiple languages.
But beyond that fact that it's more efficient than REST, we'll look into how to use gRPC's streaming API, where you can establish server-side streaming, client-side streaming, and bidirectional streaming! This allows developers to build sophisticated real-time applications with ease.
In addition to learning about gRPC and HTTP/2 concepts with code and demonstrations, we'll also deep dive into integration with existing build systems such as Maven and Gradle, but also frameworks such as Spring Boot and RxJava.
gRPC Java Demos on Github
Ballroom
When, why and how to CQRS
Sebastian Daschner
When, why and how to CQRS
Most of today’s enterprise applications base on a CRUD data model that is simple and straightforward to implement. Another concept of how to model applications is Command Query Responsibility Segregation (CQRS) that enables interesting solutions and use cases, especially with rising demands of scalability.
In this session I’ll show the concept and benefits of CQRS, to which other buzzwords such as eventual consistency, event-driven architectures and event sourcing it is related and how to realize a CQRS application. The questions whether this concept can be realized with Java EE technology, where the framework already offers solutions and where it has to be extended will be answered.
Most of the time will be spent live-coding and examining the “devil is in the details” cases of both approaches.
Most of today’s enterprise applications base on a CRUD data model that is simple and straightforward to implement. Another concept of how to model applications is Command Query Responsibility Segregation (CQRS) that enables interesting solutions and use cases, especially with rising demands of scalability.
In this session I’ll show the concept and benefits of CQRS, to which other buzzwords such as eventual consistency, event-driven architectures and event sourcing it is related and how to realize a CQRS application. The questions whether this concept can be realized with Java EE technology, where the framework already offers solutions and where it has to be extended will be answered.
Most of the time will be spent live-coding and examining the “devil is in the details” cases of both approaches.
Cafe
The Java 9 Module System - Beyond the Basics
Nicolai Parloq
The Java 9 Module System - Beyond the Basics
Java 9 shipped the Java Platform Module System (JPMS), which brings language-level modularity to the Java ecosystem. But you already know that and even spent some time to learn the basics? That's great because this talk will take you beyond that and show how to model finer-grained dependencies and APIs, decouple modules with services, weigh encapsulation versus reflection, analyze dependencies with `jdeps`, safe the day with important command line flags and create runtime images with `jlink`.
With this under your belt, you're ready to become the local Java 9 modularity expert.
Java 9 shipped the Java Platform Module System (JPMS), which brings language-level modularity to the Java ecosystem. But you already know that and even spent some time to learn the basics? That's great because this talk will take you beyond that and show how to model finer-grained dependencies and APIs, decouple modules with services, weigh encapsulation versus reflection, analyze dependencies with `jdeps`, safe the day with important command line flags and create runtime images with `jlink`.
With this under your belt, you're ready to become the local Java 9 modularity expert.
Go to Slides
(Navigation via Pfeiltasten)
Kitchen
12:30 Uhr
Mittagspause / Essen
13:45 Uhr
Saloon
DeepLearning on the JVM - ApacheSystemML and DeepLearning4J on ApacheSpark
Romeo Kienzler
DeepLearning on the JVM - ApacheSystemML and DeepLearning4J on ApacheSpark
DeepLearning frameworks are popping up at very high frequency but only a few of them are suitable to run on clusters, use GPUs and supporting topologies beyond Feed-Forward at the same time. DeepLearning4J features all this without forcing you to learn new exotic programming languages and in addition also scales-out on well established infrastructures like ApacheSpark and Hadoop/YARN.
In this talk we will introduce DeepLearning4J on top of ApacheSpark with an example to create an anomaly detector for IoT sensor data with a LSTM auto encoder neural network.
DeepLearning frameworks are popping up at very high frequency but only a few of them are suitable to run on clusters, use GPUs and supporting topologies beyond Feed-Forward at the same time. DeepLearning4J features all this without forcing you to learn new exotic programming languages and in addition also scales-out on well established infrastructures like ApacheSpark and Hadoop/YARN.
In this talk we will introduce DeepLearning4J on top of ApacheSpark with an example to create an anomaly detector for IoT sensor data with a LSTM auto encoder neural network.
View Slides on GitHub
Ballroom
Konsequent funktionale Programmierung für die JVM
Dierk König
Konsequent funktionale Programmierung für die JVM
Die Industrie gewöhnt sich langsam an einen „funktionalen Stil“ in Java und in anderen JVM Sprachen. Das ist ein Fortschritt. Den bisher dominierenden Ansatz von prozeduraler Bewirtschaftung veränderlicher Objekte können wir nun ergänzen durch reine Funktionen, deren Wirkung sich besser vorhersehen lässt.
Die großen Vorteile der funktionalen Programmierung ergeben sich jedoch erst, wenn man sie so konsequent umsetzt wie Frege, das die Eigenschaften von Haskell auf die JVM bringt.
Die Industrie gewöhnt sich langsam an einen „funktionalen Stil“ in Java und in anderen JVM Sprachen. Das ist ein Fortschritt. Den bisher dominierenden Ansatz von prozeduraler Bewirtschaftung veränderlicher Objekte können wir nun ergänzen durch reine Funktionen, deren Wirkung sich besser vorhersehen lässt.
Die großen Vorteile der funktionalen Programmierung ergeben sich jedoch erst, wenn man sie so konsequent umsetzt wie Frege, das die Eigenschaften von Haskell auf die JVM bringt.
Download Slides
Cafe
Programming for the Cloud - Lösungen mit Amazon Elastic Beanstalk
Daniel Hasler
Programming for the Cloud - Lösungen mit Amazon Elastic Beanstalk
Anhand eines konkreten Beispiels werde ich zeigen, wie mit Amazon Elastic Beanstalk PaaS (Java/Tomcat) und anderen Cloud Diensten (AWS Route53, AWS EC2, AWS SES, Logging, Database, …) ganze cloud-native Lösungen gebaut werden können.
Im speziellen werden folgende Themen behandelt: "Cloud-Architektur: Verfügbarkeit, Skalierbarkeit und Elastizität", "Hazelcast auf AWS EC2", "Verwaltung mehrerer Environments (Config-Management), Applikations- und Plattform-Upgrades", "Integration von Logentries", "Integration von MongoDB Atlas", "Weiterführende Konfiguration EC2 (Load-Balancer, http/2, Certificates)", ...
Anhand eines konkreten Beispiels werde ich zeigen, wie mit Amazon Elastic Beanstalk PaaS (Java/Tomcat) und anderen Cloud Diensten (AWS Route53, AWS EC2, AWS SES, Logging, Database, …) ganze cloud-native Lösungen gebaut werden können.
Im speziellen werden folgende Themen behandelt: "Cloud-Architektur: Verfügbarkeit, Skalierbarkeit und Elastizität", "Hazelcast auf AWS EC2", "Verwaltung mehrerer Environments (Config-Management), Applikations- und Plattform-Upgrades", "Integration von Logentries", "Integration von MongoDB Atlas", "Weiterführende Konfiguration EC2 (Load-Balancer, http/2, Certificates)", ...
Download Slides
Kitchen
Reactive Systems in Java
Nicolas Barbé
Reactive Systems in Java
Nowadays, systems are more and more distributed and must handle an increasing amount of traffic coming from an increasing amount of other systems. One approach to solve these challenges has been formalized as Reactive Systems.
A reactive system is an architectural style based on a set of design principles to build distributed systems that are elastic, resilient, consistent and responsive.
This talk serves as an introduction to build a simple Reactive Systems in Java. We will illustrate the advantages of this approach with some concrete examples based on the latest Spring 5 released recently. We will see how they perform and scale compare to more traditional approaches.
Nowadays, systems are more and more distributed and must handle an increasing amount of traffic coming from an increasing amount of other systems. One approach to solve these challenges has been formalized as Reactive Systems.
A reactive system is an architectural style based on a set of design principles to build distributed systems that are elastic, resilient, consistent and responsive.
This talk serves as an introduction to build a simple Reactive Systems in Java. We will illustrate the advantages of this approach with some concrete examples based on the latest Spring 5 released recently. We will see how they perform and scale compare to more traditional approaches.
Download Slides
14:45 Uhr
Saloon
Intel Multi OS Engine
Vitaly Tsaplin
Intel Multi OS Engine
Are you Java or Android developer? Have you ever dreamed about writing a native iOS application in Java using your existing skills, tools and years of experience? Intel Multi-OS Engine lets you apply your existing Java knowledge and technical expertise to develop native mobile applications for iOS and Android leveraging a high level of code reuse without sacrificing the native look, feel and performance.
Are you Java or Android developer? Have you ever dreamed about writing a native iOS application in Java using your existing skills, tools and years of experience? Intel Multi-OS Engine lets you apply your existing Java knowledge and technical expertise to develop native mobile applications for iOS and Android leveraging a high level of code reuse without sacrificing the native look, feel and performance.
Download Slides
Ballroom
Gradle 4.0 Scalable Builds
Etienne Studer
Gradle 4.0 Scalable Builds
Building, testing, assembling, and releasing software has become a very demanding and complex process over the past years. Multiple components built in multiple languages, distributed teams in different timezones working on different parts of the system, several stages of quality insurance, various software distribution channels, and so on. At the same time, the pressure to release new versions of the software has also tremendously increased and fast high-quality deliveries have become essential for the survival and success of many products.
A suitable platform to build and release your software needs to handle the high complexity of today’s build requirements while at the same time still scaling in terms of performance. Gradle is the most powerful player amongst the build platforms and is chosen by companies like LinkedIn, Netflix, and others that rely strategically on continuous and fast delivery of their software.
In this presentation, we will take a look at how Gradle allows you to elegantly model your build requirements, how Gradle manages to scale its performance to very large builds, and how you can get deep insights into the behavior of your Gradle builds. Demos will be given on features like the Daemon, Composite Builds, Incremental Builds, Compile Avoidance, Build Cache, Build Scans, and other features that maybe sound a bit obscure to you right now but whose concepts and application you will soon understand and appreciate.
Building, testing, assembling, and releasing software has become a very demanding and complex process over the past years. Multiple components built in multiple languages, distributed teams in different timezones working on different parts of the system, several stages of quality insurance, various software distribution channels, and so on. At the same time, the pressure to release new versions of the software has also tremendously increased and fast high-quality deliveries have become essential for the survival and success of many products.
A suitable platform to build and release your software needs to handle the high complexity of today’s build requirements while at the same time still scaling in terms of performance. Gradle is the most powerful player amongst the build platforms and is chosen by companies like LinkedIn, Netflix, and others that rely strategically on continuous and fast delivery of their software.
In this presentation, we will take a look at how Gradle allows you to elegantly model your build requirements, how Gradle manages to scale its performance to very large builds, and how you can get deep insights into the behavior of your Gradle builds. Demos will be given on features like the Daemon, Composite Builds, Incremental Builds, Compile Avoidance, Build Cache, Build Scans, and other features that maybe sound a bit obscure to you right now but whose concepts and application you will soon understand and appreciate.
Download Slides
Cafe
OpenJDK tools for fun and profit
Dmitry Vyazelenko
OpenJDK tools for fun and profit
The Java libraries landscape is huge. There are thousands of frameworks and tools out there but not many people know about useful tools and libraries that are available under OpenJDK umbrella.
In this talk I will cover the following OpenJDK projects: JOL (Java Object Layout), JMH (Java Microbenchmarking Harness), jcstress (Java Concurrency Stress tests) and JITWatch. For every project I will answer questions such as what is this project about, which problems and use cases it solves and show some usage examples.
The Java libraries landscape is huge. There are thousands of frameworks and tools out there but not many people know about useful tools and libraries that are available under OpenJDK umbrella.
In this talk I will cover the following OpenJDK projects: JOL (Java Object Layout), JMH (Java Microbenchmarking Harness), jcstress (Java Concurrency Stress tests) and JITWatch. For every project I will answer questions such as what is this project about, which problems and use cases it solves and show some usage examples.
Download Slides
Kitchen
Infrastructure as Code oder Provisionierung von Dockerhosts und Containern
Remigius Stalder
Infrastructure as Code oder Provisionierung von Dockerhosts und Containern
Lästige und aufwändige manuelle Serverinstallation kann auf einfache Art durch automatisierte Provisionierung und Konfiguration der Infrastrukltur ersetzt werden. Dieser Vortrag zeigt einen Ansatz, bei dem die Definition der Infrastruktur in voll maschinenlesbarer und ausführbarer Form in einem git repo anstatt in den Köpfen der (oder des) Engineers vorhanden sind.
Es wird gezeigt, wie das Verfahren sowohl auf Blech (d.h. auf lokalen physischen Maschinen) als auch in der Cloud angewendet werden kann, und somit eine grosse Übereinstimmung zwischen Test-/Integrations- und Produktionsinfrastruktur erreicht wird.
Die vorgestellten Werkzeuge sind terraform und ansible für Provisionierung und Konfigurationsmanagement, sowie lxd (nur lokal) und docker für System- und Applikationscontainer. Die vollständige Codebasis ist auf github verfügbar, so dass alle TeilnehmerInnen auch sofort mit eigenen Experimenten loslegen können.
Lästige und aufwändige manuelle Serverinstallation kann auf einfache Art durch automatisierte Provisionierung und Konfiguration der Infrastrukltur ersetzt werden. Dieser Vortrag zeigt einen Ansatz, bei dem die Definition der Infrastruktur in voll maschinenlesbarer und ausführbarer Form in einem git repo anstatt in den Köpfen der (oder des) Engineers vorhanden sind.
Es wird gezeigt, wie das Verfahren sowohl auf Blech (d.h. auf lokalen physischen Maschinen) als auch in der Cloud angewendet werden kann, und somit eine grosse Übereinstimmung zwischen Test-/Integrations- und Produktionsinfrastruktur erreicht wird.
Die vorgestellten Werkzeuge sind terraform und ansible für Provisionierung und Konfigurationsmanagement, sowie lxd (nur lokal) und docker für System- und Applikationscontainer. Die vollständige Codebasis ist auf github verfügbar, so dass alle TeilnehmerInnen auch sofort mit eigenen Experimenten loslegen können.
Download Slides
15:45 Uhr
Pause
16:00 Uhr
Saloon
Streaming Data Analysis with Kubernetes
Galder Zamarreño
Streaming Data Analysis with Kubernetes
Dealing with real-time, in-memory, streaming data is a unique challenge and with the advent of the smartphone and IoT (trillions of internet connected devices), we are witnessing an exponential growth in data at scale.
To be able to handle potential data growth, you want to process data in a cloud environment that can easily scale. In this space, Kubernetes offers great container orchestration and auto-scaling capabilites that are perfectly suited for streaming data use cases. When combined with Infinispan, an in-memory data grid from Red Hat, it enpowers you with state of the art distributed data processing capabilities to tackle these challenges.
In this session, we will identify critical patterns and principles that will help you achieve greater scale and response speed. On top of that, you will witness how Infinispan follows these patterns and principles to tackle a Big Data situation via a live coding demonstration on top of a container platform orchestrated by Kubernetes.
Dealing with real-time, in-memory, streaming data is a unique challenge and with the advent of the smartphone and IoT (trillions of internet connected devices), we are witnessing an exponential growth in data at scale.
To be able to handle potential data growth, you want to process data in a cloud environment that can easily scale. In this space, Kubernetes offers great container orchestration and auto-scaling capabilites that are perfectly suited for streaming data use cases. When combined with Infinispan, an in-memory data grid from Red Hat, it enpowers you with state of the art distributed data processing capabilities to tackle these challenges.
In this session, we will identify critical patterns and principles that will help you achieve greater scale and response speed. On top of that, you will witness how Infinispan follows these patterns and principles to tackle a Big Data situation via a live coding demonstration on top of a container platform orchestrated by Kubernetes.
Download Slides
Ballroom
Von API Design und glücklichen Usern
Christoph Engelbert,
David Sondermann
Von API Design und glücklichen Usern
Ein Problem das jeder aus seinem eigenen Entwickler-Alltag kennt: die meisten APIs sind nicht ansprechend gestaltet. Unintuitiv, nicht selbsterklärend, inkonsistent, WT... sind nur ein paar der Aussagen die laufend über die Flure schallen.
Doch APIs, gestaltet aus Sicht des späteren Benutzers, lassen sich schneller verwenden, sind einfacher verständlich und machen viel Spaß bei ihrer Entwicklung und Nutzung. Warum also sind die meisten APIs immer noch so komplex und schlecht zugänglich?
Durch einfache Ansätze wie „Am Anfang steht das Interface“, Nutzung von Builder Pattern und anderen kleinen Tricks zeigt dieser Vortrag Methoden, wie man einfach und schnell entwicklerfreundliche, aber trotzdem „coole“ APIs gestaltet kann.
Ein Problem das jeder aus seinem eigenen Entwickler-Alltag kennt: die meisten APIs sind nicht ansprechend gestaltet. Unintuitiv, nicht selbsterklärend, inkonsistent, WT... sind nur ein paar der Aussagen die laufend über die Flure schallen.
Doch APIs, gestaltet aus Sicht des späteren Benutzers, lassen sich schneller verwenden, sind einfacher verständlich und machen viel Spaß bei ihrer Entwicklung und Nutzung. Warum also sind die meisten APIs immer noch so komplex und schlecht zugänglich?
Durch einfache Ansätze wie „Am Anfang steht das Interface“, Nutzung von Builder Pattern und anderen kleinen Tricks zeigt dieser Vortrag Methoden, wie man einfach und schnell entwicklerfreundliche, aber trotzdem „coole“ APIs gestaltet kann.
Download Slides
Cafe
Supercharging user experience with machine learning
Cedric Reichenbach,
Ilgün Ilgün
Supercharging user experience with machine learning
We present a modern approach to pushing content and actions closer to users. Instead of manually scouting user interfaces, a smart search mechanism acts as a gateway to any kind of actionable item in a system.
We present a modern approach to pushing content and actions closer to users. Instead of manually scouting user interfaces, a smart search mechanism acts as a gateway to any kind of actionable item in a system.
Download Slides
Kitchen
Kotlin for Java Developers
Markus Schmidlin
Kotlin for Java Developers
We started using Kotlin to reduce boilerplate and null-checks. But this is not all Kotlin has to offer. It’s a modern JVM language with static typing, flexible syntax and excellent IDE support (after all it is developed by JetBrains, the makers of IntelliJ). The language has been designed for seamless interoperability with existing Java code. A Java project can be gradually extended with Kotlin classes; and that’s what makes it so appealing for Java developers.
In this talk we will discuss the basic Kotlin syntax and how to integrate it into a Java project. We will then dive deeper into some of the most powerful and exciting features of the language, i.e. "Type system, null-handling, data classes", "Named and default parameters", "Extension functions", "Lambdas, functional programming, collections API", "Properties, delegates", "String templates" and "Declaration-site variance".
A direct comparison between Java and Kotlin code will give you a better feel for the benefits Kotlin can provide. If you always wanted to work in a polyglot environment but were put off by the possible disadvantages like higher learning curve or interoperability problems with existing code and ecosystems, you should have a look into Kotlin.
We started using Kotlin to reduce boilerplate and null-checks. But this is not all Kotlin has to offer. It’s a modern JVM language with static typing, flexible syntax and excellent IDE support (after all it is developed by JetBrains, the makers of IntelliJ). The language has been designed for seamless interoperability with existing Java code. A Java project can be gradually extended with Kotlin classes; and that’s what makes it so appealing for Java developers.
In this talk we will discuss the basic Kotlin syntax and how to integrate it into a Java project. We will then dive deeper into some of the most powerful and exciting features of the language, i.e. "Type system, null-handling, data classes", "Named and default parameters", "Extension functions", "Lambdas, functional programming, collections API", "Properties, delegates", "String templates" and "Declaration-site variance".
A direct comparison between Java and Kotlin code will give you a better feel for the benefits Kotlin can provide. If you always wanted to work in a polyglot environment but were put off by the possible disadvantages like higher learning curve or interoperability problems with existing code and ecosystems, you should have a look into Kotlin.
Download Slides
17:00 Uhr
Saloon
Abschluss
Ballroom
Cafe
Kitchen
17:30 Uhr
Apéro
Speaker

Ray Tsang
About Ray
Ray is a Developer Advocate for the Google Cloud Platform. Ray had extensive hands on cross-industry enterprise systems integration delivery and management experiences during his time at Accenture, managed full stack application development, DevOps, and ITOps. Ray specialized in middleware, big data, and PaaS products during his time at Red Hat while contributing to open source projects, such as Infinispan. Aside from technology, Ray enjoys traveling and adventures.
Ray is a Developer Advocate for the Google Cloud Platform. Ray had extensive hands on cross-industry enterprise systems integration delivery and management experiences during his time at Accenture, managed full stack application development, DevOps, and ITOps. Ray specialized in middleware, big data, and PaaS products during his time at Red Hat while contributing to open source projects, such as Infinispan. Aside from technology, Ray enjoys traveling and adventures.

Sebastian Daschner
About Sebastian
Sebastian Daschner is a Java freelancer working as a Consultant / Software Developer / Architect and is enthusiastic about programming and Java (EE). He is participating in the JCP, serving in the JSR 370 and 374 Expert Groups and hacking on various open source projects on Github. He is a Java Champion, double JavaOne 2016 Rockstar and has been working with Java for more than 7 years. Besides Java, Sebastian is also a heavy user of Linux and container technologies like Docker. He evangelizes computer science practices on https://blog.sebastian-daschner.com and on Twitter via @DaschnerS. When not working with Java, he also loves to travel the world — either by plane or motorbike.
Sebastian Daschner is a Java freelancer working as a Consultant / Software Developer / Architect and is enthusiastic about programming and Java (EE). He is participating in the JCP, serving in the JSR 370 and 374 Expert Groups and hacking on various open source projects on Github. He is a Java Champion, double JavaOne 2016 Rockstar and has been working with Java for more than 7 years. Besides Java, Sebastian is also a heavy user of Linux and container technologies like Docker. He evangelizes computer science practices on https://blog.sebastian-daschner.com and on Twitter via @DaschnerS. When not working with Java, he also loves to travel the world — either by plane or motorbike.

Andres Almiray
About Andres
Andres is a Java/Groovy developer and a Java Champion with more than 17 years of experience in software design and development. He has been involved in web and desktop application development since the early days of Java. Andres is a true believer in open source and has participated on popular projects like Groovy, Griffon, and DbUnit, as well as starting his own projects (Json-lib, EZMorph, GraphicsBuilder, JideBuilder). Founding member of the Griffon framework and Hackergarten community event.
Andres is a Java/Groovy developer and a Java Champion with more than 17 years of experience in software design and development. He has been involved in web and desktop application development since the early days of Java. Andres is a true believer in open source and has participated on popular projects like Groovy, Griffon, and DbUnit, as well as starting his own projects (Json-lib, EZMorph, GraphicsBuilder, JideBuilder). Founding member of the Griffon framework and Hackergarten community event.

Galder Zamarreño

Rabea Gransberger
About Rabea
Rabea hat Informatik an der Universität Bremen studiert und das Studium 2008 mit einem Diplom abgeschlossen. Seitdem arbeitet Sie als Softwareentwicklerin, Abteilungsleiterin und Projektleiterin bei MEKOS. Ihr ist es besonders wichtig qualitativ hochwertigen Code zu schreiben und die Entwickler in Ihrem Team entsprechend fortzubilden.
Dieser Bereich zählt auch zu Ihren Hauptthemen für Vorträge auf diversen Konferenzen und an User Group Abenden. Hauptsächlich programmiert Rabea an dem eclipse RCP/RAP basiertem Projekt OTIS. Im Jahr 2012 hat Rabea die Java User Group Bremen gegründet und ist seitdem an der Organisation beteiligt. Neben der Softwareentwicklung ist Rabea leidenschaftlicher Fußballfan und beim jedem Spiel im heimischen Weserstadion zu finden.
Rabea hat Informatik an der Universität Bremen studiert und das Studium 2008 mit einem Diplom abgeschlossen. Seitdem arbeitet Sie als Softwareentwicklerin, Abteilungsleiterin und Projektleiterin bei MEKOS. Ihr ist es besonders wichtig qualitativ hochwertigen Code zu schreiben und die Entwickler in Ihrem Team entsprechend fortzubilden.
Dieser Bereich zählt auch zu Ihren Hauptthemen für Vorträge auf diversen Konferenzen und an User Group Abenden. Hauptsächlich programmiert Rabea an dem eclipse RCP/RAP basiertem Projekt OTIS. Im Jahr 2012 hat Rabea die Java User Group Bremen gegründet und ist seitdem an der Organisation beteiligt. Neben der Softwareentwicklung ist Rabea leidenschaftlicher Fußballfan und beim jedem Spiel im heimischen Weserstadion zu finden.

Andy Moncsek
About Andy
Andy Moncsek is a software engineer and passionate Java developer since 2004. He enjoys programming with all kinds of JVM languages and frameworks. Currently he is working for Trivadis AG Switzerland as a Java / JEE consultant. He is the project-owner of JacpFX an UI application framework based on JavaFX and VXMS, a microservice framework on top of Vert.x.
Andy Moncsek is a software engineer and passionate Java developer since 2004. He enjoys programming with all kinds of JVM languages and frameworks. Currently he is working for Trivadis AG Switzerland as a Java / JEE consultant. He is the project-owner of JacpFX an UI application framework based on JavaFX and VXMS, a microservice framework on top of Vert.x.

Etienne Studer
About Etienne
Etienne works at Gradle Inc. as VP of Product Tooling and co-leads the Gradle Enterprise engineering efforts. He has been working as a developer, architect, project manager, and CTO over the past 16 years.
Etienne has spent most of his time building software products from the ground up and successfully shipping them to happy customers.
Before entering the software delivery space, Etienne had the privilege to work in the domains of linguistics, banking, insurance, logistics, and process management. In his little spare time, Etienne maintains several popular Gradle plugins.
Etienne works at Gradle Inc. as VP of Product Tooling and co-leads the Gradle Enterprise engineering efforts. He has been working as a developer, architect, project manager, and CTO over the past 16 years.
Etienne has spent most of his time building software products from the ground up and successfully shipping them to happy customers.
Before entering the software delivery space, Etienne had the privilege to work in the domains of linguistics, banking, insurance, logistics, and process management. In his little spare time, Etienne maintains several popular Gradle plugins.

Romeo Kienzler
About Romeo
Romeo Kienzler works as Chief Data Scientist in the IBM Watson IoT World Wide team helping clients to apply advanced machine learning at scale on their IoT sensor data. His current research focus is on scalable machine learning on Apache Spark. He is contributor to various open source projects and works as associate professor for artificial intelligence at a swiss university. Romeo Kienzler is a member of the IBM Technical Expert Council and the IBM Academy of Technology - IBM’s leading brain trusts.
Romeo Kienzler works as Chief Data Scientist in the IBM Watson IoT World Wide team helping clients to apply advanced machine learning at scale on their IoT sensor data. His current research focus is on scalable machine learning on Apache Spark. He is contributor to various open source projects and works as associate professor for artificial intelligence at a swiss university. Romeo Kienzler is a member of the IBM Technical Expert Council and the IBM Academy of Technology - IBM’s leading brain trusts.

Christian Schwörer
About Christian
In seiner Tätigkeit als IT-Berater für die NovaTec Consulting GmbH erlebt Christian Schwörer in verschiedenen Kundenprojekten die zunehmende Abkehr von der “klassischen JEE-Welt“ hin zu verteilten, cloudbasierten Microservice-Architekturen. Er ist der Überzeugung, dass sich die praktische Auseinandersetzung mit dem Thema für jeden Entwickler lohnt – auch wenn Microservices nicht die „Silver Bullet“ für alle Probleme des Software Engineerings sein werden.
In seiner Tätigkeit als IT-Berater für die NovaTec Consulting GmbH erlebt Christian Schwörer in verschiedenen Kundenprojekten die zunehmende Abkehr von der “klassischen JEE-Welt“ hin zu verteilten, cloudbasierten Microservice-Architekturen. Er ist der Überzeugung, dass sich die praktische Auseinandersetzung mit dem Thema für jeden Entwickler lohnt – auch wenn Microservices nicht die „Silver Bullet“ für alle Probleme des Software Engineerings sein werden.

Jonas Felix
About Jonas
Starting to build Java Applications with Borland JBuilder in 2001 Jonas moved quickly into web development. He built a successful web dev company in Basel with 20+ developers and handed it over after 13 years to a new management, to have more time for traveling, coding and building his own new products. Starting in 2016 he started a new training company around modern web development with three trainers. They travel the world, give talks and try to motivate everyone to learn.
Starting to build Java Applications with Borland JBuilder in 2001 Jonas moved quickly into web development. He built a successful web dev company in Basel with 20+ developers and handed it over after 13 years to a new management, to have more time for traveling, coding and building his own new products. Starting in 2016 he started a new training company around modern web development with three trainers. They travel the world, give talks and try to motivate everyone to learn.

Flavie Laurens
About Flavie
Als studierte Bioinformatikerin hat Flavie die letzten Jahre eine umfassende Wissenschafts-Webplattform in Frankreich aufgebaut. Ihre Begeisterung am Unterrichten und an Webtechnologien hat sie ins Letsboot Team geführt. Zusammen mit Jonas Felix und ihrem Team arbeitet sie an neuen Startup Applikationen, sowie Schulungskonzepten.
Als studierte Bioinformatikerin hat Flavie die letzten Jahre eine umfassende Wissenschafts-Webplattform in Frankreich aufgebaut. Ihre Begeisterung am Unterrichten und an Webtechnologien hat sie ins Letsboot Team geführt. Zusammen mit Jonas Felix und ihrem Team arbeitet sie an neuen Startup Applikationen, sowie Schulungskonzepten.

Emil Forslund
About Emil
Emil is a Palo Alto based Java developer heavily involved in the Open Source project Speedment. He has 9+ years of java experience and his blog “Age of Java” has attracted more than 250.000 followers and is regularly featured on sites like DZone, JavaCodeGeeks and Voxxed. Emil is a JavaOne Alumni and a recurring speaker at events like JUGs, Meetups, DevNexus, GOTO Events and JForums where he mostly speaks about code generation and streams.
Emil is a Palo Alto based Java developer heavily involved in the Open Source project Speedment. He has 9+ years of java experience and his blog “Age of Java” has attracted more than 250.000 followers and is regularly featured on sites like DZone, JavaCodeGeeks and Voxxed. Emil is a JavaOne Alumni and a recurring speaker at events like JUGs, Meetups, DevNexus, GOTO Events and JForums where he mostly speaks about code generation and streams.

Nicolai Parlog
About Nicolai
Nicolai is a thirty year old boy, as the narrator would put it, who has found his passion in software development. He constantly reads, thinks, and writes about it, and codes for a living as well as for fun.
Nicolai is the editor of "SitePoint's Java channel", writes "The Java 9 Module System" with Manning, blogs about software development on codefx.org, and is a long-tail contributor to several open source projects. You can hire him for all kinds of things.
Nicolai is a thirty year old boy, as the narrator would put it, who has found his passion in software development. He constantly reads, thinks, and writes about it, and codes for a living as well as for fun.
Nicolai is the editor of "SitePoint's Java channel", writes "The Java 9 Module System" with Manning, blogs about software development on codefx.org, and is a long-tail contributor to several open source projects. You can hire him for all kinds of things.

Dierk König
About Dierk
Dierk is professor at FHNW University of Applied Sciences and Arts Northwestern Switzerland, Fellow at Canoo Engineering AG, Java Champion, JavaOne Rock Star. He is an active contributor to many open source projects like OpenDolphin, Frege, Groovy and Grails. Plus, Dierk is lead author of Groovy in Action.
Dierk is professor at FHNW University of Applied Sciences and Arts Northwestern Switzerland, Fellow at Canoo Engineering AG, Java Champion, JavaOne Rock Star. He is an active contributor to many open source projects like OpenDolphin, Frege, Groovy and Grails. Plus, Dierk is lead author of Groovy in Action.

Daniel Hasler
About Daniel
Daniel Hasler ist Mitbegründer der Bluesky IT-Solutions AG. Er studierte an der Universität Basel Wirtschaft sowie an der ETH Zürich Informatik. Seine fachlichen Schwerpunkte und Kompetenzen liegen in den Bereichen IT-Architektur, Softwareentwicklung im Enterprise-Umfeld und Führung von Entwicklerteams unter Anwendung agiler Methoden.
Daniel Hasler ist Mitbegründer der Bluesky IT-Solutions AG. Er studierte an der Universität Basel Wirtschaft sowie an der ETH Zürich Informatik. Seine fachlichen Schwerpunkte und Kompetenzen liegen in den Bereichen IT-Architektur, Softwareentwicklung im Enterprise-Umfeld und Führung von Entwicklerteams unter Anwendung agiler Methoden.

Dmitry Vyazelenko
About Dmitry
I'm a software developer with 12 years of professional experience - actually working at Canoo Engineering AG in Zurich. My topics of interest include concurrency, performance and tooling.
I'm one of the organizers of the JCrete unconference. I've been a speaker at JokerConf 2015 and JavaLand 2016.
I'm a software developer with 12 years of professional experience - actually working at Canoo Engineering AG in Zurich. My topics of interest include concurrency, performance and tooling.
I'm one of the organizers of the JCrete unconference. I've been a speaker at JokerConf 2015 and JavaLand 2016.

Markus Schmidlin
About Markus
Markus Schmidlin has been writing software professionally for 15 years. He is co-founder of Optravis LLC, a company located in Basel which provides performance critical finance software for global enterprises. Beside developing software, he was teaching Java and embedded C++ training seminars throughout Europe. He holds a bachelor of science in business information technology and an executive master in business administration.
Markus Schmidlin has been writing software professionally for 15 years. He is co-founder of Optravis LLC, a company located in Basel which provides performance critical finance software for global enterprises. Beside developing software, he was teaching Java and embedded C++ training seminars throughout Europe. He holds a bachelor of science in business information technology and an executive master in business administration.

Christoph Engelbert
About Christoph
Christoph Engelbert is Manager of Developer Relations at Hazelcast. He is a passionate Java developer with a deep commitment for Open Source software. He mostly is interested in Performance Optimizations and understanding the internals of the JVM and the Garbage Collector. He loves to bring software to it's limits by looking into profilers and finding problems inside of the codebase.
Christoph Engelbert is Manager of Developer Relations at Hazelcast. He is a passionate Java developer with a deep commitment for Open Source software. He mostly is interested in Performance Optimizations and understanding the internals of the JVM and the Garbage Collector. He loves to bring software to it's limits by looking into profilers and finding problems inside of the codebase.

David Sondermann
About David
David Sondermann ist als Performance und Quality Engineer bei Hazelcast, Inc. für schnellen und trotzdem gut lesbaren Code zuständig. Er entwickelt zudem das hauseigene Simulations- und Stresstest-Tool für das Hazelcast IMDG und verwaltet die Software-Tools für Code-Analysen. Neben Wissen über die JVM stehen bei ihm vor allem Techniken zur Performance Optimierung im Vordergrund. Seine Arbeit verrichtet er unter dem Motto: Be nice to people, be mercyless to code.
David Sondermann ist als Performance und Quality Engineer bei Hazelcast, Inc. für schnellen und trotzdem gut lesbaren Code zuständig. Er entwickelt zudem das hauseigene Simulations- und Stresstest-Tool für das Hazelcast IMDG und verwaltet die Software-Tools für Code-Analysen. Neben Wissen über die JVM stehen bei ihm vor allem Techniken zur Performance Optimierung im Vordergrund. Seine Arbeit verrichtet er unter dem Motto: Be nice to people, be mercyless to code.