BaselOne 2017 – Teil 1

Am 19. Oktober 2017 wurde die Konferenz BaselOne erfolgreich durchgeführt. In 4 bis 5 parallelen Talks wurden 6 Sessions gehalten, verteilt auf Vor- und Nachmittag. Die Markthalle Basel bot dazu eine tolle Location für die Vorträge, aber auch für Verpflegung, Networking und Abschluss-Apéro. In einem ersten Teil möchte ich drei der Referate kurz vorstellen.

Cloud Native Java – Getting started

Cloud und Microservices sind in aller Munde. Doch was verbirgt sich dahinter? Christian Schwörer zeigt in seinem Talk, wie mit wenigen Zeilen Code ein REST Service gebaut und in der Cloud ausgeführt werden kann. Er verwendet dazu Spring Boot und Cloud Foundry, für lokale Tests PCF Dev.

Spring Boot

  • Definition REST Interface
  • Standalone Spring Application inkl. Embedded Tomcat oder Jetty

Cloud Foundry

  • Open Source Platform, um Cloud Applications auszuführen
  • Bereitstellung aller notwendigen Dienste (Routing, Skalierung, Failover, Load Balancing) und Services (Anbindung an DB, JMS, etc.)

PCF Dev

  • Abgespeckte Version von Pivotal Cloud Foundry (PCF) speziell für lokale Entwicklung und Tests

Weiterführende Links:

Testing Java Code effectively

Andres Almiray stellt eine Vielzahl von Frameworks vor, mit welchen umfassende Unit Tests geschrieben werden können. Interessant dabei ist, dass verschiedene Frameworks miteinander kombiniert werden können, sodass es kaum mehr einen Grund gibt, keine Tests zu schreiben.

Framework

Eigenschaften

Hamcrest

http://hamcrest.org/JavaHamcrest/

  • Descriptive Conditions

  • Parametrisierung

AssertJ

http://joel-costigliola.github.io/assertj/

  • Fluent Interface Design

  • Soft Assertions

Truth

http://google.github.io/truth/

  • Fluent Interface Design

  • Soft Assertions

JUnitParams

https://github.com/Pragmatists/JUnitParams

  • Parametrisierung

  • Verschiedene Data Provider Strategien

Mockito

http://mockito.org

  • Unterstützung von Stubs, Mocks und Spies

  • Mocks für Interfaces, abstrakte und konkrete Klassen

Jukito

https://github.com/ArcBees/Jukito

  • Kombiniert JUnit, Guice und Mockito

  • Parametrisierung

Jgiven

http://jgiven.org

  • Java-basierte BDD DSL

  • Komposition von Testszenarien

  • Parametrisierung von Testszenarien

  • HTML / ASCII Reports

Spock

http://spockframework.org

  • Groovy-basierte DSL

  • Parametrisierung

  • Soft Assertions

Awaitility

https://github.com/awaitility/awaitility

  • DSL für Multi-Threaded Code
  • Erweiterungen für Java8, Groovy, Scala

WireMock

http://wiremock.org/

  • DSL für HTTP Requests

  • Bereistellung benutzerdefinierter HTTP Response

REST-assured

https://github.com/rest-assured/rest-assured

  • DSL für HTTP Requests

  • Validierung und Navigation für Response Body (in JSON, XML, HTML)

DbUnit

http://dbunit.sourceforge.net/

  • Initialisierung und Rücksetzen von Tabellen, Datenbanken

  • Erstellen und Vergleichen von Resultatmengen, Datensätzen

XMLUnit

http://www.xmlunit.org

  • Vergleich von XML-Strukturen

PdfUnit

http://www.pdfunit.com

  • Testen von PDF-Dateien

Konsequent funktionale Programmierung für die JVM

Anhand eines einfachen Beispiels (Vertauschen von zwei Zahlen) zeigt Dierk König, welche Problem dabei auftreten können. Der Ansatz, ohne Zuweisungen und Statements zu programmieren, ist der radikale Ansatz der rein funktionalen Programmierung.

Reine Funktionen haben den grossen Vorteil, dass sie gespeichert, im Voraus oder bei Bedarf berechnet, parallel verarbeitet und optimiert werden können. Die Interoperabilität mit Java erlaubt es, Objekt Orientierte und Funktionale Programmierung miteinander zu kombinieren.

Das Beispiel “Fizzbuzz” zeigt, wie mit wenigen Regeln und Funktionen das Problem gelöst werden kann, mit deutlich weniger Bedingungen, Operationen, Verschachtelungen und erst noch einfacher wartbar und erweiterbar!

Weiterführende Links:

Fortsetzung

In einem zweiten Teil (Blog) werden weitere Referate vorgestellt:

  • Gradle 4.0 Scalable Builds
    Etienne Studer
  • Von API Design und glücklichen Usern
    Christoph Engelbert, David Sondermann
Kommentare sind geschlossen.