Property-Based Testing mit Java

Registration

Wir freuen uns über Eure Anmeldung (optional und unverbindlich) auf unserer Meetup-Seite.

Termin

Der Vortrag findet am 19.04.2018 um 19:00 Uhr in der Uni Mannheim A5, 6 im Raum C013 statt (Anfahrtsbeschreibung).

Abstract

Testgetriebene Entwicklung in Java und anderen objektorientierten Sprachen setzt bislang meist auf beispielbasierte Testfälle, wie man sie leicht mit JUnit und ählichen Testframeworks erstellen kann. Schaut man jedoch über den Tellerrand und auf funktionale Programmiersprachen wie z.B. Haskell oder F#, findet man dort etwas anderes: Property-Tests.

Property-Tests basieren auf der Idee, die erwünschten Eigenschaften unseres Programms zu beschreiben und anschließend das Framework selbstständig Testfälle generieren zu lassen, die diese Eigenschaften bestätigen oder falsifizieren. In diesem Vortrag werde ich sowohl auf die Theorie hinter Property-based Testing eingehen als auch konkret zeigen, wie man mit jqwik unter Java und anderen JVM-Sprachen solche Tests umsetzen kann. Dabei spielen die Muster zum Finden der Properties eine wichtige Rolle.

Bio

Johannes Link beschäftigt sich schon seit Ende des letzten Jahrhunderts mit Extreme Programming und anderen agilen Ansätzen. Ein wesentlicher Schwerpunkt dabei war und ist die testgetriebene Entwicklung. Zu diesem Thema hat er bereits mehrere Bücher geschrieben und lernt dennoch immer noch dazu. Johannes war einer der Köpfe hinter der Konzeption und Umsetzung der JUnit-5-Plattform und ist zur zeit der einzige Haupt-Committer bei jqwik.net.

Besser leben durch Rebasing: Geschönte Entwicklungshistorie leicht gemacht dank Git

Registration

Wir freuen uns über Eure Anmeldung (optional und unverbindlich) auf unserer Meetup-Seite.

Termin

Der Vortrag findet am 22.03.2018 um 19:00 Uhr in der Uni Mannheim A5, 6 im Raum C013 statt (Anfahrtsbeschreibung).

Abstract

Eine der ersten und wichtigsten Regeln, die jedem Git-Neuling eingetrichtert werden, ist, dass geteilte Zweige nicht durch Rebasing verändert werden dürfen. Andererseits wird jeder, der einmal ein Rudel Merge Diamonds gesehen hat, bestätigen, dass eine gut lesbare Projekthistorie anders aussieht.

Der Vortrag zeigt, wie durch sinnvolle Kombination von (interaktivem) Rebasing und Merging geteilter Entwicklungszweige eine gut gegliederte und leicht lesbare Versionshistorie inklusive Branches entstehen kann, ohne dass man zu viel seiner eigenen Vergangenheit vergisst.

Skills

Grundlegende Kenntnisse in Git sind von Vorteil.

Lernziele

  • Verstehen der grundsätzlichen Fragestellungen bei der (Re-)Integration von Git Branches (Merge vs. Rebase, Merge Commit vs. Fast-Forward Merge)
  • Kennenlernen der möglichen Vorteile und Risiken beim Einsatz von Rebasing
  • Erfahren, wie sich eine einfach lesbare und gut verständliche Versionshistorie in Git trotz Branches erzeugen lässt

Bio

Steffen Schluff ist der Leiter der Software Factory der OIO Orientation in Objects GmbH und verantwortlich für die in der Entwicklung eingesetzten Werkzeuge und Verfahren, wobei sein besonderes Interesse dem Thema Continuous Delivery gilt.

Refactoring to Java 10, 40 Jenkins Features and Plugins You Wished You Had Known!

Registration

Registration is optional, but for planning we would still prefer registration on our Meetup page.

Date

06.03.2018 at 19:00h at Uni Mannheim A5, 6, room C013 (How to get there).

Language

The talks will be held in English.

Abstract

Refactoring to Java 10

A sneak peek at the features that will (likely) be in Java 10. For each feature, we’ll explain what it’s trying to accomplish, what it’ll probably look like (with code examples!), and how you can already prepare your source code so that you’ll be ready once these features are released. For a few of these, we’ll show you how Project Lombok can bring the future to you, today!

We’ll explain:

  • Value types, as in, types that ‘code like a class, work like an int’. (JEP 169)
  • Generic specialization: List; you can finally do it! (JEP 218)
  • Pattern Matching. No, not the regular expression kind. Like switch(), but more versatile. (JEP 305)
  • var/val: declare variables and let the compiler sort out the types by looking at the expression you assign to it. (JEP 286)
  • Declaration-site generics. Ever wonder why you have to sprinkle ? extends all over the place to make complex generics work? This can help. (JEP 300)
  • Generics in enums. (JEP 301)
  • Domain objects (also known as ‘value classes’): No more writing / generating of getters, setters, equals, etcetera. (No JEP yet).

40 Jenkins Features and Plugins You Wished You Had Known!

Did you know that an average Jenkins installation has around 100 plugins installed to build and deploy software? And more and more plugins are added every day? Together with the new features in the weekly releases, Jenkins attempts to stay current in a competitive Continuous Integration and Continuous Deployment tooling landscape.

The downside of all these possibilities is that it is hard to wrap your head around what is possible with Jenkins and what are best practices.

At a rate of 1 tip per minute I’ll take you through some core and advanced features to successfully unleash the full potential of Jenkins in your CD process. Tips are applicable to both Jenkins novices and pros. So even if you know the differences between Declarative and Scripted Pipelines, you’ll probably pick up some new tricks.

Bio

Roel Spilker Reinier Zwitserloot has been interested in programming language evolution ever since he started working with Java professionally 15 years ago. As a result, together with Roel Spilker he is the inventor of Project Lombok, a compiler/IDE plugin to bring the java programming language into the next decennium.

Joep Weijers is a Build Master at TOPdesk with a keen interest in delivering quality software continuously. He loves playing around with Jenkins Pipelines, Selenium, Docker and keeps in touch with his inner developer by educating his colleagues on testable Java code.

Refactoring mit monadischen Transaktionen

Registration

Wir freuen uns über Eure Anmeldung (optional und unverbindlich) auf unserer Meetup-Seite.

Termin

Der Vortrag findet am 22.02.2018 um 19:00 Uhr in der Uni Mannheim A5, 6 im Raum C013 statt (Anfahrtsbeschreibung).

Abstract

Spätestens seit Java 8, gibt es monadische Typen in Java. Aber was bedeutet das eigentlich? Was sind die Eigenschaften die Monaden ausmachen? Und wo liegen unsere Schwierigkeiten beim Verständnis von Monaden? Dieser Vortrag beschreibt was eine Monade ist und wie wir eine monadische Transaktion nutzen können um in domänenspezifischer Sprache mit einer Datenbank zu reden. Hierbei bauen wir monadische Transaktionen in ein vorhandenes Repository ein. Weiter beleuchten wir die Vor- und Nachteile dieses Ansatzes und diskutieren die Unterstützung von Monaden in Java. Voraussetzung sind erste Erfahrungen mit funktionaler Programmierung und Lambdas.

Bio

Gregor ist einer der Organisatoren der Java User Group in Mannheim und freiberuflicher Softwareentwickler. Sein erstes Programm war ein in BASIC geschriebenes Text Adventure. Inzwischen schreibt er Fachartikel und hält Vorträge auf Konferenzen und User Groups.

Agile Java Day (aka Venkat's 50 JUG tour)

Registration

Participation requires registration via our Meetup page.

Around lunch time we will get Pizza and drinks. We’d like to thank our sponsors for supporting us. It wouldn’t be possible to make this event happen without andrena objects, fluidops, Liveperson, OIO and Pivotal.

Date

Saturday, Jan 27th 2018 from 9:00 to 17:00 (4 talks at 90 mins each) at C-Hub in Hafenstraße 25-27, 68159 Mannheim.

Language

The talk will be held in English.

Abstract

Venkat Subramaniam is a widely known author and speaker at many international conferences. As part of his world-wide 50 JUG tour he will come to Mannheim (the only stop in Germany!) for a day of teaching on Java topics. We are looking forward to have him presenting the following topics:

Exploring Java 9

If Java 8 was all about how we code, Java 9 is all about how we will build. Modularization will have the biggest impact of any change that happened in Java since its inception. In this presentation we will learn about the need for modularization, how it impacts development, the rules to follow when creating modules, and the effect it has on legacy code. We will explore creating module, using modules, readability, exports, automatic modules, and unnamed modules.

From Functional to Reactive Programming:

We’re in the midst of renewed interest in functional programming. At the same time we see quite a bit of excitement around reactive programming. Where did reactive programming come from? How is it related to functional programming, if at all? In this presentation we will discuss the merits of reactive programming and how functional programming concepts seamlessly transition into the programming model espoused by reactive programming.

The Power and Perils of Parallel Streams

“If streams can be parallel, why not make them parallel all the time?” is a common question from developers getting introduced to Java 8 streams. In this talk we’ll take on three separate topics. 1. When to consider parallelization and when not to. 2. How to parallelize, how to decide on number of threads, and how to control the threads pool. 3. Learn about some common mistakes people make when using parallel streams. The goal of this talk is for us to learn when and how to make good use of parallel streams.

Twelve Ways to Make Code Suck Less

We all have seen our share of bad code and some really good code as well. What are some of the common anti patterns that seem to be recurring over and over in code that sucks? By learning about these code smells and avoiding them, we can greatly help make our code better. Come to this talk to learn about some common code smell and how to improve the quality of code.

Bio

Dr. Venkat Subramaniam is an award-winning author, founder of Agile Developer, Inc., creator of agilelearner.com, and an instructional professor at the University of Houston. He has trained and mentored thousands of software developers in the US, Canada, Europe, and Asia, and is a regularly-invited speaker at several international conferences. Venkat helps his clients effectively apply and succeed with sustainable agile practices on their software projects.

Venkat is a (co)author of multiple technical books, including the 2007 Jolt Productivity award winning book Practices of an Agile Developer. You can find a list of his books at agiledeveloper.com. You can reach him by email at venkats@agiledeveloper.com or on twitter at @venkat_s.

Agenda

  • 8:30 to 9:00 Reception
  • 9:00 to 9:15 Introduction
  • 9:15 to 10:45 Exploring Java 9
  • 10:45 to 11:00 Break
  • 11:00 to 12:30 From Functional to Reactive Programming
  • 12:30 to 13:45 Lunch
  • 13:45 to 15:15 The Power and Perils of Parallel Streams
  • 15:15 to 15:30 Break
  • 15:30 to 17:00 Twelve Ways to Make Code Suck Less

Sponsors

We’d like to thank our sponsors for supporting us. It wouldn’t be possible to make this event happen without andrena objects, fluidops, Liveperson, OIO and Pivotal.