Für mich und viele andere ist JUnit die vielleicht wichtigste Bibliothek im Java-Universum. (Fast) jedes Projekt nutzt sie, alle IDEs integrieren sie, ebenso die Build-Tools. Aber JUnit hat eine lange Geschichte, und mit Java 8 sieht JUnit 4 ein wenig altbacken aus.
Im August 2015 starteten deswegen die Entwickler von JUnit eine Crowdfounding-Kampagne, um die Entwicklung von JUnit Lambda zu unterstützen - einer neuen JUnit-Version, die basierend auf den Sprachfeatures von Java 8 flexiblerer Möglichkeiten bieten wird, Tests zu definieren und gleichzeitig die APIs, die von Tool-Herstellern genutzt werden, aktualisieren wird.
In diesem Vortrag wollen wir einen Blick auf JUnit Lambda werfen: Wo kommt es her, wo steht es aktuell und wohin geht die Reise. Je nach Entwicklungsstand wird der Schwerpunkt auf Problemen von JUnit 4 und Vorbildern für JUnit Lambda liegen oder auf den neuen Features, die JUnit Lambda liefert.
by Mark Paluch
Contexts and Dependency Injection has become an integral part of Java to leverage dependency injection and bean management aside of EJB. The current CDI 1.2 is widely used amongst Java Enterprise 7 applications. The Expert Group is working since Fall 2014 on the next version of the specification with the goal to present the final CDI 2.0 spec in Q2/2016, which will be part of Java Enterprise 8.
You will learn about some of the upcoming highlights such as asynchronous events or how to boot CDI with Java SE. These features are already part of the draft release. You will get an overview of the changes, the Java 8 support, and how to apply the new features in your application. This is the right session for you if you are already a CDI user or want to become one and those that are interested in the progress of JSR 365 to build first-citizen CDI applications.
Seit dem initialen Release 2002 ist das Spring Framework zum De-facto-Standard für das Entwickeln von Java-Enterprise-Anwendungen geworden. Sei dem haben sich jedoch die Herausforderungen für Entwickler und deren Erwartungen an Applikations-Frameworks signifikant verändert.
Der Vortrag führt auf eine Tour durch die Eckpfeiler der Applikationsentwicklung mit dem heutigen Spring: neue Features aus Spring 4.1 und 4.2, Spring Boot als zentrales Werkzeug zum vereinfachten Zugriff auf den Stac, sowie einige Ãkosystemprojekte.
by Harm Gnoyke
"Und dann war da noch der Mann, der beim Durchqueren eines im Durchschnitt nur 15 cm tiefen Flusses ertrank." (W. Gates) - Statistiken können einen leicht in die Irre führen. So ist es auch mit den Ergebnissen aus Code-Analysen. Was nützt mir zum Beispiel eine durchschnittlich hohe Testabdeckung, wenn mein kritischstes Modul wegen hoher Komplexität ungetestet bleibt?
Dieser Vortrag gibt eine fundierte Einführung in die Welt der quantitativen Analysen. Welche Aspekte einer Java-Software lassen sich überhaupt durch Messen bewerten? Welche Tools gibt es für welchen Zweck? Sowohl freie als auch kommerzielle Lösungen werden dabei beleuchtet.
Ich zeige bewährte Prinzipien, die Projektteams weiterhelfen, wenn es um die Vorbereitung und Begleitung konkreter VerbesserungsmaÃnahmen geht. Dazu werden insbesondere bekannte Metriken sinnvoll in Zusammenhang gebracht, wie im Beispiel oben zu Testüberdeckung und Komplexität. Das Ergebnis ist ein wirkungsvoller Umgang mit Code-Analysen, ohne den Tools ein tolles System nur vorzugaukeln!
Juice Shop* (http://bkimminich.github.io/juic...) is an intentionally insecure Web app suitable for pentesting and security awareness trainings written in Node.js, Express and AngularJS. It is the first application written entirely in JavaScript listed in the OWASP Directory. It also seems to be the first broken Web app that uses the currently popular architecture of an SPA/RIA frontend with a RESTful backend.
In this talk I will show why and how the app was created followed by a demo how to hack it. Prepare for some nasty XSS, SQLI and CSRF flaws bundled with some seriously broken access control and business logic - all in one single application!
(*Translating "dump" or "useless outfit" into German yields "Saftladen" which can be reverse-translated word by word into "juice shop". Hence the project name. That the initials "JS" match with those of "JavaScript" was purely coincidental!)
by Markus KARG, Hendrik Ebbers, Anton Epple, Bennet Schulz and Gerrit Grunwald
Diskutiere mit Experten über JavaFX
Die Beliebtheit von JavaFX steigt zunehmend, auch in groÃen Firmen. Dadurch stellt sich die Frage: Ist die Technologie bereits reif für den Business-Alltag? In einer moderierten Diskussion mit allen Teilnehmern stehen Experten Rede und Antwort, basierend auf ihren eigenen Erfahrungen.
The Java Message Service Specification (JMS) got a major overhaul in Java EE 7 as JMS 2.0. In JSR 368 (JMS 2.1) this work continues.
This session will present the current status of the work with this JSR and how you as a community member may contribute. And, of course, there will also be code samples of new and improved features.
by Mike Sperber
Objektorientierte Softwarearchitekturen sind oft unnötig fragil, weil gekapselter Zustand zu versteckten Abhängigkeiten führt. In der realen Welt aber sind Abhängigkeiten zahlreich und nebenläufig - das passt nicht zum OO-Architekturmodell. Die funktionale Programmierung macht die Abhängigkeiten als Datenfluss explizit. Das ist leichter zu konstruieren, verstehen und beherrschen. Anwendbar ist funktionale Programmierung auch in Java, am besten aber funktioniert sie in funktionalen Sprachen wie Scala oder Clojure.
Der Vortrag ist eine Einführung in FP-Architekturmodelle und zeigt, wie sie sich in industriellen Projekten auswirken.
by Kai Tödter
RESTful Web Services sind schon seit einiger Zeit in aller Munde und sehr beliebt. Viele der bekannten öffentlichen Web-APIs behaupten von sich, RESTful zu sein. Die meisten sind es allerdings nicht wirklich, unter anderem, da sie ein wichtiges Element von REST nicht erfüllen: Hypermedia as the Engine of Application State (HATEOAS). Diese Session gibt einen Ãberblick über das Thema und zeigt an vielen konkreten Beispielen, warum RESTful Hypermedia APIs sinnvoll und sehr nützlich sind. Dabei geht Kai sowohl auf verschiedene Repräsentationen wie HAL und Siren ein als auch auf deren Einbindung in existierende Infrastrukturen wie Spring (Boot/Data/HATEOAS) oder Jersey.
In den letzten Jahren ist mit Sprachen wie Clojure und Scala die funktionale Programmierung auf der JVM salonfähig geworden. Aber haben sie auch in der Spieleentwicklung eine Bedeutung? Sind sie für eine reibungslose Entwicklung überhaupt geeignet? Wie verhält es sich mit der Performance? Für welche Spieletypen sind sie geeignet? Dieser Vortrag wird diese und weitere Fragen beantworten und zeigen, warum Clojure wie gemacht für die Entwicklung von Spielen ist.
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:
* was hinter dem Schlachtruf "Codes like a class, works like an int" steckt
* warum value types gleichzeitig effizienteren wie auch besser lesbaren Code ermöglichen
* wie der Stand des zugehörigen JEP 169 ist
* den Unterschied zwischen Reference Types und Value Types
* wie Value Types in anderen Sprachen (insbesondere C# und Swift) schon umgesetzt sind
* was Vererbung für Value Types bedeutet * was die Vorteile von Speicherung auf dem Stack versus Speicherung auf dem Heap sind
Der Vortrag wird im "Lessig-Style" gehalten werden. (https://www.youtube.com/watch?v=...)
MVC 1.0, as specified by JSR 371, is targeted for the upcoming Java EE 8 release. In this session I will go through the fundamentals of this specification and explain the core concepts. The session will include lots of code samples and tips to where to get started using this awesome technology.
Im Zeitalter von Microservices und Applikationen, die sich aus vielen verteilten Komponenten zusammensetzen und CSRF- und CORS-Aspekte abdecken müssen, sind Session-Cookies nicht mehr praktikabel. Token versprechen die heilvolle Alternative zu sein und mit JWT (JSON Web Token) liegt der Entwurf für einen Standard vor, der die Verwendung von Tokens innerhalb einer Applikationslandschaft vereinfachen soll. Der Talk zeigt, ob Tokens ihr versprechen halten und Webapplikationen auch ohne Kekse ein Genuss bleiben.
Was wäre, wenn ein Navigationssystem Routeninformationen direkt in das Sichtfeld projizieren könnte oder Gesichtserkennung bei der Identifizierung von Gesichtern hilft? Durch die rasante Weiterentwicklung der Virtual-Reality-Brillen in den letzten Jahren kann diese Vision bereits bald Realität werden.
Das Maker-Team "Red Pill" der TNG Technology Consulting GmbH hat mit Hilfe der VR-Brille "Oculus Rift DK2" Anwendungen entwickelt, die die Realität um sinnvolle Zusatzinformationen erweitern. Im Gegensatz zum klassischen Anwendungsfall solcher Displays wird der Nutzer nicht in virtuelle Welten versetzt, sondern behält sein normales Sichtfeld bei. Dies geschieht durch die Erweiterung der VR-Brille mit zwei zusätzlichen Kameras. Das dadurch gewonnene stereoskopische Bild kann zum Beispiel um Daten zur Gesichtserkennung und -identifikation angereichert werden.
In diesem Vortrag werden die TNG-Consultants in die Welt der Augmented Reality einführen. Teilnehmer erhalten einen Einblick in den gesamten Programmablauf, vom Auslesen der Bilder bis hin zu ihrer Darstellung auf dem VR-Display. Dabei werden sie auch die Historie dieser gar nicht so neuen Technologie beleuchten und weitere Anwendungsgebiete aufzeigen.
by Tammo van Lessen and Alex Heusingfeld
Als Berater sehen wir oft beide Seiten der Medaille: Auf der einen Seite arbeiten wir mit Leading-Edge-Technologien, die meist gerade erst marktreif sind. Auf der anderen Seite stehen Kunden mit sehr konservativen Betriebsabteilungen, Legacy-Systemen und strikten Reglementierungen zur Datensicherheit.
In dieser Session möchten wir von den Erfahrungen berichten, die wir im Beratungsalltag sammeln durften. Was bedeutet eigentlich âpets vs. cattleâ? Warum soll sich ein Entwickler mit den Business-Use-Cases auseinandersetzen? Warum können IT-Projekte auf Grund der Unternehmensorganisationen scheitern, und was hat eine DevOps-Mentalität mit Perspektivenwechsel zu tun? Wir zeigen Wege, wie wir eine Legacy-Anwendung iterativ modernisiert und in mehrere, leichter wartbare Self-Contained-Systeme aufgeteilt haben. Dabei werden nicht nur die unterschiedlichen Ebenen von Architekturentscheidungen herausgestellt, sondern auch die Auswirkungen auf die Organisationsstruktur und kritische Punkte auf dem Weg verdeutlicht.
Anwendungen benötigen Konfigurationsdaten: für die Adressen der Nachbarsysteme, welche Funktionen aktiv sind. Wie wäre es, wenn Ãnderungen zur Laufzeit möglich sind: Ohne Wartungsfenster, für alle Knoten im Cluster auf einmal, neue Funktionen ohne Redeployment aktiviert werden können?
Ist Konfiguration zur Laufzeit einmal eingebaut, macht es das Leben von Fachabteilung, Entwicklern, Betrieb und Anwendern einfacher. Es werden Beispiele auf Basis der Open-Source-Projekten Togglz, Netflix Archaius und CoreOS etcd vorgestellt.
Die Beispiele sind für klassische Enterprise-Architekturen ebenso wie für moderne Cloud- und Continuous-Delivery-Umgebungen geeignet.
At a major telco company in Belgium we have designed and implemented a cutting-edge architecture using microservices and hypermedia (REST level 3/hateoas) for the entire customer- and business-facing Web portfolio.
Throughout this session you will learn what the microservices hype is all about, including its benefits and pitfalls based on our experiences of running microservices (including the Netflix OSS) in production at a major company in Belgium.
To manage hundreds of microservices you need to apply certain patterns such as circuit breakers, gateways, service registries and so on. You will learn how these patterns work, how they are applied through the Netflix stack and how easy it is to use them in your architecture through code examples and demos.
The contracts between these microservices should be well defined and loosely coupled. Using hypermedia as the engine of application state (hateoas), we can benefit from independent evolution and decoupled implementation. How we can implement these using Spring Hateoas, correctly document using Spring REST Docs, integrate with the HAL browser and version using JsonViews will become clear in the second part of this session.
Are you a Java developer practicing automation? Do you write Bash, BAT, Python, Ruby, Perl, Lua scripts for system administration and scripting purposes? Stop! You don't have too. Since JVM ecosystem has a perfect answer - Groovy. With the release of version 2.4, Groovy is a mature and stable language that can be employed to deploy small scripts or to build large, mission-critical applications.
This workshop gives an introduction into ElasticSearch, which can be used as a search engine for your application's data as well as it can easily be a primary data source for your application due to its extremely good performance characteristics. One important use case, that is also show-cased in the second part of the workshop, is a combination of ElasticSearch, Logstash and Kibana - ELK stack - that can help making your application log aggregation and analysis a breeze.