Programm
Haben Sie Fragen zum Programm? Bitte schreiben Sie eine E-Mail an uns. Bei gegebenem Anlass können noch kurzfristig Änderungen im Programm erfolgen.
Haben Sie Fragen zum Programm? Bitte schreiben Sie eine E-Mail an uns. Bei gegebenem Anlass können noch kurzfristig Änderungen im Programm erfolgen.
Das Programm zum selber ausdrucken:
Programmflyer_BED-Con2015.pdf
= Talks in English
Änderungen vorbehalten
Ein Erfahrungsbericht über das Bauen und Betreiben von Microservices basierten Anwendungen bei Friendscout, Parship und anderen.
Was sind die typischen Probleme und wie löst man sie? Wie baut man elastische und robuste Microservices-Anwendungen, wie monitored man sie, und was passiert wenn es kracht.
REST APIs designen, umsetzen und testen ist üblicherweise mit Medienbrüchen verbunden.
In meinen Vortrag zeige ich anhand von REST API Spezifikationen wie die Lücke zwischen Entwurf und Umsetzung geschlossen werden kann.
Es geht um einen "Design and Test First"-Workflow, der der Entwicklung unter die Arme greift und lästige Fehler vermeiden läßt.
Mit Swagger, RAML und API Blueprint ist es möglich den Entwurf und die Tests an den Anfang der Entwicklung zu stellen.
An Hand eines Praxis relevanten Beispiels wird der Workflow erläutert und der Einsatz der Werkzeuge vorgestellt.
Im Fokus steht das Projekt Swagger.
Werkzeuge und Design-Beispiele der anderen Projekte werden kurz vorgestellt und deren Einsatz im Workflow erläutert.
Das Jahr 2015 begann turbulent für die beiden bekanntesten Projekte aus dem Groovy Universum. Von der bisherigen "Mutter" Pivotal den Laufpass erhalten, mußte sich Groovy auch noch auf die Suche nach einem neuen Zuhause begeben und ist letztlich bei Apache fündig geworden.
All diese Unsicherheiten haben die neuen Features der Releases 2.4 (Groovy) bzw. 3.0 (Grails) ziemlich in den Hintergrund gedrängt. Dabei sind die Projekte lebendiger denn je und vor allem schon längst reif für den produktiven Einsatz. Wir werden uns die wichtigsten und interessantesten Neuerungen der vergangenen Releases anschauen und natürlich auch einen Ausblick auf die Zukunft und Roadmaps wagen.
Coderetreats sind ein sehr effektives Workshop-Format, um Softwareentwicklern u.a. Test-driven Development, Pair Programming, Refactoring und Softwaredesign zu vermitteln.
Die Teilnehmer werden dabei durch verschiedene Constraints in mehreren Sessions dazu gebracht, bekannte Techniken zu hinterfragen und neue Vorgehen auszuprobieren. Das Coderetreat Format hat sich als besonders effektiv beim Vermitteln von Wissen herausgestellt. Zudem machen Coderetreats viel Spaß und motivieren die Teilnehmer bessere Softwareentwickler zu werden.
Dieser Vortrag ist ein Erfahrungsbericht eines der erfahrensten Coderetreat Facilitators. Darin wird das Format kurz vorgestellt und es werden Tipps für die Durchführung und Organisation eigener Coderetreats gegeben.
Ihr habt eine bestehende Softwarelösung und wollt deren Architektur erklären? Vielleicht einem neuen Teammitglied oder einem Kooperationspartner.
Der Quelltext ist zu „ausführlich“ und erzählt trotzdem nicht die ganze Geschichte. Was zeigt Ihr in solchen Fällen von Eurer Dokumentation? Ach habt Ihr nicht ... Nicht schlimm: In diesem Talk geht es um das Anfertigen eines Architekturüberblicks aus dem Nichts. Das stumpfe Ausfüllen eines Templates führt dabei oft zu Frust. Ich zeige stattdessen, wie Ihr die Aufgabe pragmatisch und zugleich wirkungsvoll angeht. Zur Sprache kommen Formen, Zutaten, Werkzeuge und Vorgehen. Ihr lernt die minimale Ausprägung eines Architekturüberblicks kennen und erfahrt, in welchen Situationen Ihr von diesem Minimalset abweichen könnt.
Source code serves two purposes: it represents knowledge and it provides an interface to this knowledge - an interface used by both programmers and compilers.
Because programmers and compilers process source code differently, programmers need to read and write numerous details that are not required for human comprehension. Cognitive linguistics describes language comprehension using structures and procedures surprisingly similar to the ones used by Java and Java compilers. Theories from cognitive linguistics can therefore be used to model how programmers understand source code and to advance Java programming environments.
I demonstrate the prototype of an editor plug-in for Eclipse that separates the interface and the knowledge-representation aspects of source code. By omitting information that is irrelevant for individual programmers, the editor shortens the code, without making it harder to understand. Whenever possible, the editor uses information already present in the source code to refer to objects - using anaphors instead of local variables. An anaphor refers to previously mentioned information without requiring the declaration of an identifier. E.g. the value of "new SessionContext();" can be referred to using the anaphor "sessionContext" that does not require repetitions like in the local variable declaration "SessionContext sessionContext = new SessionContext();". Because only the presentation in the editor is shortened, the knowledge representation remains unchanged and the compiler can process normal Java code. The editor presents the code to an individual programmer. When a new file of source code is opened, the code the programmer read and wrote previously can be used to choose how to present the code to the programmer in an optimal way.
Wir beginnen mit einen Überblick und einer kurzen Einführung in Gradle, dem Opensource Build System.
Danach schauen wir uns genauer an, woran die Gradle - Entwickler aktuell arbeiten und was an neuen Features in den nächsten Monaten geplant ist. Wir nehmen das neue Konfigurationsmodell genauer unter die Lupe, werfen einen Blick auf die neuesten Features im Bereich Dependency Management und geben einen Einblick in weitere neue Fähigkeiten wie z.b. Play Support oder das brandneue Buildship Eclipse Plugin für Gradle. Eventuell bleibt noch Zeit für einen Ausflug in die Welt von Nativen (C/C++/Assembler ) Builds und zeigen warum auch hier Gradle auf dem Vormarsch ist.
Das Testen jeder Schicht einer Anwendung bring unterschiedliche Herausforderungen mit sich. Eine Fülle an Test-Werkzeugen ist vorhanden - aber keine Patentrezept.
Es gibt spezialisierte, aber weniger bekannte Helfer wie z.B. HamSandwich oder JSONUnit. In anderen Fällen sparen Hilfsmittel der neuesten Generation wie AssertJ oder Truth viel Entwicklungszeit gegenüber herkömmlichen Mittelchen wie z.B. Hamcrest.
RESTful APIs lassen sich elegant mit REST-assured testen. MockMVC dagegen kann die Testausführungszeit von Spring Anwendungen enorm verkürzen.
In unserem Überblick zeigen und vergleichen wir unsere lieblings Testing-Libraries für Java. Das können renommierte Platzhirsche sein. Oder eben kleine Helfer, die verdammt gut einen bestimmten Zweck erfüllen. Die richtige Mischung machts! Zu gewinnen gibt es eine kleine Überraschung.
Die Aufteilung von Software in kleine Micro Services hat viele Vorteile.
Die Services können einzeln in Produktion gebracht werden. So können viel mehr Features parallel entwickelt und ausgeliefert werden - eine ideale Ergänzung zu agiler Software-Entwicklung. Ebenso sind Micro Services leichter zu verstehen und zu warten - daher kann die hohe Entwicklungsgeschwindigkeit auch langfristig beibehalten werden. Der Vortrag zeigt, wie Micro-Services funktionieren und welche Vor- und Nachteile er hat.
Microservices stellen Entwickler vor neue Herausforderungen. Der Spring-Stack hält zwei Lösungen bereit: Spring Boot zur Implementierung des Microservice und Spring Cloud für den Aufbau der notwendigen Infrastruktur.
Dieser Vortrag zeigt, wie die beiden Technologien praktisch funktionieren und Microservices-Architekturen mit diesem Ansatz implementiert werden können.
Viele Organisationen sind derzeit dabei eine cloud-basierte Infrastruktur für Ihre Applikationen zu schaffen oder haben dies bereits getan.
Wenn hierbei zu Lösungen wie EC2 oder VMware gegriffen, ist dies allerdings nicht ohne eine Investitionen in neue Prozesse für Deployment und Management der Applikationen möglich. Eine Alternative bieten hierbei Lösungen, die bereits eine entsprechende Struktur anbieten und somit bei der Gestaltung der Infrastruktur helfen.
deis.io ist eine Plattform-as-a-Service Implementierung zum Betrieb von so genannten 12-Factor-Applikationen (http://12factor.net). Diese Methodologie ist aus den Erfahrungen des Cloudbetreibers Heroku entstanden. Sie beschreibt wie Applikationen sinnvoll so gestaltet werden können, dass Sie die Vorteile moderner Cloud-Umgebungen ausnutzen.
Dabei ist die Umgebung neutral zu den betriebenen Applikationen angelegt. Neben den von Haus aus unterstützten verbreiteten Laufzeitumgebungen wie Java, Ruby on Rails, Node.JS, PHP und vielen mehr wird dem Benutzer auch die Möglichkeit gegeben, eigene Umgebungen zu definieren. Die Benutzung erfolgt für die Betreuer und Entwickler der Anwendungen über ein CLI-basiertes Self-Service Interface.
Als Unterbau werden von deis.io die Linux-Distribution CoreOS und Docker genutzt. Durch die Einbindung von Docker ist zusätzlich ein Zugriff auf im Docker-Ökosystem vorhandene Applikationen möglich. Allerdings ist auch möglich Docker einzusetzen, ohne sich dem kritisierten Compliance Alptraum vorgefertigter Images auszusetzen.
Neben dem Aufbau und der Benutzung eines deis.io-Clusters beschäftigt sich der Vortrag auch damit, wie Applikationen erstellt werden um den 12-Factor-Regeln zu entsprechen. Dies wird beispielhaft anhand einer Java-Applikation dargestellt, welche für diesen Zweck entsprechend angepasst wird.
Das kommende Java EE 8 beschert Entwicklern ein neues Web-Framework namens "MVC". Dabei handelt es sich um eine actionbasierte Alternative zum komponentenbasierten JSF.
Das neue Framework wird unter anderem stark auf JAX-RS beruhen. Wer damit bereits Erfahrung gesammelt hat, sollte sich daher schnell zurecht finden. In dieser Session erfahren Teilnehmer alles Wissenswerte zu MVC. Mittels Live-Coding wird auf Basis des aktuellen Standes der Referenzimplementierung eine kleine Beispielanwendung erstellt.
The single node backend is dead. A single instance of a database is no longer sufficiently available, resilient or elastic to cope with the quantities and changing requirements of data that modern applications demand.
To cope, developers take the 'traditional' database they began with and layer other technologies such as document stores and better search. This solves their requirements but creates brittle and complex series of interconnected parts that are hard to scale, upgrade and keep in sync.
This problem is compounded with the rise in popularity of container based application architecture. Traditional databases cannot function effectively or easily within container based application design and distributed databases are the ideal solution.
We will look at current best practice techniques for solving the data persistence at scale issue. It will look at emergent technologies that aim to solve the problem in a more graceful and cohesive way. This includes our own open source solution and why we developed it as well as other open source options and how they function.
Der Vortrag zeigt den Umgang mit Fremdbibliotheken (3rd Party Libraries) und die Fallstricke, die beim Einsatz lauern. Häufig wird in Projekten nur der kurzfristige Nutzen bei der Verwendung von Libraries betrachtet: Die betreffende Funktionalität braucht nicht selbst entwickelt und gepflegt werden. Das freut natürlich den Projektleiter: Das so freigewordene Budget kann anderweitig verplant werden.
Doch hinter solch einer scheinbar naheliegenden Entscheidung verbergen sich auch Kosten und Risiken, die die Weiterentwicklung des Projektes bremsen, technologischen Fortschritt behindern und im Extremfall das Projekt in eine Sackgasse bringen können.
Diese Session beleuchtet den nachhaltigen Umgang mit 3rd Party Libraries in Projekten von verschiedenen Seiten. Ihr erhaltet Orientierung bei der Auswahl der Bibliotheken und es werden verschiedene Strategien für den praktischen Einsatz beschrieben. Wie geht man mit unterschiedlichen Releasezyklen um? Wie mit unterschiedlichen Lizenzen? Wie vermeidet Ihr Risiken und minimiert die Kosten bei Fehlentscheidungen?
Tipps für den Umgang mit Herstellern (ob Open Source oder kommerziell) gespeist aus Projekterfahrungen mit bis zu 70 Entwicklern runden den Vortrag ab und geben Euch damit Sicherheit bei den nächsten Überlegungen zu 3rd Party Libraries.
BIRT ist ein JAVA-Framework zur Erzeugung von Reports auf Basis beliebiger (JDBC-)Datenquellen.
Die Anbindung an diese Quellen geschieht über sogenannte "DataSources" und erfolgt entweder über konkrete SQL-Abfragen oder, im vorliegenden Fall, über eine ORM-Anbindung. Durch die Kombination von Abfragen zu komplexen Tabellenstrukturen enstehen schnell Perfomanceflaschenhälse und die Erzeugung der Reports nimmt (zu) viel Zeit in Anspruch. Dieser Vortrag soll zeigen, ob und (falls ja) wie die Einbindung von Elasticsearch in eine bestehende Java-EE-Anwendung sich dazu zweckentfremden lässt, die Performance bei der Reporterzeugung zu steigern. Dazu wird eine Schnittstelle (als Bestandteil der Java-EE-Anwendung verinice.PRO) demonstriert, die es BIRT erlaubt, auf Elasticsearch Daten zuzugreifen und damit die Vorteile der redundanten schemafreien Datenhaltung auszunutzen. Diskutiert werden Probleme, Hürden und Ergebnisse bei der Entwicklung der Schnittstelle.
In traditioneller Schichtenarchitektur entworfene Anwendungen besitzen eine große Verbreitung in der System-Landschaft vieler Unternehmen. Allerdings ist die saubere Trennung und Kapselung der Geschäftslogik durch ihre Abhängigkeit zur Persistenzschicht nur bedingt möglich.
Eine vielversprechende Alternative zur Schichtenarchitektur ist der hexagonale Architekturstil (auch bekannt als „Ports and Adapters“ und „Onion Architecture“).
GameDuells Software-Architekt Dirk Ehms macht die Teilnehmer mit dem hexagonalen Architekturstil vertraut und vergleicht beide Ansätze miteinander. Der Schwerpunkt des Vortrags liegt auf den unterschiedlichen Möglichkeiten der Testbarkeit beider Architekturstile, welche durch Code-Beispiele veranschaulicht werden.
REST und Hypermedia APIs sind auch 2015 in aller Munde. Dabei gilt es eigentlich immer wieder die gleichen Prinzipien zu berücksichtigen. Hierzu zählen vor allem der richtige Einsatz von HTTP Status Codes, korrekte Content Negotiation und Caching.
In dieser Session wollen wir die Grundlagen besprechen und diese an praxisnahen Beispielen vertiefen. Hierzu setzen wir mit "liberator" auf eine Clojure Bibliothek, die sich nah an der HTTP Spezifikation befindet und den Entwickler somit optimal unterstützt seine Anwendungsdaten RESTful und HTTP konform als Resourcen anzubieten. Trotz der niedrigen Versionsnummer ist "liberator" auch für nicht Clojuristen einen Blick wert, basiert es doch auf den erprobten Konzepten der Erlang "Webmachine"-Implementierung.
Im Gegensatz zu vielen anderen JavaScript MVC Frameworks wie etwa Angular stellt React.js nur den View-Layer, also das V bereit. Um vollständige single-page apps mit React.js zu bauen ist also noch mehr notwendig als nur React.js.
Flux ist eine Architektur (und eine Referenzimplementation) für client-side applications mit React.js, die einen unidirektionalen Datenfluss realisiert. Damit vermeiden Flux-Anwendungen auf elegante Art viele Probleme, die in single-page apps typischerweise zu hoher Komplexität führen. Dieser Talk stellt Flux vor und zeigt die Vorteile von unidirektionalem Datenfluss gegenüber Data-Binding in klassischen MVC Anwendungen.
Autoren möchten Inhalte effizient dokumentieren und vorhandene Inhalte wiederverwenden. Ein Leser möchte das Dokument in einem ansprechenden Layout präsentiert bekommen.
Das textbasierte Asciidoc-Format bietet für einen Entwickler oder technischen Redakteur alle notwendigen Auszeichungselemente, um auch anspruchsvolle Dokumente zu schreiben. So werden unter anderem Tabellen, Fußnoten und annotierte Quellcodes unterstützt. Gleichzeitig ist es ähnlich leichtgewichtig wie z.B. das Markdown Format. Für die Leser wird HTML, PDF oder EPUB generiert.
Da Asciidoc wie Programmcode eingecheckt wird und Merge-Operationen einfach möglich sind, können Programmcode und Dokumentation zusammen versioniert und auf einem einheitlichen Stand gehalten werden.
Der Vortrag gibt eine kurze Einführung in Asciidoc und die dazugehörigen Werkzeuge.
Das Dropwizard-Projekt hat den JavaEE Stack ausgemistet und stellt eine Plattform für leichtgewichtige REST-Services auf Basis von JAX-RS bereit. Auf diese Weise lassen sich Services im Handumdrehen schreiben, dokumentieren und testen.
Entwickler mit Java-EE-Hintergrund finden sich sehr schnell zurecht. Automatische Tests fallen leichter. Die aufwändige Konfiguration eines Application-Servers entfällt. Deployment und Monitoring wurden auch deutlich vereinfacht.
Während des Vortrags entsteht Schritt für Schritt eine Anwendung. Dabei werden die Best Practices rund um Domain Driven Design wie z. B. Hexagon Architecture, Adapter, Repository und Inversion of Control verwendet. Dropwizard unterstützt dies mit Basisfunktionalität für Unit- und Integrations-Tests. Ein Swagger Live-API stellt die Dokumentation der REST API bereit.
Wer hat den Teufelskreis aus Testing und Debugging noch nicht erlebt: In zwei Wochen ist Release-Date und die Tester finden täglich neue Fehler. Jeder Fehler führt zu einer Änderung im Programm. Und jede Änderung kann selbst wieder Fehler verursachen und muss deshalb getestet werden...
Kosten entstehen hauptsächlich durch manuelles Testen bzw. manuelle Testfallerstellung. GUI-Tests sind brüchig und bringen demzufolge einen hohen Pflegeaufwand mit sich - was die Amortisation verzögert. Deshalb werden heute 85% aller Oberflächentests noch manuell ausgeführt. Was wenn man automatisch Testen könnte? Und d.h. nicht manuell erstellte Tests (die will sowieso keiner erstellen und erst recht keiner pflegen) automatisch ablaufen lassen, sondern wirklich vollautomatisch Testen?
Monkey-Testing bezeichnet zufallsbasiertes Testen von Software über die Benutzeroberfläche, und findet vollautomatisch und kostengünstig Fehler. In diesem Vortrag zeige ich, wie jeder Anwesende mit ein paar Zeilen Code einen eigenen primitiven Affen zum automatischen Testen programmieren kann. Davon ausgehend zeige ich Ansätze und Konzepte, wie man diesen Affen (u.a. mit genetischen Algorithmen) immer weiter verbessern kann, bis er teilweise bessere Ergebnisse als menschliche Tester bringt. Dazu gibt es Demos und Erfahrungsberichte aus großen Projekten.
How many times did you have to get two different API’s to communicate with each other and were left wondering what was the best way to get them talking? XML? JSON? HTTP?
Sound familiar?
You have used service oriented architecture but your projects turned out “speaking different languages” and you’re now faced with the arduous task of being the translator.
Life’s too short and #yolo! Although you may have opted for the most appropriate technology, the correct design pattern and the optimal algorithms, if you don’t get your applications talking correctly they will be as good as a plate of spaghetti.
In this presentation I’ll show you the secret many companies have been using for years to be able scale and respond to requests faster. I’ll show you a demo of a life-like application that consumes messages added to a queue and deals with them in a different process.
I will tell you about some of the things you should look for when choosing your messaging system, and what are the things to look for when you start developing your messaging system.
Technisches Verständnis und Kenntnisse in der Programmierung erhalten im Alltagsleben immer größere Bedeutung. Die Devoxx4Kids richtet sich hier an Kinder und Jugendliche zwischen 8 und 14 Jahren. Ihr erklärtes Ziel ist es, Kindern mit viel Spaß und Freude Grundlagen der Computerverarbeitung und des strukturierten Denkens spielerisch näher zu bringen. Dazu gehört es auch, dass Workshops und Erfahrungen allen Interessierten zur Verfügung gestellt werden.
Seit 2014 findet die Devoxx4Kids zwei Mal pro Jahr auch in Karlsruhe statt. Der Vortrag will über die Tagung für Kinder berichten, und kommt in zwei Teilen:
Der erste Teil stellt die Ziele und die Struktur der Devoxx4Kids näher vor. Es wird über die Entstehung berichtet. Weiter wird über den allgemeinen organisatorischen Rahmen der Veranstaltung und die Didaktik der Workshops für die Kinder erzählt. Bei der Ausrichtung gibt es eine Vielzahl von Dingen zu beachten, um einen reibungslosen und vor allem auch sicheren Verlauf der Veranstaltung für Kinder und Mentoren zu gewährleisteten. Hierzu haben sich einige 'Best Practices' etabliert, die vorgestellt werden.
Im zweiten Teil des Vortrags wird die technische Seite der Seminare für die Kinder diskutiert. Die Workshops lassen sich grob in drei Kategorien einteilen: Programmierung, Robotik und das Internet der Dinge ('Internet of Things'), wobei die Grenzen zwischen den Kategorien fließend sind. Anhand von Beispielen aus bereits abgehaltenen Workshops wird gezeigt, wie versucht wird die erklärten Ziele der Devoxx4Kids zu erreichen, und wie schwer es oft ist, eine ausgewogene Balance zwischen Basteln und Programmcode zu halten. Auf einige der Workshop-Inhalte wird näher eingegangen.
Es ist ein starkes Anliegen der Devoxx4Kids, die Tagung für Kinder auch in Deutschland weiter zu verbreiten. Interessierte werden unterstützt und mit Informationen versorgt, um eine eigene Devoxx4Kids veranstalten zu können. Gewünscht ist auch die Diskussion über die vorgestellten Mittel und inwieweit diese als sinnvoll erscheinen. Verbesserungsvorschläge und neue Ideen sind gerne gesehen!
Die Java-EE-Welt hat sich bislang um das Thema Batchverarbeitung gedrückt, was zur Entwicklung von Batch-Frameworks wie Spring Batch geführt hat.
Die Hintergrund-Verarbeitung von (i. d. R.) Massendaten ist aber ein wichtiger Bestandteil vieler Enterprise-Anwendungen, dem der Einzug von „Batch Applications for the Java Platform“ (JSR 352) in den Standard Java EE 7 nun Rechnung trägt. Der Vortrag stellt die Grundzüge der Offline-Verarbeitung mit Jobs, Steps, Chunks etc. dar und demonstriert einige Beispiele auf dem Java-EE-7-Server WildFly 8.
Docker Container bieten ein interessantes Auslieferungs- und Betriebskonzept. Allerdings lässt es sich in vielen Organisationen aus unterschiedlichen Gründen noch nicht für produktiven Einsatz verwenden. Dennoch kann Docker auf dem Weg zu Continuous Delivery in der Testautomatisierung schon einen wichtigen Beitrag leisten!
Dieser Vortrag stellt die Einsatzbereiche vor, in denen Docker in automatisierten Tests verwendet werden kann: Klassisch als Ausführungsumgebung für das Testobjekt, als Umgebung für Umsysteme oder Simulatoren und insbesondere für die Bereitstellung von definierten Testdaten und wie diese am besten in den Container gelangen können. Weiterhin wird die Einbindung der Container in die Testausführung mit Gradle, Maven und Arquillian vorgestellt.
Dieser Session richtet sich an Leute, die schon immer zu wenige Umgebungen für ihre Tests hatten. Egal ob Entwickler oder Tester.
Graphdatenbanken sind eine spannende Technologie, die es uns erlaubt, viele Problemstellungen in einem Bruchteil der Zeit bzw. der Kosten zu lösen, die wir von anderen Speichertechnologien kennen.
Wie bei jeder neuen Technologie, steht am Anfang die Lernphase. Bei Graphdatenbanken ist die Lernkurve typischerweise sehr steil, produktiver Code kann oft schon nach wenigen Tagen geschrieben werden. Trotzdem wird man früher oder später in die ein oder andere Falle tappen. Sei es Datenmodellierung, Testen, Konfiguration oder auch Tuning - alle halten sie für Anfänger die ein oder andere Überraschung bereit.
Der Vortrag wird Wege aufzeigen, wie man ganz bewusst in all diese Fallen tappt. Die Darstellung von Anti-Patterns wird zum einen lehrreich, zum anderen aber auch hoffentlich sehr unterhaltsam werden. Abgerundet wird der Talk durch Erfahrungen und Anekdoten aus Kundenprojekten und der Community, die ich seit über drei Jahren als Field Engineer bei Neo Technology aktiv begleite.
Die Verarbeitung natürlicher Sprache kommt heute in einer Vielzahl von unterschiedlichen Softwaresystemen zum Einsatz. Zu den populären Beispielen zählen unter anderen Apples Siri oder Suchmaschinen wie Microsofts Bing.
Bevor eine inhaltliche Analyse der Texte beispielsweise mit Hilfe von Machine-Learning-Algorithmen vorgenommen werden kann, müssen diese zuvor normalisiert werden.
Die Kurzpräsentation stellt vor wie mit Hilfe der von Google entwickelten Programmiersprache Go effizient Texte “entrauscht” werden können. Dazu zählt unter anderem das Entfernen von Emojis, URLs und das Stripping. Es wird gezeigt, wie sich eine kleine und effiziente Pipeline in Form eines Kommandozeilen-Tools gestalten lässt, die Betriebssystem unabhängig läuft und in unterschiedlichen Umgebungen eingesetzt werden kann. Das Hauptaugenmerk liegt in der Komposition der einzelnen Normalisierungs-Schritte.
Zuletzt wird diskutiert wie sich der Prozess parallelisieren lässt um große Textmengen effizient verarbeiten zu können.
Das vorgestellte Verfahren und die dazu gehörige Implementierung wird im Forschungsprojekt DataFlex an der Charité Berlin produktiv eingesetzt. Als Beispiel werden vom Projekt DataFlex aggregierte Tweets zum Thema Diabetes zum Einsatz gebracht.
It's easy as pie: before checking in, your test suite should always be green. Or should it? What if your tests are all green but you forgot to check one important edge case? What if your underlying system environment lets you down, but only under rare conditions that you didn't cover in your tests?
This talk introduces randomised testing as used by projects like Apache Lucene and Elasticsearch based on the Carrotsearch Randomised Testing framework. It has helped uncover (and ultimately fix) a huge number of bugs not only in these project’s source code, but also in the JVM itself which those projects rely on.
Writing unit and integration tests can be tricky: assumptions about your code may not always be true as any number of "this should never happen" log entries in production systems show. When implementing a system that will be integrated in all sorts of expected, unexpected, and outright weird ways by downstream users, testing all possible code paths, configurations and deployment environments gets complicated.
With the Carrotsearch Randomised Testing framework, projects like Apache Lucene and Elasticsearch have introduced a new level to their unit and integration tests. Input values are no longer statically pre-defined but are generated based on developer defined constraints, meaning The test suite is no longer re-run with a static set of input data each time. Instead, every continuous integration run adds to the search space covered. Though generated at random, tests are still reproducible as all configurations are based on specific test seeds that can be used to re-run the test with the exact same configuration.
Add to this randomising the runtime environment by executing tests with various JVM versions and configurations,and you are bound to find cases where your application runs into limitations and bugs in the JVM.
This talk introduces randomised testing as a concept, shows examples of how the Carrotsearch Randomised Testing framework helps with making your test cases more interesting, and provides some insight into how randomising your execution environment can help save downstream users from surprises. All without putting too much strain on your continuous integration resources.
Camunda ist ein Open Source, Java-basiertes Framework zur Automatisierung von Geschäftsprozessen. Als Middleware-Technologie kann Camunda in 6 verschiedene Java-Anwendungsserver (in verschiedenen Varianten) integriert werden und unterstützt 6 verschiedene Datenbankprodukte.
Wir selbst vetreiben 5 unterstützte Versionen von Camunda, wobei hier jährlich zwei weitere Versionen hinzukommen. Das Betreiben der notwendigen Continuous Integration Infrastruktur auf Basis von virtuellen Maschinen wurde zunehmend problematisch, mit schlechter Build Reproducibility und begrenzteer Skalierbarkeit. Feedback-Zyklen für Entwickler waren untragbar.
Vor Kurzem haben wir vom virtuellen Maschinen-Modell zu einem Container-Modell basierend auf Docker gewechselt, entwickeln die Infrastruktur seitdem als Code und verwenden nun Microservice-artige 'Separation of Concerns'. In diesem Vortrag wollen wir unsere neue Continuous Integration Architecture vorstellen und unsere Erfahrungen bei der Einführung dieser teilen.
Es gibt aktuell einen starken Trend, große Systeme verstärkt in kleinere Services zu zerlegt.
Ob dies nun als SOA oder als Microservices bezeichnet wird, ab einer gewissen Anzahl von Services werden Mechanismen benötigt, um den Überblick zu behalten, diese zu überwachen und dafür zu sorgen, dass Services gefunden werden. Consul ist einer dieser neuen Service-Discovery Lösungen. Consul ist hochverfügbar, kann sogar im WAN genutzt werden. Service-Informationen können so schnell über ein gesamten verteilten Cluster verbreitet werden. Consul bietet Schnittstellen zur Service-Discovery über REST, DNS-Integration oder Template Mechanismen. Daneben bietet es auch einen Key-Value Store, ACLs und sogar Health-Checking. Der Start mit Consul ist meist einfach. Wir diskutieren die ersten Schritte und zeigen, welche Optionen auf dem Weg zu einer produktionsreifen Infrastruktur bestehen.
Spiele sind ein Treiber für jede Plattform. Schaut man sich in den App-Stores aller Plattformen um, dominieren die Spiele.
Durch den HTML5 Canvas können komplexe und performante Spiele mit Javascript entwickelt werden. Dank WebGL und Hardwarebeschleunigung erreichen die Spiele eine Performance, die "nativen" Spielen nicht mehr viel nachstehen. Doch wie entwickelt man ein HTML5 basiertes Spiel? Was kann der Canvas und wie bekomme ich das Spiel in einen App Store? Anhand von Beispielen und Frameworks wird gezeigt, dass dies kein Hexenwerk ist.
Zeig mir Deinen Code und ich sag dir, ob er gut ist: Statische Code-Analysen gehören heute fast schon selbstverständlich zum Alltag qualitätsbewusster Softwareentwicklung.
Packages, Klassen, Methoden, Felder und Deskriptoren der eigenen Anwendung werden vor ihrer Verwendung gründlichst auf Herz und Nieren geprüft. Doch wie sieht es eigentlich mit den verwendeten Frameworks und Bibliotheken aus - genügen sie überhaupt unseren Ansprüchen? Welche Exceptions werden geworfen, die nirgendwo dokumentiert sind? An welchen Stellen bricht ein vermeintlich kleines Upgrade die bestehende API? Oder gibt es eklatante strukturelle Schwächen, die unerwartete Verhaltensänderungen in der Zukunft nach sich ziehen können?
jQAssistant ist ein Open-Source-Werkzeug, das das Einlesen nahezu beliebiger Softwarestrukturen - ob Maven-Projekt, OSGi-Bundle, WAR- oder EAR-File - in eine Neo4j-Datenbank ermöglicht und so den Raum für interaktive Explorationen mittels einfach zu formulierender Abfragen eröffnet. Der Vortrag präsentiert Beispiele für derartige Analysen auf dem Code populärer Frameworks - und vermittelt dabei einige überaus interessante Einblicke und Erkenntnisse.
Building games is complex. It gets even more complicated when games are multiplayer, in which two or more clients are playing against each other at the same time and need to share the state.
The most widespread way to accomplish this synchronization is with thread based programming. However, this requires dealing with low level mechanisms like threads, semaphores and locks, and thus diverts attention from the most important aspect: the game logic.
Akka is a toolkit and runtime for building highly concurrent, distributed and resilient message-driven applications, and is part of the Typesafe technology stack. Using Akka for implementing the game logic allows developers to focus on the game’s rules and forget about having to manage threads and locks.
In this talk, you will learn how to extract the Finite State Machine (FSM) hidden behind a game and how this can be easily modeled using Akka FSM actors. Furthermore, it will be shown how important it is to take possible failure scenarios into account when building your game in order to make it more resilient.
Key points:
Am 08. Oktober 2010 ist Maven 3.0 erschienen. Die aktuellste Version 3.3.3 ist am 28.04.2015 erschienen. Die Frage ist welche Neuerungen bietet Maven hier?
Wie sieht die weitere Entwicklung von Maven aus? Wie sieht das Plugin Ökosystem aus? Welche Entwicklungen gibt es hier? Wie sieht die mögliche Entwicklung von Maven aus?
Als Software-Entwickler ist man nur sehr selten in der Situation, ein völlig neues System auf der Basis neuester Technologien entwickeln zu dürfen. Oft sollen bestehende Systeme nur um viele kleinere Features erweitert werden.
Die Renovierung der grundlegenden Systemarchitektur und die Einführung neuer Programmierparadigmen ist in diesem Umfeld schwierig. Umso wichtiger ist es, dass man die Modernisierung von Altsystemen zu einem fortlaufenden Bestandteil auch des Feature-getriebenen Entwicklungsprozesses macht.
In diesem Vortrag möchten wir zeigen wie auch größere, monolithische Altsysteme mithilfe der offenen Netflix-Bibliotheken schrittweise in Richtung einer Microservice-Achitektur weiterentwickelt werden können. Hystrix kann dabei einen wertvollen Beitrag zur Gesamtstabilität des entstehenden verteilten System leisten.
Der Einsatz von RxJava ein gute Möglichkeit den Anteil von asynchronen Prozessen innerhalb der Legacy-Architektur zu erhöhen. Der Vortrag wird anhand von Beispielen demonstrieren wie der hier angedeutete Modernisierungsprozess umgesetzt werden kann.
Das Nodyn Projekt macht die Node.js API auf der JVM verfügbar. Dabei nutzt Nodyn lediglich Bibliotheken, die nativ auf der JVM laufen: DynJS oder Nashorn als JavaScript Engine und Netty für asynchrones I/O.
Dadurch, dass die Teile von Node.js, die in C geschrieben sind, mit Java und JavaScript ersetzt wurden, beinhaltet Nodyn sogar mehr JavaScript als Node.js.
Mit der Hilfe von Vert.x und dessen Eventbus (powerd by Hazelcast) wird kinderleicht, Node Apps in verteilten Umgebungen auszuführen. Hierbei können diese mit anderen Verticals, egal in welcher JVM-Sprache diese erstellt wurden, kommunizieren und Objekte austauschen. Der Eventbus spannt sich einfach über alle verfügbaren Instanzen.
Wir gewöhnen uns langsam an einen "funktionalen Stil" in Java und anderen JVM Sprachen. Das ist ein Fortschritt. Die grossen 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.
Wie weit kann man kommen ohne veränderliche Objekte, ohne Zuweisungen, ohne Statements, ohne null und mit Bedarfsauswertung und klar abgegrenzten Effekten? Diese Session zeigt eine grundlegend neue Art zu programmieren, bei der logische Schlussfolgerungen wieder Sinn machen.
The Beats are a friendly army of lightweight agents that capture operational data from your servers and ship it to Elasticsearch for analysis.
This talk will present three types of beats: Packetbeat for wire data, Topbeat for system level metrics and Filebeat for log files. It also shows how to use Elasticsearch and Kibana to create, visualize and react on key performance indicators.
Die Integration von User Experience Methoden und Prozessen ist viel diskutiert. Aber wie sieht nun der praktische Ablauf aus? Welche UX-Methoden wähle ich für mein Projekt aus und welche geben mir den bestmöglichen Input?
Wir zeigen anhand eines Projektablaufs, wie wir mittels UX-Methoden das Projekt so unterstützt haben, dass der komplexe und oft sehr dynamische Tagesablauf eines Anwenders so unterstützt worden ist, dass dieser sich voll auf seine Arbeitsaufgaben konzentrieren kann. Hierbei starten wir bei der Vision über das Interaktionskonzept, vom Design zur Implementierung für Android, von der Einführung beim Pilotkunden bis zur Weiterentwicklung von neuen Anforderungen. Dabei diskutieren wir Erfahrungswerte, wie “Aha”-Erlebnisse bei Kunden-/Nutzerinterviews und bei Feldbeobachtungen und der Umgang mit sich widersprechenden Nutzer- und Kundenanforderungen. Für den praktischen Einsatz in Projekten geben wir eine Liste von UX-Standards bis hin zu Checklisten heraus.
Jedes Platform wächst mit der Zeit. Mehr Entwickler mit noch mehr Ideen und Vorstellungen arbeiten alle gemeinsam an der Weiterentwicklung.
Das System wird grösser und wird auf viele Systeme verteilt. Häufig wird ein Technologie Stack vorgegeben um es vermeintlich wartbarer und stabiler zu machen. Zusätzlich wird die Software oft dabei von Entwicklung zu QA weitergereicht und am Schluss von Operations deployed und betrieben. Das Ergebnis davon sind lange Releasezyklen und das verschenkte Potenzial weil nicht die richtigen Tools genutzt werden konnten.
Dieser Vortrag erläutert unsere Leitplanken zur Entwicklung verteilter Systeme bei der E-POST. Wie erlauben wir es den 15 Teams mit 100 Personen 'The right tool for the right job' einzusetzen statt ein starres Korsett an Technologien vorzugeben? Welche Rahmenbedingungen müssen beachtet werden und wo kann ein Team autonom entscheiden wie eine Software zu entwickeln ist? Trotz wachsender Anzahl verteilter Systemen und steigender Komplexität wollen wir weiterhin eine stabile Platform zur Verfügung stellen. Es wird erklärt welche Anforderungen wir dabei in den Bereichen Architektur, Entwicklung, Testen, Deployment, Betrieb und Security vorgeben und was die Teams dabei beachten müssen.
Die Cloud ist eine hervorragende Laufzeitumgebung für Anwendungen, doch es gibt sie noch die Enterprise-Projekte wo die Anwendungen auf Servern in einem RZ ausgeführt werden. In Umgebungen wo das Wort Container noch die Fracht auf einem großen Schiff beschreibt.
Vor einem Jahr, bei einem anstehenden Großprojekt mit diversen Fachanwendungen, haben wir uns entschieden unsere Anwendungen mit Spring-Boot zu implementieren.
Dieser Vortrag soll unsere Entscheidung und entstandene Architektur reflektieren sowie den praxistauglichen Durchstich der Erstellung der Applikation. Besonderes Augenmerk wird dabei auf den Build-, den Softwareverteilungs-, den Konfigurationsmanagementprozess gelegt und wie Spring-Boot uns dabei unter die Arme gegriffen hat.
JUnit ist im Bereich des TDD für den Java Entwickler ein bekanntest Werkzeug. Hier hat sich auch durchgesetzt, dass man die Testabdeckung (CodeCoverage) messen kann.
Hierbei unterscheidet man die Abdeckung auf Klassen-, Methoden- und Zeilenebene. Ziel ist es, die Testabdeckung auf Zeilenebene so hoch wie möglich, nicht aber höher als nötig zu bekommen.
Aber was genau bedeutet das?
Eine Testabdeckung von ca. 75% auf Zeilenebene ist sehr gut und kann einem schon als Grundlage dienen. Aber wie aussagekräftig ist diese Zahl?
Wir werden uns in diesem Talk mit dem Begriff des "Mutation Testing" beschäftigen und praktische Wege zum Einsatz zeigen. Wie ist die Abdeckung zu interpretieren, was kann man erreichen? Wie ist die Integration in ein bestehendes Projekt möglich und was ist bei der Erstellung der Tests zu beachten?
Mit Arquillian stellt JBoss ein sehr umfangreiches Testframework zur Verfügung, dass die Entwicklung von Integrationstests für JavaEE-Anwendungen erheblich erleichtern kann.
Dieser Vortrag beleuchtet die Funktionsweise von Arquillian und stellt vor allem die Möglichkeiten für UI-Tests vor, die sich mit mit den Teilprojekten Drone, Graphene und Warp ergeben. Damit lassen sich in kurzer Zeit und auf einfache Art und Weise automatisierte Integrationstests erstellen, die eine Web-Anwendung durch alle Schichten hindurch abtesten.
Der Enterprise Java Standard „Java EE“ steht nicht gerade in dem Ruf flexibel und schnelllebig zu sein. Bedingt durch die langen Zyklen des JCPs folgt auf jedes Release scheinbar eine Pause von 3-4 Jahren der Stagnation.
Dabei sind es gerade diese Pausen, die in der Community immer wieder dazu führen, einen Blick über den Tellerrand – a.k.a. APIs – zu wagen. Das Resultat? Architekturen, in denen nahezu losgelöst von technologischen und schichtenbedingten Restriktionen völlig neue Patterns zum Tragen kommen. Die Session gibt einen Einblick in die vielfältigen Möglichkeiten und möchte so zu neuen Denkmustern im Java-EE-Architekturdesign anregen.
Die Idee, seine Anwendung in möglichst kleine, unabhängige Teile zu schneiden, die dann miteinander kommunizieren, hat einiges für sich.
Wie bekommt man es aber hin, dass dabei die Fachlichkeit nicht zerpflückt wird und dabei der Blick für das große Ganze verloren geht? Wie schneide ich die Services richtig? Wie sieht die Kommunikation der Services untereinander aus?
Anhand eines Praxisberichts zeigt die Session, wie Domain Driven Design dabei helfen kann, diese Themen sinnvoll zu beantworten.
Alle die immer noch reines JavaScript programmieren, möchte ich motivieren TypeScript auszuprobieren.
TypeScript ist ein Superset von JavaScript, dass mit einem optionalen Typsystem ausgestattet ist nach der Kompilation JavaScript generiert. Viele die von einer statisch typisierten Sprache zu JavaScript kommen, werden sich heimisch fühlen.
Aufgrund von Baumaßnahmen muss der Unterricht an einer Berliner Schule auf zwei Standorte aufgeteilt werden. Die Wechsel zwischen den Standorten führen zu einer zusätzlichen Belastung des Lehrkörpers.
Die Software, die für die Erstellung der Stundenpläne eingesetzt wird, kann diese Wechsel leider nicht minimieren. Als wir das hörten, kamen wir schnell auf die Idee, die Java Planning Engine OptaPlanner darauf anzusetzen.
In diesem Vortrag berichten wir davon, welche Schritte notwendig waren, um das Problem mit OptaPlanner angehen zu können und wie wir somit letztendlich eine Verbesserung der Standortwechsel um 70% erreichen konnten.
Ratpack ist eine junge Bibliothek für die Entwicklung hochperformanter, leichtgewichtiger HTTP-Applikationen.
In diesem Talk werde ich die Features von Ratpack und das Entwicklungsvorgehen anhand des beliebten Spieleklassikers Schiffe Versenken demonstrieren.
Wie kann die Umstellung einer hochverfügbaren Live-Plattform mit mehr als 100 ApplicationServern von JEE-6 auf JEE-7 ohne Ausfallzeiten gelingen? Und wie wird Continuous Delivery während der gesamten Projektlaufzeit unterstützt, wenn 70 Entwickler gleichzeitig Änderungen an der Codebasis durchführen?
Die Antworten auf diese Fragen erhalten Teilnehmer im Vortrag „Operation am offenen Herzen“. Basierend auf einem realen Projekt bei GameDuell, einem der größten deutschen Anbieter für Online-Spiele, beschreibt dieser Praxisbericht die notwendigen technischen Maßnahmen und Anpassungen des Build- und Release-Prozesses, um die gestellten Anforderungen zu erfüllen und die Migration von 300 Maven-Modulen erfolgreich abzuschließen.
Einst ergab sich der Zustand einer Entität aus einer Abfolge von Ereignissen. Kontostände wurden ermittelt, indem man alle Zahlungseingänge und Überweisungen aufaddierte und so zum aktuellen Saldo kam. Dieses Vorgehen war dem Umstand geschuldet, dass relationale Datenbanken noch nicht erfunden waren und man sich mit dem begnügen musste, was man hatte.
Mit dem Erfolg der Datenbank verschwand diese Art des Vorgehens aber nicht und erfreut sich auch heute noch unter der Bezeichnung "Event Sourcing" einiger Beliebtheit.,Neben seiner Verwendung in CQRS-Architekturen tritt vor allem sein Einsatz im Big-Data-Umfeld derzeit in den Vordergrund. Egal wo man es einsetzt, ganz einfach zu verstehen ist es nicht, aber es lohnt sich ein genauerer Blick auf seine Vor- und Nachteile. In meinem Vortrag möchte ich Event Sourcing anhand eines Beispiels mit aktuellen Technologien demonstrieren. Ich möchte aber keinen der üblicherweise verwendeten Usecases beschreiben, sondern et was Interessanteres angehen. Ich werde ein auf Vert.x und Kafka umgesetztes 2D-Spiel samt seiner Architektur beschreiben und vorstellen. Dabei lege ich vor allem Wert auf die technischen Grundlagen als auch den Einsatz von Event Sourcing, um mehrere komplexe Probleme zu lösen: Replay, Late Join, Rewinding ...
Als Objektorientierter Entwickler mit Hintergrund in Java, C# usw. war ich 6 Jahre in SAP-Projekten mit ABAP unterwegs. Dabei habe ich große Schmerzen erlitten, aber auch interessante Konzepte kennengelernt. In dem Vortrag zeige ich meinen Reisebericht.
SAP ist /die/ Standard-Software für Kaufmännische Anwendungen. In der Folge wird auch die zu SAP gehörige Programmiersprache ABAP viel von Kaufleuten eingesetzt. In diesem Vortrag schauen wir uns die Programmiersprache durch die Augen des Entwicklers mit Informatik-Hintergrund an. ABAP stand ursprünglich für 'Allgemeiner Berichtsaufbereitungsprozessor'. Heute kann die Sprache aber weitaus mehr als Berichte zu erzeugen und zu verarbeiten. Die Sprache ist Turing-mächtig und über die Zeit haben verschiedene jeweils moderne Technologien und Konzepte Einzug in die Sprache gehalten. Dieser Vortrag nimmt den Teilnehmer mit auf eine Rundfahrt durch ein Programmiersprache, die historisch gewachsen ist; die viel Licht und viel Schatten enthält und die produktiv im Einsatz ist bei den größten Unternehmen dieser Welt.
Auf der Jax 2014 hat Brian Goetz angekündigt: Nach Lambdas und co mit Java 8 ist das "Next Big Thing" für Java die Unterstützung von Value Types direkt in der Programmiersprache. Damit bekommt Java ein Feature, das andere Programmiersprachen schon länger haben.
In diesem Vortrag schauen wir uns genau an:
In der Produktion wird das Geld gemacht und werden die Kunden zufrieden gestellt - aber nur so lange, wie unsere Software läuft und zügig antwortet. Läuft unsere Anwendung nicht oder ist langsam, ist sie wertlos - schlimmer noch: Wir verlieren Geld und Reputation.
Genau darum geht es bei Resilience: Wie man eine Anwendung gestaltet, dass sie hochverfügbar ist und zügig antwortet - auch unter unerwarteten Fehler- und Lastsituationen. Das ist eine massive Abkehr von traditionellen Stabilitätsansätzen, die in den meisten Unternehmen noch Anwendung finden, denn Resilience akzeptiert, dass Fehler in den heutigen komplexen, verteilten Systemlandschaften nicht vermeidbar sind. Stattdessen nimmt Resilience Fehler in Produktionssystemen als gegeben hin und geht aktiv mit ihnen um. In dieser Session lernen Sie eine Mustersprache rund um das Thema Resilience kennen, natürlich garniert mit jeder Menge Tipps und Tricks.
The key challenge of processing weather data are “simply” the big numbers: Multiple numeric weather models with about 250GB of data at least twice a day. A year of world wide observation data. Satellite and radar images every 5 minutes. How to store the data efficiently? And how to query and lighting fast process the weather parameters? This talk gives you insights on one of the “oldest” big data domains in the industry.
You will learn how they worked around these problems in the old days and how new solutions based on sharding and NoSQL offer. We will present practical results from our in-depth PoC’s. You get to know the borders of Elastic Search, options on sharding and how to measure the different setups.
Die Zahl der mobilen und intelligenten Geräte nimmt zu. Gerade im Internet of Things (IoT) steigt die asynchrone Machine-to-Machine (M2M)-Kommunikation an. Auch wenn Messaging im Unternmehmensbereich sei Jahrzehnten etabliert ist, gibt beim mobilen Messaging einiges zu beachten.
Hier kommen nicht nur andere Protokolle zum Einsatz, sondern es gibt ganz andere Mengengerüste und Anforderungen an die Übertragungskapazität, -Güte und Energieverbrauch. Die Protokolle MQTT und STOMP sind mit den dazugehörigen Produkten geeignet, eine polyglotte und plattformübergreifende Realisierung zu ermöglichen. Dafür existieren feine große Zahl von Serverprodukten und Clientbibliotheken für verschiedene Programmiersprachen. In diesem Vortrag wird Apache Apollo für STOMP und Eclipse Paho für MQTT vorgestellt. Als Client wird neben der Kommandozeile, Java und JavaScript genutzt und mit Beispielen gezeigt. Damit wird mobiles polyglottes Messaging einfacher möglich

Alexander Schwartz arbeitet als Principal IT Consultant bei msg systems ag. In den vergangenen Jahren hat er Softwareprojekte mit JEE und Spring in verschiedenen Rollen als Entwickler, ScrumMaster, Architekt und Projektmanager begleitet. Im Laufe der Zeit arbeitete er mit verschiedensten Web-Technologien. Er schätzt produktive Arbeitsumgebungen, agile Projekte und automatisierte Tests.

André von Deetzen ist Senior Experte für Software Engineering bei der Kisters AG. Er kümmert sich um den Entwurf, die betriebliche sowie die Softwarearchitektur von IT-Groß- und Kleinprojekten in dem Bereich der Verkehrstelematik.

Arne Landwehr fühlt sich in der Java Welt zu Hause und ist nach vorherigen Tätigkeiten als Software Architekt und Teamleiter nun als Consultant für die innoQ Deutschland GmbH tätig. Neben einem starken Interesse an sauberem Code gilt sein Augenmerk dem Design und der Architektur von verteilten Systemen.

Arne Limburg ist Enterprise Architect bei der open knowledge GmbH in Oldenburg. Er verfügt über mehrjährige Erfahrung als Entwickler, Architekt und Trainer im Enterprise-Umfeld. Zu diesen Bereichen spricht er regelmäßig auf Konferenzen und führt Workshops durch. Darüber hinaus ist er im Open-Source-Bereich tätig, unter anderem als PMC Member von Apache OpenWebBeans und Apache Deltaspike und als Urheber und Projektleiter von JPA Security.

Carsten Sandtner ist Head of Software Development bei mediaman Gesellschaft für Kommunikation mbH in Mainz. Seit 1998 ist er in der professionellen Webentwicklung tätig und hat zahlreiche Großprojekte für namhafte Kunden als Entwickler und Projektmanager durchgeführt. Für Zynga war Carsten Sandtner als Senior Javascript Developer an der Entwicklung eine zentralen Javascript API beteiligt und hat an der Portierung von Spielen auf HTML5 mitgewirkt. Privat, als Teil der Mozilla Representatives und beruflich hat er ein starkes Interesse für die Entwicklung des "open Webs" und dem dazugehörigen Umfeld.

Chris Ward: Developer advocate for Crate.IO. Mobile Editor at SitePoint. In spare time is an Open Advocate working on Software, Organisations, Books and Games. Loves to talk when got the chance.

Christian Lipphardt: Ich bin Software Engineer bei Camunda. Ich habe zunächst an verschiedenen Open-Source Process Engines gearbeitet und dann meinen Schwerpunkt auf Continous Delivery, Release Engineering und Serverintegration mit polyglotter Programmierung gelegt. Pragmatische, skalierbare und wartbare Lösungen zu liefern, um die Produktivität von Entwicklern zu verbessern, ist mein Ansporn und Ziel.

Christian Mennerich ist als Entwickler bei der synyx GmbH and Co. KG in Karlsruhe tätig. Er beschäftigt sich hier unter anderem auch mit Datenbanken und NoSQL.

Dennis Kluge ist wissenschaftlicher Mitarbeiter an der Charité Berlin und beschäftigt sich in dem Projekt DataFlex zum Thema personalisierte Medizin und der Aggregation und Analyse von Daten aus sozialen Medien.

Dierk König (JavaOne Rock Star) ist Fellow bei der Canoo Engineering AG in Basel. Er ist Committer in vielen Open-Source Projekten, darunter OpenDolphin, Frege, Groovy, Grails, GPars und GroovyFX. Er liebt einfache Lösungen und sauberes Engineering. Er ist Autor des Bestsellers "Groovy in Action".

Dirk Ehms besitzt mehr als 20 Jahre Erfahrung im Bereich Softwareentwicklung. Er ist spezialisiert auf den Entwurf und die Implementierung von Java-Enterprise Softwaresystemen. Als Software-Architekt von GameDuell widmet er sich der Erweiterung und Optimierung der modularen Spieleplattform auf Basis von JEE sowie zugehöriger agiler Entwicklungsprozesse wie Continuous Delivery und testzentrierten Ansätzen.

Dirk Mahler ist Senior-Consultant bei der buschmais GbR, einem Beratungshaus mit Sitz in Dresden. Der Schwerpunkt seiner mehr als 10-jährigen Tätigkeit liegt im Bereich Architekturen für Java-Applikationen im Unternehmensumfeld. Den Fokus setzt er dabei auf Erarbeitung und Umsetzung ausgewogener Lösungen im Spannungsfeld zwischen Pragmatismus, Innovation und Nachhaltigkeit. Vor diesem Hintergrund engagiert er sich für die Themen Softwareanalysen und Qualitätssicherung auf der Basis des Open-Source-Projektes jQAssistant.

Dirk Weil ist seit 1998 als Berater im Bereich Java tätig. Als Geschäftsführer der GEDOPLAN GmbH in Bielefeld ist er für die Konzeption und Realisierung von Informationssystemen auf Basis von Java EE verantwortlich. Seine langjährige Erfahrung in der Entwicklung anspruchsvoller Unternehmenslösungen machen ihn zu einem kompetenten Ansprechpartner und anerkannten Experten auf dem Gebiet Java EE. Er ist Fachbuch-Autor, schreibt Artikel für Fachmagazine, hält Vorträge und leitet Seminare zu Java EE.

Eberhard Wolff arbeitet seit mehr als fünfzehn Jahren als Architekt und Berater – oft an der Schnittstelle zwischen Business und Technologie. Er ist Fellow bei der innoQ und Java Champion. Als Autor hat er über hundert Artikeln und Büchern als Sprecher auf internationalen Konferenzen vorgetragen. Sein technologischer Schwerpunkt liegt auf modernen Architekturansätzen – Cloud, Continuous Delivery, DevOps, Microservices oder NoSQL spielen oft eine Rolle.

Falk Sippach hat über 15 Jahre Erfahrung mit Java und ist bei der Mannheimer Firma OIO Orientation in Objects GmbH als Trainer, Software-Entwickler und Projektleiter tätig. Er publiziert regelmäßig in Blogs, Fachartikeln und auf Konferenzen. In seiner Wahlheimat Darmstadt organisiert er mit anderen die örtliche Java User Group.

Frank Pientka arbeitet als Dipl.-Informatiker (TH Karlsruhe) bei der MATERNA GmbH in Dortmund. Er beschäftigt sich seit Jahrzehnten mit OpenSource-Software mit dem Schwerpunkt Web. Als Softwarearchitekt und Mitgründer der iSAQB-Vereinigung liegt ihm mehr Qualität in der Software am Herzen. Deswegen gibt er sein Wissen durch Publikationen, Artikel, Vorträge oder in Projekten weiter. Zum Apache Geronimo Server hat er das einzige deutschsprachige Buch veröffentlicht.

Harm Gnoyke: Ich bin seit fast 10 Jahren in verschiedenen internationalen Java Projekten als Entwickler und Architekt tätig. Aus diesen Projekten kommt auch die Idee und die Erfahrungen für den Vortrag. Seit Mai 2015 bin ich neu bei embarc und beschäftige mich hier mit dem Schwerpunkt Software Qualität und dem Zusammenhang mit Software Architektur.

Henning Schwentner arbeitet seit 2005 für die WPS als Berater und Software-Architekt vor allem in agilen Projekten. Dort beschäftigt er sich mit Architektur und Qualitätssicherung von Java- und C#-Systemen.

Holger Kraus ist bei der innoQ Deutschland GmbH als Senior Consultant tätig. Er verfügt über mehrjährige Erfahrung mit dem Entwurf und der Entwicklung großer IT-Systeme in unterschiedlichen Branchen. Zur Zeit beschäftigt er sich primär mit der Architektur und Realisierung verteilter Webanwendungen im Java-Enterprise-Umfeld.

Isabel Drost-Fromm is member of the Apache Software Foundation, co-founder of Apache Mahout and mentored several incubating projects. Interested in all things search and text mining with a decent machine learning background she is working for Elasticsearch as Software developer. True to the nature of people living in Berlin she loves having friends fly in for a brief visit - as a result she co-founded and is still one of the creative heads behind Berlin Buzzwords, a tech conference on all things search, scale and storage. Beyond and above all that Isabel is mummy of a little geekling since April 2014.

Jan Hartung weiß aus Erfahrung, dass Themen wie automatisierte Tests und agile Prozesse oft über den Projekt-Erfolg entscheiden. Er ist einer der Organisatoren der Softwerkskammer Berlin (Software Craftsmanship Community) und hat zahlreiche Konferenzen, Meetups und Workshops besucht, organisiert und/oder geleitet - oft zu Themen wie Clean Code, TDD, Microservices oder REST.

Dr. Jeremias Rößler ist Software Ingenieur und Experte für die Erstellung und Pflege großer, komplexer Softwaresysteme. Er besitzt über acht Jahre Berufserfahrung in der Software-Entwicklung. 2013 hat er am Lehrstuhl für Softwaretechnik an der Universität des Saarlandes promoviert. Er ist Gründer von ReTest, einem IT-Dienstleistungsunternehmen das Software programmunterstützt testet.

Jochen Mader gehört zur Nerd-Herde von codecentric wo er sich aktuell vor allem mit reaktiver Middleware beschäftigt. Den Rest seiner Zeit versucht er Familie, Metal und Brettspiele unter einen Hut zu bekommen.

Josep Prat is HTML5 Game Architect and Java Lead Developer at GameDuell. The graduated computer science engineer from University of Catalonia specializes in frontend development based on JEE and is backend developer of several Facebook games. Besides that he is the responsible software engineer for the backend, frontend and game engine of the GameDuell community platform www.gameduell.com that hosts around 65 web games. Before Josep joined GameDuell he was software developer and analyst at Ancert, a service provider for certified document solutions, and worked as senior java developer with the IT service company Aventia. In his free time, he loves to try out new technologies.

Joshy Cyriac ist ein professioneller Software-Entwickler mit über 10 Jahren Berufserfahrung. Früher im Java/J2EE Umfeld tätig, ist er mittlerweile im NodeJS/JavaScript Umfeld unterwegs.

Jörg Müller ist Manager bei der Hypoport AG. Dort entwickelt er mit seinem Team an EUROPACE, dem Marktplatz für Finanzierungsprodukte. Er arbeitet seit mehr als 15 Jahren in verschiedenen Rollen in der IT-Beratung und Softwareentwicklung. Aktuell interessiert er sich besonders für neue Vorgehensweisen in Softwareentwicklung und -betrieb. Seine Ideen teilt er gerne bei verschiedenen Konferenzen und User Groups.

Karl-Heinz Marbaise:Softwareentwickler, Build- und Konfigurationsmanager im Bereich Java, JEE, Trainer (Maven, Git, Jenkins, Subversion, Nexus), Apache Maven PMC Mitglied, MojoHaus Committer

Katja Arrasz-Schepanski ist Marketing- und Kommunikationsmanagerin bei der synyx GmbH and Co. KG in Karlsruhe. Sie ist für die Organisation der Devoxx4Kids in Deutschland zuständig.

Lars Röwekamp, Gründer des IT-Beratungs- und Entwicklungsunternehmens open knowledge GmbH, beschäftigt sich im Rahmen seiner Tätigkeit als „CIO New Technologies“ mit der eingehenden Analyse und Bewertung neuer Software- und Technologietrends. Ein besonderer Schwerpunkt seiner Arbeit liegt derzeit in den Bereichen Enterprise und Mobile Computing, wobei neben Design- und Architekturfragen insbesondere die Real-Life-Aspekte im Fokus seiner Betrachtung stehen. Lars Röwekamp, Autor mehrerer Fachartikel und -bücher, beschäftigt sich seit der Geburtsstunde von Java mit dieser Programmiersprache, wobei er einen Großteil seiner praktischen Erfahrungen im Rahmen großer internationaler Projekte sammeln konnte.

Leon Rosenberg widmet sich als Softwarearchitekt seit über zehn Jahren der Entwicklung von hochskalierenden Portalen, darunter Friendscout24, Parship oder Allyouneed. Darüber hinaus engagiert er sich bei Opensource Projekten im Bereich der Verteilung und Application Management und veröffentlicht regelmäßig Fachartikel zu diesen Themen.

Marcos Placona is a developer evangelist at Twilio, a company founded to disrupt telecommunications. He spends most of his time working with Java and .Net open source projects while equipping and inspiring developers to build killer applications. He’s also a great API enthusiast and believes they bring peace to the Software Engineering world.

Markus Decke: Software Entwickler aus Leidenschaft und interessiert an neuen Praktiken und Methoden um die Software Entwicklung weniger anstrengend und merhdeutig zu machen.

Mit dem Hintergrund als Umweltinformatiker hat Markus Müller seinen beruflichen Interessensschwerpunkt auf Optimierungsverfahren gesetzt. Auf der technischen Seite beschäftigt er sich aktuell mit der Integration von OptaPlanner in Java EE basierten Anwendungen.

Martin Klose ist Mitgründer der Software Craftsmanship Community Berlin und hat unzählige Workshops im Zeichen von Testing, Codequalität und Agilität durchgeführt. Sauberer und getesteter Code lässt ihn nachts besser schlafen. Martin ist einer der erfahrensten Coderetreat-Facilitatoren und gehört zu dem Organisationsteam des Global Day of Coderetreat, an dem mehrere Tausend Entwickler weltweit teilnehmen. Als klose brother hilft Martin passende Lösungen in agilen Projekten zu finden. Er unterstützt Teams, sowohl auf technischer als auch auf methodischer Ebene, dabei bessere Software besser zu liefern.

Michael Kotten arbeitet seit 2006 bei der open knowledge GmbH und ist seitdem als Enterprise Java Developer mit der Umsetzung von verschiedensten JavaEE Projekten vertraut gewesen. In letzter Zeit beschäftigt er sich zunehmend mit den Möglichkeiten, JavaEE Anwendungen sinnvoll zu testen.

Michael Vitz ist Consultant bei der innoQ Deutschland GmbH und verfügt über mehrjährige Erfahrung in der Entwicklung und im Betrieb von JVM-basierten Systemen. Zur Zeit beschäftigt er sich vor allem mit den Themen DevOps, Continuous Delivery, Cloud-Architekturen, BigData und Clojure

Monica Sarbu is the creator of the Packetbeat open source project, which is part of Elastic now. She previously worked as a core developer for IPTEGO, a startup from Berlin offering a complete monitoring and troubleshooting solution for VoIP networks. The product was sold worldwide and it is currently used by big players in the Telecom space.

Moritz Grauel ist freiberuflicher Software Entwickler und Trainer. Seine Schwerpunkte liegen im Bereich der JVM basierten Webentwicklung. Technologischer Fortschritt und erstklassige User Experience liegen dabei immer in seinem Fokus.

Nicolas Byl studierte Medizinische Informatik an der Hochschule Heilbronn und Universität Heidelberg. Während des Studiums sammelte er erste Erfahrungen im Umfeld von Java-basierten Webportalen. Mittlerweile beschäftigt er sich für die codecentric AG als Senior Consultant mit Themen rund um Build Pipelines und Skalierung von Applikationen.

Nicole Charlier ist User Experience Engineer und leitet das Competence Center für User Experience bei der akquinet AG in Berlin. Sie ist als Beraterin tätig und leitet Inhouse Usability Projekte. Ein weiterer Schwerpunkt ihrer Arbeit ist die Integration von UX-Prozessen in den Softwareentwicklungsprozess. Sie ist Mitglied der German UPA.

Niko Köbler ist freiberuflicher Software-Architekt, Developer and Trainer für Java and JavaScript (Enterprise) Lösungen, Integrationen und Webdevelopment. Er ist Co-Lead der JUG Darmstadt, schreibt Artikel für Fachmagazine und ist regelmäßig als Sprecher auf internationalen Fachkonferenzen anzutreffen.

Oliver Fischer arbeitet als Senior Software Engineer bei der E-Post Development GmbH in Berlin und ist Committer bei der Apache Software Foundation. Regelmäßig publiziert er vorrangig zu Java-relevanten Themen für verschiedene Zeitschriften und Online-Magazine. Seine Interessensschwerpunkte liegen auf innovativen Systemen und Ideen, am liebsten in Java, aber auch mit zunehmenden Interesse an DevOps-bezogenen Themen. Zudem leitet Oliver die Java Usergroup Berlin-Brandenburg und wirkt an der Organisation verschiedener Konferenzen mit.

Oliver Wehrens arbeitet als Senior Architekt bei der E-Post Development GmbH. Dort entwickelt er die nächste Generation der E-Post Services. Er ist an allem interessiert, um Software schneller auszuliefern, die Architektur zu vereinfachen sowie die Entwicklung einfacher und testbarer zu machen.

Philipp Kumar ist Leiter des Competence Center für Client Platforms bei der akquinet AG in Berlin. Seine Schwerpunkte liegen in der Anforderungsanalyse mobiler Systeme, auf Client-Anwendungen mit dem Betriebssystem Android und auf der Integration mobiler Lösungen in Unternehmensinfrastrukturen.

Apart on working on the Gradle core, René Groeschke supports teams all over the world to deliver better software faster by giving in depth Gradle classes and providing remote and onsite support on implementing software automation, continuous delivery and continuous integration patterns. Understanding software development as a craftsmanship, he loves getting out of his comfort zone, learn about new tools, technologies and techniques. From time to time he’s involved in other open source projects like the Griffon or he’s talking at different local usergroups and internatinal conferences. Earlier he shared his passion and experience with bachelor students lecturing agile methodologies.

Sebastian Hagedorn: Seit 2011 Softwareentwickler im Projekt verinice bei der Firma SerNet. Insbesondere beschäftige ich mich mit der Weiterentwicklung, Betreuung und Implementierung hinsichtlich der Einbindung des BIRT-Frameworks in das Projekt. Außerdem gehört die stetige Weiterentwicklung des Projekts zu meinem Alltag, so zuletzt die Einbindung von Elasticsearch.

Sebastian Lohmeier: combined studies of cognitive linguistics and the psychology of programming to spice up his Master of Informatics that lead to an updated version of anaphors in Java.

Sebastian Menski ist Core Developer bei Camunda. Hauptsächlich entwickle ich die Java-Plattform unserer BPM-Suite. Aber ich interessiere mich auch für allgemeine Infrastruktur und Netzwerkthemen. Derzeit arbeite ich am Wiederaufbau unseres continuous integration environment basierend auf Docker.

Stefan Armbruster ist als Presales Engineer für den europäischen Raum bei Neo Technology tätig und arbeitet seit über sechs Jahren mit Neo4j. Zuvor war er knapp fünfzehn Jahre lang freiberuflicher Consultant im Bereich Web Applications (insbesondere Java und Grails). Neben der Entwicklertätigkeit im Java-Umfeld setzt er Linux seit den Tagen des 1.0-Kernels ein. Stefan Armbruster ist studierter Diplom-Physiker. Seine Freizeit verbringt er unter anderem als Mitglied der freiwilligen Feuerwehr.

Stefan Hildebrandt ist als freier Softwareentwickler und Berater seit fast 10 Jahren in größeren Projekten bei Kunden aus unterschiedlichen Branchen tätig. Seine Schwerpunkte sind Web- und Backendentwicklung mit Java und Javascript, sowie Werkzeuge zur Test- und Deploymentautomatisierung. Sein Interesse gilt vermehrt der ganzheitlichen Betrachtung des Softwareentwicklunsprozesses und der Potentiale, die außerhalb der eigentlichen Entwicklung schlummern.

Von der Bayer AG über IBM und oose zu embarc. Stefan Zörner blickt auf zwanzig Jahre IT-Erfahrung zurück und stets gespannt nach vorn. Er unterstützt in Architektur- und Umsetzungsfragen mit dem Ziel, gute Architekturansätze wirksam in der Implementierung zu verankern. Sein Wissen und seine Erfahrung teilt er regelmäßig in Vorträgen, Artikeln und Workshops. Stefan ist aktives Board-Mitglied im iSAQB und Autor des Buchs „Softwarearchitekturen dokumentieren und kommunizieren“ (Carl Hanser Verlag, 2. Auflage 2015).

Sven Ruppert has been coding Java since 1996. In his free time he regularly contributes to German IT periodicals, including Java Magazin, Eclipse Magazin, and Entwickler Magazin, as well as tech portals such as JAXenter.de

Thilo Frotscher arbeitet seit über fünfzehn Jahren als freiberuflicher Softwarearchitekt und Trainer. Als Experte für Java EE und Systemintegration unterstützt er seine Kunden überwiegend durch Projektmitarbeit oder Durchführung von Schulungen. Thilo ist (Co-) Autor mehrerer Bücher in den Bereichen Java EE, (Web) Services und SOA und hat zahlreiche Artikel für diverse Fachzeitschriften veröffentlicht. Darüber hinaus wirkt er auch als Fachgutachter für IT-Publikationen und spricht regelmäßig auf internationalen Fachkonferenzen, auf Schulungsveranstaltungen oder bei Java User Groups.

Timmo Freudl-Gierke studierte an der TU-Berlin technische Informatik mit Schwerpunkt Softwaretechnik. Er wechselte nach drei Jahren in der Forschung in die Finanzbranche und entwickelte dort als Software Entwickler und Architekt zahlreiche Enterprise Anwendungen im Java Umfeld - am liebsten mit leichtgewichtigen Tools und Frameworks welche agile Vorgehensmodelle unterstützen.

Dr. Torsten Fink ist Geschäftsführer der Berliner Einheit der akquinet. Neben der Leitung von Java EE-Projekten führt er Architektur- und Technologieberatungen durch

Uwe Friedrichsen ist ein langjähriger Reisender in der IT-Welt. Als Fellow der codecentric AG ist er stets auf der Suche nach innovativen Ideen und Konzepten. Seine aktuellen Schwerpunktthemen sind Skalierbarkeit, Resilience und die IT von (über)morgen. Er teilt und diskutiert seine Ideen regelmäßig auf Konferenzen, als Autor von Artikeln, Blog Posts, Tweets und natürlich gerne auch im direkten Gespräch.



















