Maßgeschneiderte Software für besondere Anforderungen

Professionelle Software-Entwicklung mit Java, Scala, Ruby, JavaScript, Clojure und Erlang

Sie suchen eine maßgeschneiderte Softwarelösung, die auf die indivuellen Anforderungen Ihres Business zugeschnitten ist? Dann sind Sie bei uns richtig. Wir erstellen für Sie Individualsoftware, die Ihnen den entscheidenden Wettbewerbsvorteil verschafft. Wir wählen, unabhängig von Hersteller- oder Produktbindungen, die für das Projekt am besten geeignete Technologie aus, um eine nachhaltigen Lösung zu entwickeln. Dafür greifen wir auf langjährige Erfahrung mit Java, Ruby, Scala, Clojure und Erlang zurück. Pragmatisches, agiles Vorgehen mit schnellen Resultaten und kurzen Feedbackzyklen ist für uns bei der Entwicklung selbstverständlich.

Dabei haben Sie die Wahl: Wir verstärken Ihr Team und bringen so unsere Erfahrung und unser Praxis-Know-how direkt in Ihrem Unternehmen ein. So profitieren Sie nicht nur von der Unterstützung bei der Entwicklung, sondern auch vom direkten Wissenstransfer. Alternativ können Sie uns mit der kompletten Projektverantwortung beauftragen, und wir liefern Ihnen eine vollständige Anwendung. Wofür Sie sich auch entscheiden – wir stellen sicher, dass Sie die fertige Anwendung eigenständig weiterentwickeln und betreiben können.

  • Schnelleinstieg in Go

    Vortrag Christoph Iserlohn, Daniel Bornkessel parallel 2017

    Obwohl noch recht jung, hat sich Go in der Softwareentwicklung fest etabliert. Viele kritische Systeme werden heutzutage in Go implementiert – Docker ist hier einer der prominenten Vertreter. Go macht vieles anders als gewohnt. Mit channels und go-routines besitzt Go moderne Nebenläufigkeitskonstrukte, die in den altbewährten Programmiersprachen so nicht zu finden sind. Auf der anderen Seite verzichtet Go auf einige Dinge, die mittlerweile als selbstverständlich angesehen werden wie Generics oder Exceptions.

    Anhand von Beispielen und praktischen Übungen vermittelt dieser Workshop die nötigen Kenntnisse, um kleinere eigene Programme in Go zu schreiben und channels und go-routines zu nutzen.

    Teilnehmer sollten folgende Soft- und Hardware mitbringen:

    • einen Laptop, auf dem Go installiert und nutzbar ist: siehe https://golang.org/doc/install für eine Anleitung
    • eine funktionierende Kommandozeile (bash, sh, PowerShell)
    • eine funktionierende Git-Installation
    • einen Editor oder eine IDE zum Programmieren

    Skills

    • Gute Kenntnisse in einer “Mainstream”-Programmiersprache wie Java, C# und C/C++.
    • Grundkenntnisse über Nebenläufigkeitskonzepte in Programmiersprachen: Prozesse, Threads, Co-Routinen usw.
    • Für die praktischen Übungen ein Notebook mit vorinstalliertem, aktuellem Go und Git sowie ein Texteditor und eine Shell.

    Lernziele

    1. kleinere Programme in Go schreiben können,
    2. die wesentlichen Merkmale von Go kennen,
    3. die Unterschiede von Go gegenüber anderen Programmiersprachen wie Java, C# usw. verstehen, vor allem in den Bereichen Nebenläufigkeit und Parallelität und
    4. besser einschätzen können, ob Go für ihr ihre Projekte geeignet ist.
    Mehr lesen
  • Testing with mutants

    Vortrag Jan Stępień :clojureD 2017

    Property-based testing is mainstream now (there, I said it). The testing approach popularised by test.check enjoys wide adoption in the Clojure community. This talk is dedicated to another randomised testing technique. Mutation testing introduces subtle bugs to source code of our projects and checks that our tests catch those synthetic problems. Clojure — a homoiconic language with dynamic code reloading — should offer us an excellent foundation for building a mutation testing library. But there’s not a single one out there. Why? Let’s try to answer this question together.

    Mehr lesen
  • The Hidden Nature of Data

    Vortrag Martin Kühl BOB 2017

    Encapsulation is a pillar of object-oriented programming, but how important is it in the context of functional programming? Is it worth clinging to, or should we stay away? This talk will examine the tradeoffs of encapsulating internal representations versus exposing the “nature” of our data.

    Programming with immutable values and algebraic data types usually makes hiding fields behind accessors unnecessary. On the other hand, hiding functions and types is a crucial technique control our API, encouraging correct usage and affording the flexibility to change it.

    In this session we will explore constraints that encourage encapsulation, discuss how it affects our types, their algebras, and their algorithmic properties, and learn about alternatives and their benefits and drawbacks.

    Mehr lesen
  • Testing with mutants

    Vortrag Jan Stępień lambda Days 2017

    Property-based testing is mainstream now in a number of functional languages (there, I’ve said it). This talk is dedicated to another randomised testing technique. Unlike property-based testing, which validates correctness of implementation of our programmes, mutation testing audits our tests suites. It introduces subtle faults to source code of our projects and verifies that our tests catch those synthetic problems. Clojure, a homoiconic language with dynamic code reloading, should offer us an excellent foundation for building a mutation testing library. But there’s not a single one out there. Why? Let’s try to answer this question together.

    Mehr lesen
  • Clojure-Web-Applikationen für Beginner

    Vortrag Michael Vitz OOP 2017

    Clojure ist eine JVM-Sprache, die das Unmögliche möglich macht: ein tatsächlich in der Praxis von normalsterblichen Entwicklern einsetzbares Lisp.

    Neben den Grundlagen von Clojure werden Sie in dieser Session auch lernen, wie man hiermit Web-Anwendungen umsetzen kann. Wenn Sie sich hierbei nicht von den Lisp-typischen Klammern abschrecken lassen, werden Sie schnell sehen, dass der Einsatz einer rein funktionalen Programmiersprache sehr gut zum statuslosen Ansatz von HTTP passt.

    Zielpublikum: Entwickler Voraussetzungen: Grundlagen der funktionalen Programmierung und Webentwicklung Schwierigkeitsgrad: Anfänger

    Mehr lesen
  • Caching with Spring - Advanced Topics and Best Practices

    Vortrag Michael Plöd Spring Community Meetup Munich January 2017

    Caching is relevant for a wide range of business applications and there is a huge variety of products in the market, ranging from easy to adopt local heap based caches to powerful distributed data grids. This talk addresses advanced usage of Spring’s caching abstractions such as integrating a cache provider that is not integrated in the default Spring Package.

    In addition, I will also give an overview of the JCache specification and its adoption in the Spring ecosystem. Finally, the presentation will address several best practices for integrating various caching solutions into enterprise grade applications that don’t have the luxury of having „eventual consistency“ as a non-functional requirement.

    Mehr lesen

    Don’t Fear the Implicits

    Vortrag Daniel Westheide Scala Mini Meetup Berlin

    Developers who are new to Scala often shy away from coming into contact with implicits, and by extension, understanding typeclasses. In big organizations that have been adopting Scala at scale, you sometimes even come across hard rules that put a ban on the use of implicits because that language feature is considered to be too advanced and not understood by a lot of developers. On the other hand, implicits and typeclasses are used heavily not only by a lot of the most important Scala frameworks and libraries, but also in the standard library. Given the fact that it is so hard to evade them when writing real world Scala code, I would like to encourage developers adopting Scala to overcome their fear of implicits and instead embrace the typeclass pattern.

    In this talk, as an intermediate Scala developer, you will learn everything you really need to know about typeclasses: What they are good for and how they compare to what you are familiar with from object-oriented languages, when you should and should not use them, how the pattern can be encoded in Scala and how to write your own typeclasses, how to provide instances of typeclasses for your own or existing types, and how to do all of this with minimal boilerplate. Throughout the talk, you will see numerous examples of typeclasses used in the Scala ecosystem and the standard library, and you’ll see that you don’t need to know anything about category theory to benefit from embracing typeclasses.

    Mehr lesen
  • Vault

    Artikel Simon Kölsch

    Eigentlich ist man sich einig, dass durch immer größere und komplexere Netze und Systemlandschaften das Thema “Sicherheit” nicht einfach durch die eine grosse Perimeter-Firewall erledigt ist. Trotzdem fehlt es häufig an Infrastruktur, die dabei unterstützt zum Beispiel mit Zugangsdaten automatisiert und sicher umzugehen. Vault unterstützt hier als “a tool for managing secrets” dieses Problem anzugehen.

    Mehr lesen
  • Wo bist du?

    Artikel Simon Kölsch

    HashiCorp hat mit Consul eine inzwischen fest etablierte Service-Discovery-Lösung geschaffen. Ein Konsul ist ein entsandter Beamter, der in einem fremden Staat die Interessen der eigenen Bevölkerung wahrt und den Handel fördert. Betrachtet man eine Microservice-Landschaft als fremdes Land und die Einwohner als einzelne Services, die sich austauschen, kann man mit etwas Wohlwollen die Namensgebung nachvollziehen. Einen Überblick über Einsatzzweck, Features und Aufbau bietet dieser Artikel.

    Mehr lesen
  • Mutants

    Vortrag Jan Stępień Clojure eXchange 2016 Folien verfügbar

    Property-based testing is mainstream now (there, Jan’s said it). A recurring topic at EuroClojure, the generative approach to testing popularised by test.check enjoys wide adoption in the Clojure community.

    This talk is dedicated to another randomised testing technique. Unlike property-based testing, which inspects our src directory, mutation testing audits contents of the test one. It introduces subtle bugs to source code of our projects and verifies that our test suites catch those synthetic problems. Clojure, a homoiconic language with dynamic code reloading, should offer us an excellent foundation for building a mutation testing library. But there’s not a single one out there. Why? Let’s try to answer this question together.

    Mehr lesen
  • Horden von Zombies

    Artikel Phillip Ghadir

    Kennen Sie das Computer-Spiel „Plants vs. Zombies“? Das Szenario ist einfach: Zombies stürmen auf unser Haus zu. Als Spieler haben wir eigentlich nur eine Chance, der Übermacht zu begegnen: Wir müssen die Verteidigungsmechanismen vorbereiten, die wir im Eifer des Gefechts brauchen werden. Paprikaschoten, Erbsen und Walnüsse werden uns helfen, die Angriffswut der Zombies zu stoppen. In dieser Ausgabe nutze ich die Kulisse des Spiels, um ein paar Eigenschaften von Reactive Extensions vorzustellen.

    Mehr lesen
  • Zwei Jahre nach dem Tod der Java Application Server

    Artikel Eberhard Wolff

    Vor zwei Jahren wurde der Tod der Java Application Server ausgerufen. Zeit also ein Fazit zu ziehen und die Thesen aus dem Artikel einem kritischen Review zu unterziehen.

    Mehr lesen
  • Typeclasses from the ground up

    Vortrag Daniel Westheide Honeypot Tech Meetup: Staying functional with Scala

    When it comes to typeclasses and implicits – the mechanism used for implementing this pattern in Scala – there appears to be a big gulf: They are widely used not only in many popular Scala libraries, but also in the standard library. On the other hand, many Scala developers are not familiar with them or find them too daunting.

    Since it is difficult to evade them when writing real world Scala code, I would like to encourage developers adopting Scala to overcome their fear of implicits and instead embrace the typeclass pattern. At the same time, I want to raise awareness of the problems that can arise when you do so too eagerly.

    In this talk, as an intermediate Scala developer, you will learn typeclasses from the ground up: What they are good for and how they compare to what you are familiar with from object-oriented languages, when you should and should not use them, how the pattern can be encoded in Scala and how to write your own typeclasses, how to provide instances of typeclasses for your own or existing types, and how to do all of this with minimal boilerplate. Throughout the talk, you will see numerous examples of typeclasses used in the Scala ecosystem and the standard library, and you’ll see that you don’t need to know anything about category theory to benefit from embracing type classes.

    Mehr lesen
  • Continuous Architecture Blog: Was ist ein Festpreisprojekt wert?

    Link Eberhard Wolff heise Developer

    Festpreise sind eine wichtige Projektart in der Softwareentwicklung. In diesem Blogpost für heise Developer diskutiert Eberhard Wolff die Frage, ob es aber wirklich sinnvoll ist, sich auf das Preisrisiko zu fokussieren.

  • Einführung in die funktionale Programmierung mit Scala

    Vortrag Christine Koppelt informatica feminale Baden-Württemberg 2016

    Dreitägiger Workshop im Rahmen der informatica feminale Baden-Württemberg, 28.–30.07.2016

    Funktionale Programmierung ermöglicht es, Programme zu schreiben die weniger Quellcode erfordern, weniger fehleranfällig und einfacher für moderne Multi-Core Prozessoren zu parallelisieren sind. Funktionale Programme galten lange Zeit aber auch als ineffizient und schwer verständlich. In den letzten Jahren sind jedoch einige neue praxistaugliche funktionale Sprachen mit effizienten Compilern entstanden - eine der populärsten ist Scala. Scala ist eine funktionale und objektorientierte Programmiersprache auf Basis der JVM (Java Virtual Machine). Dank ausgereifter Frameworks verfügt sie über vielfältige Einsatzmöglichkeiten, beispielsweise in den Bereichen Webentwicklung, Datenanalyse und verteilte Anwendungen, was sie unter anderem bei Twitter, der New York Times und AutoScout24 unter Beweis stellt.

    In diesem Kurs geht es um eine Einführung in grundlegende Konzepte der funktionalen Programmierung am Beispiel der Programmiersprache Scala und die Unterschiede zur imperativen Programmierung. Eine große Rolle dabei spielen Funktionen erster Ordnung, einem zentralen Bestandteil funktionaler Programme. Außerdem beschäftigen wir uns mit dem Typsystem von Scala, Pattern Matching & Case Klassen, Fehlerbehandlung und der Collections API. Der Kurs besteht abwechselnd aus Vortragsblöcken und praktischen Übungsaufgaben.

    Mehr lesen
  • Building Microservices in Clojure

    Vortrag Stefan Tilkov Joy of Coding

    One of the key tenets of the microservice architecture approach is isolation, allowing individual developers or teams to make local decisions. Clojure, a practical Lisp running on top of the JVM, has already done a lot to increase Lisp’s popularity outside of academic circles. Let’s combine the two to address the remaining doubts about its suitability for the real world! This talk will introduce both the architectural concept and the language, and show how you can combine tools from the Clojure and Java ecosystem to build Clojure-based microservices in practice.

    Mehr lesen
  • Don’t Fear the Implicits: Everything You Need to Know About Typeclasses

    Vortrag Daniel Westheide Scala Days Berlin 2016

    Developers who are new to Scala often shy away from coming into contact with implicits, and by extension, understanding typeclasses. In big organizations that have been adopting Scala at scale, you sometimes even come across hard rules that put a ban on the use of implicits because that language feature is considered to be too advanced and not understood by a lot of developers. On the other hand, implicits and typeclasses are used heavily not only by a lot of the most important Scala frameworks and libraries, but also in the standard library. Given the fact that it is so hard to evade them when writing real world Scala code, I would like to encourage developers adopting Scala to overcome their fear of implicits and instead embrace the typeclass pattern.

    In this talk, as an intermediate Scala developer, you will learn everything you really need to know about typeclasses: What they are good for and how they compare to what you are familiar with from object-oriented languages, when you should and should not use them, how the pattern can be encoded in Scala and how to write your own typeclasses, how to provide instances of typeclasses for your own or existing types, and how to do all of this with minimal boilerplate. Throughout the talk, you will see numerous examples of typeclasses used in the Scala ecosystem and the standard library, and you’ll see that you don’t need to know anything about category theory to benefit from embracing typeclasses.

    You can find a video of this talk here.

    Mehr lesen
  • Building reactive applications with the Grails 3 event system

    Vortrag Michael Plöd GR8Conf EU & Gradle Event Folien verfügbar

    Grails 3 introduced a brand new event system which is based on Reactor. This new feature allows developers to build reactive applications with Grails 3. In this talk we will cover the event system in Grails 3 in detail and explain how it can be used for asynchronous and decoupled communication between commands, services, and even plugins. In addition to that, I will also explain the characteristics of reactive applications and show in how far the Grails 3 event system will support you in developing such applications

    Mehr lesen

    Hands On Migration from Grails 2 to 3

    Vortrag Michael Plöd GR8Conf EU & Gradle Event Folien verfügbar

    Grails 3 is a substantial and radical change in the Grails Ecosystem which requires some effort in order to migrate applications from Grails 2 to the newest version. This presentation explains which steps have to be taken and which gotchas exist in the migration process. Apart from the theory we will also migrate an existing application that is productive (http://www.allschools.de) and running with Grails 2 to the newest version of Grails 3. This presentation will feature a few slides and tons of code.

    Mehr lesen
  • Java-Web-Frameworks von innen?

    Artikel Michael Vitz, Phillip Ghadir

    Web-Frameworks für Java gibt es nun bereits seit fast 20 Jahren. Diese nehmen dem Anwendungsentwickler eine Menge Arbeit ab und sorgen dafür, dass dieser sich nicht auf Infrastruktur konzentrieren muss, sondern die Anwendungslogik im Vordergrund steht. Doch was genau tut so ein Web-Framework eigentlich? Dieser Artikel zeigt, was heutige Web-Frameworks leisten und wo diese sich dann doch in Nuancen unterscheiden.

    Mehr lesen
  • When Option is not good enough

    Link Daniel Westheide

    In an article published on his personal blog, Daniel Westheide explains why overloading the semantics of Scala’s Option type can lead to confusion and why introducing custom algebraic data types leads to code that is easier to read, less error-prone and closer to the language of the domain.

  • Workshop: Einführung in JavaScript

    Vortrag Christine Koppelt Münchner Open-Source-Treffen

    Lange Zeit als Sprache für die Erstellung kleiner Web-Skripte belächelt, hat sich JavaScript mittlerweile zu einer Plattform mit einem breiten Einsatzgebiet entwickelt - von modernen Web-Frontends über Backend-Anwendungen bis hin zu Spielentwicklung und zur Erstellung von Programmen für Microcontroller.

    Der Workshop bietet eine grundlegende Einführung in die Programmierung mit JavaScript und vermittelt die Grundlagen, um mit JavaScript komplexe Anwendungen schreiben zu können.

    In Absprache mit den Teilnehmern wird eine Auswahl der folgenden Themen behandelt:

    • Grundlagen der Sprache (Spracheigenschaften, Datentypen, Syntax)
    • Fortgeschrittene Konzepte von JavaScript (Objektorientierung, Funktionale Konstrukte)
    • Modularisierung
    • Versionen & Varianten (EcmaScript 5/6, Transpiler, Engines)
    • Testen & Codeanalyse (mocha.js, JSHint)
    • Buildkripte & Paketmanagement mit npm
    • IDEs und Editoren

    Voraussetzung für die Teilnahme: Grundlegende Programmierkenntnisse und ein eigenes Laptop.

    Mehr lesen
  • Security – Every Developer’s Responsibility

    Vortrag Christoph Iserlohn Heise Developer World 2016 Folien verfügbar

    Fast tagtäglich werden neue Hacks und Datendiebstähle bekannt. Und niemand ist vor ihnen sicher: große Industrieunternehmen, globale Technologiekonzerne, Finanzinstutionen, Behörden; selbst IT-Sicherheitsdienstleister und den deutschen Bundestag hat es schon getroffen. Besorgnis erregend dabei ist, dass oft immer noch erfolgreich Angriffe benutzt werden, gegen die es längst bekannte und einfach zu implementierende Gegenmaßnahmen gibt. Ein Großteil der Sicherheitsprobleme lassen sich dabei auf Fehler im Design und in der Implementierung zurückführen. Lernen Sie in diesem Vortrag relevanten Grundlagen von Security kennen und verstehen Sie, warum gerade Entwickler eine besondere Verantwortung tragen.

    Mehr lesen
  • Nanoservices und Microservices mit Java

    Vortrag Eberhard Wolff JavaLand 2016 Folien verfügbar

    Es geht kleiner als Microservices: Nanoservices gehen zwar technologische Kompromisse ein, haben dafür aber auch einige entscheidende Vorteile gegenüber Microservices. Dieser Vortrag gibt einen Überblick über Microservice-Technologien wie Spring Cloud oder Spring Boot – und Java-Nanoservice-Ansätze wie Java EE, OSGi und Amazon Lambda.

    Mehr lesen
  • Codepancake Spotlight 51: Introducing senior consultant Silvia

    Link Silvia Schreier codepancake.com

    The website CodePancake is a platform for anyone interested in learning how to code and a magazine for and about women in tech. Last week, it featured an interview with our colleague Silvia Schreier about her career in IT.

  • Clojure-Web-Applikationen für Beginner

    Vortrag Michael Vitz BOB Conference 2016 Folien verfügbar

    Clojure ist eine JVM-Sprache, die das Unmögliche möglich macht: Ein tatsächlich in der Praxis von normalsterblichen Entwicklern einsetzbares Lisp.

    Neben den Grundlagen von Clojure werden Sie in dieser Session auch lernen wie man hiermit Web-Anwendungen umsetzten kann. Wenn Sie sich hierbei nicht von den Lisp-typischen Klammern abschrecken lassen werden Sie schnell sehen, dass der Einsatz einer rein funktionalen Programmiersprache sehr gut zum statuslosen Ansatz von HTTP passt.

    Sehen Sie das Video auf Youtube!

    Mehr lesen
  • Horizontal automation – a waste of time.

    Blog-Post Andreas Krüger

    Automation of server administration tasks is a waste of time.

    Mehr lesen
  • Bring Your Technology

    Vortrag Eberhard Wolff, Bernd Kolb OOP 2016 – Software meets Business

    Bernd Kolb und Eberhard Wolff laden verschiedene Sprecher der Konferenz dazu ein, ihre jeweilige, derzeitige Lieblingstechnologie vorzustellen. So erleben Sie kurz und prägnant in nur einer Session eine Vielzahl an interessanten Technologien. Lassen Sie sich überraschen!

    Mehr lesen
  • Web Scraping

    Blog-Post Martin Weck

    This blog post provides examples how to implement web scraping using HtmlUnit, Selenium, ui4j or jaunt and compares them.

    Mehr lesen
  • git pull gotchas

    Blog-Post Andreas Krüger

    The ever-so-convenient git pull isn’t really all that convenient all that often. This piece explains why not, and what to do instead.

    Mehr lesen

    ReactiveX/RxJava vs. Zombies

    Vortrag Phillip Ghadir majug – Java User Group Mannheim Januar 2016

    Mit RxJava - dem Reactive Programming-Framework von Netflix - lassen sich Datenflüsse mit Komponenten programmieren, die strukturell unabhängig sind, ohne dabei auf Higher-Order-Functions wie map, reduce oder filter verzichten zu müssen. In diesem Vortrag stellt Phillip Ghadir Reactive Programming mit RxJava vor und zeigt, wie sich die Konzepte asynchrone Eventstreams und Observables verwenden lassen. Anhand der Grundidee des Computer-Spiels Plants vs. Zombies wird die Verwendung von RxJava demonstriert. Zu guter Letzt wird von dem Beispiel abstrahiert und skizziert, wie sich mit ReactiveX reaktionsfreudige Systeme bauen lassen.

    Mehr lesen
  • Redis in der Praxis

    Podcast Lucas Dohmen, Stefan Tilkov

    In dieser Episode unterhalten sich Lucas Dohmen und Stefan Tilkov über Redis, eine NoSQL-Datenbank aus der Key-Value-Kategorie, die sich insbesondere durch ihre hohe Geschwindigkeit und ihre intelligenten Datenstrukturen auszeichnet. Dabei werden nicht nur die Features aufgezählt, sondern auch praktische Hinweise zum Einsatz gegeben. Mehr lesen
  • iOS: Writing to Core Data in your Today extension

    Blog-Post Carmen Burmeister

    This blog post gives guidance on how to propagate changes in Core Data made by a Today extension to the host app and handle them properly.

    Mehr lesen
  • JAX TV: Technologie-Trends jenseits von Java

    Link Eberhard Wolff

    Was gibt es sonst noch so, außer Java? Mit dieser Frage haben sich auf der JAX 2015 fünf Experten intensiv auseinandergesetzt. Von Rich Clients über Web UI bis hin zu Frameworks und Nischensprachen haben Eberhard Wolff, Kai Tödter, Oliver Gierke, Peter Roßbach und Uwe Friedrichsen den Besuchern wichtige Einblicke in die Vergangenheit, Gegenwart und Zukunft der IT-Welt gewährt.

  • Building reactive applications with the Grails 3 event system

    Vortrag Michael Plöd Groovy & Grails eXchange 2015 Folien verfügbar

    Grails 3 has introduced a brand new event system which is based on Reactor. This new feature allows developers to build reactive applications with Grails 3. In this talk, Michael will cover the event system in Grails 3 in detail and explain how it can be used for asynchronous and decoupled communication between commands, services and even plugins. In addition to that, he will explain the characteristics of reactive applications and show in how far the Grails 3 event system will support you in developing such applications.

    Mehr lesen

    Hands On Migration from Grails 2 to 3

    Vortrag Michael Plöd Groovy & Grails eXchange 2015 Folien verfügbar

    Grails 3 is a substantial and radical change in the Grails Ecosystem, and it requires some effort to migrate applications from Grails 2 to the newest version. This presentation explains which steps have to be taken and which ‘gotchas’ exist in the migration process. As well as the theory we will migrate an existing application that is productive and running with Grails 2 towards the newest version of Grails 3. This presentation will feature a few slides and tons of code.

    Mehr lesen
  • Does the Paradigm Matter? - Chances and Challenges for Functional Programming in Enterprise Projects

    Vortrag Silvia Schreier GOTO Conference Berlin 2015 Folien verfügbar

    There are a lot of religious wars in IT, about operating system, editors, spacing, and last but not least programming paradigms. But does the paradigm really matter? Why do we still discuss such questions and how can we change this?

    Based on the experience from different projects, we will analyze how functional programming will affect your enterprise project, how you can use functional languages and why you should do so. Furthermore, we will look for indicators when it is definitley time to switch and what could be the problems. How can such a change getting started? How can modern language runtime like the JVM or CLR help?

    Mehr lesen
  • ReactiveX/RxJava vs. Zombies

    Vortrag Phillip Ghadir rheinjug Düsseldorf - Die Düsseldorfer Java User Group

    Mit RxJava - dem Reactive Programming-Framework von Netflix - lassen sich Datenflüsse mit Komponenten programmieren, die strukturell unabhängig sind, ohne dabei auf Higher-Order-Functions wie map, reduce oder filter verzichten zu müssen.

    In diesem Vortrag stelle ich Reactive Programming mit RxJava vor und zeige, wie sich die Konzepte asynchrone Eventstreams und Observables verwenden lassen.

    Anhand der Grundidee des Computer-Spiels “Plants vs. Zombies” wird die Verwendung von RxJava demonstriert.

    Zu guter Letzt wird von dem Beispiel abstrahiert und skizziert, wie sich mit ReactiveX reaktionsfreudige Systeme bauen lassen.

    Mehr lesen
  • Hitliste der Legacy-Sünden

    Vortrag Eberhard Wolff W-JAX 2015 Folien verfügbar

    Jeder kennt Systeme mit schlechter Codequalität und Architektur – und die sind schwer änderbar. Aber andere Faktoren sind oft noch viel wichtiger. Was ist mit Tests? Oder dem Releaseprozess? Dieser Vortrag zeigt die populärsten Sünden in Legacy-Anwendungen, wie man sie beheben kann und so ein erfolgreiches Projekt auch mit einer alten Codebasis umsetzen kann.

    Mehr lesen
  • Auto Layout in iOS: How to avoid the common mistake

    Blog-Post Carmen Burmeister

    Creating and adding new views using Auto Layout often results in missing views when running the app because the flag that determines whether a view’s autoresizing mask is translated into Auto Layout constraints has not been turned off for each new view.

    This blog post provides a solution on how to never run into this situation again.

    Mehr lesen
  • Codegolfing

    Vortrag Lucas Dohmen Ruby Sauna Folien verfügbar

    Codegolfing is an interesting sport: You try to write a program in the fewest characters necessary. Do you want to ship this code to production somewhere? Probably not, but just by trying this exercise you will learn a lot about your favorite programming language. You will also be surprised by how much you can do in just a few lines of code while the constraints will stimulate your productivity. Ruby is surprisingly good for golfing due to its Perl heritage.

    In this talk I will tell you a bit more about code golfing and then dive into some code I have golfed. I will show you some tricks I learned and how the desire to shave off a few more characters every time leads to new features in your tiny program that you thought would not fit in such a tiny program.

    Mehr lesen
  • W-JAX 2015 mit Web-Anwendungen, Microservices und REST 2015

    News

    Es ist wieder soweit, vom 2. bis 6. November findet die W-JAX 2015 statt. Im traditionell vollgepackten, spannenden Programm mit über 180 Vorträgen und Workshops sind auch diesmal einige unserer Kollegen vertreten. Mehr lesen
  • Play 2.4 with Guice and MyBatis

    Blog-Post Timo Loist

    The Play Framework is getting more popular and Version 2.4 finally includes Dependency Injection as the default mechanism to access central resources instead of singletons.

    This blog post explores what is necessary to combine MyBatis with Play using its default DI Framework: Guice.

    Batteries (code sample) included!

    Mehr lesen
  • In-depth Clojure Workshop

    Vortrag Philipp Schirmacher, Silvia Schreier Goto Academy September 2015

    Clojure is a JVM language making the impossible possible: A practical Lisp, usable by mere mortals. But what is in it for me? How do I set up my development environment? How do I solve everyday problems? How do I build web apps, process JSON and access databases? And last but not least: Why should I use Clojure instead of any well-known alternative? In this tutorial we will answer all these questions and prepare the participants for Clojure in practice!

    We will use Clojure in hands-on sessions for the efficient implementation of a web application. Along the way we will get to know functional programming concepts which have found their way into many languages. … and most of all

    Come face-to-face with yourself, your strengths and your weaknesses, as you confront one situation after another with equally inquisitive classmates.

    Mehr lesen
  • Java Anwendungen mit dem Spring Framework

    Vortrag Christine Koppelt Informatica Feminale – Internationales Sommerstudium für Frauen in der Informatik

    Dreitägiger Kurs. Zeiten:

    Mo 24.8. 11.00–12.30 und 14.00–16.30 Uhr
    Di 25.8. 09.00–12.30 und 14.00–16.30 Uhr
    Mi 26.8. 09.00–10.30 Uhr

    Spring ist ein modulares Framework für die Erstellung von Unternehmensanwendungen mit Java. Die Vielzahl von Modulen, u.a. für Datenzugriff, Cloud Computing und Web APIs, die sich leicht um zusätzliche Bibliotheken ergänzen lassen, ermöglichen einen breiten Einsatzbereich. Das einheitliche Programmiermodell des Frameworks vereinfacht die Erstellung und das Testen von Anwendungen.

    Der Kurs richtet sich an Teilnehmerinnen, welche die Backend-Entwicklung von Webanwendungen mit Java kennen lernen wollen. Wir erstellen eine Anwendung mit Spring Boot und befassen uns dabei mit den folgenden Themen: - Überblick über Spring
    - Erstellung einer REST API
    - Zugriff auf relationale Datenbanken
    - Validierung von eingehenden Anfragen
    - Erstellung automatisierter Tests
    - Sicherheit

    Mehr lesen
  • Informatica Feminale 2015 in Bremen und Furtwangen

    News

    In diesem Sommer findet an der Hochschule Bremen vom 17. – 28. August 2015 das achtzehnte internationale Sommerstudium für Frauen in der Informatik im Rahmen der Informatica Feminale statt. Mehr lesen
  • Build-Management für Java-Projekte mit Maven

    Vortrag Christine Koppelt informatica feminale Baden-Württemberg 2015

    Dreitägiger Kurs. Zeiten:
    Do 30.07. 16.00 - 17.30
    Fr 31.07. 9.00 - 17.45
    Sa 01.08. 9.00 - 13.15

    Apache Maven ist ein Build-Management Tool mit dem Java-Projekte automatisiert kompiliert, getestet und paketiert werden können. Es ist ein häufig genutztes Tool im Umfeld komplexer Java Anwendungen, das zum einen die Standardisierung des Build-Prozesses ermöglicht und sich zum anderen durch zahlreiche Plugins an verschiedene Anforderungen und Rahmenbedingungen anpassen lässt. Der Kurs besteht abwechselnd aus Vortragsblöcken und Übungen, in denen die Teilnehmerinnen Maven anhand eines Beispielprojektes kennenlernen. Jeweils zwei Teilnehmerinnen arbeiten zusammen und reviewen gegenseitig den erstellten Build Code. Die Übungen werden die folgenden Themen abdecken:
    - Kompilieren, Testen und Paketieren von Java Anwendungen
    - Überblick über Maven Konventionen (Konfiguration, Anwendungsstruktur, Lebenszyklus)
    - Verwaltung von Abhängigkeiten, Erweiterung des Build-Prozesses mit Plugins, Verwendung von Profilen
    - Verwendung von Maven mit der Kommandozeile, Eclipse und IntelliJ Idea
    - Versionierung von Anwendungen, Erstellung von Releases
    - Integration in einen Continuous Integration Server (Jenkins)

    Ziel ist es, dass die Teilnehmerinnen am Ende des Kurses die Konzepte von Maven kennen, mit Maven effizient arbeiten können und selbst (einfache) Builds erstellen können.

    Mehr lesen
  • Caching mit Hibernate

    Vortrag Michael Plöd Java User Group Frankfurt

    Hibernate bietet ein mächtiges und flexibles Caching System, welches in diesem Vortrag vorgestellt und erläutert wird. Wir werden dabei sowohl den 1st-, den 2nd-Level- als auch den Query-Cache betrachten. Zudem wird der Vortrag gängige Pitfalls und Best Practices erläutern. Abschließend werden wir noch betrachten welche Features exklusiv für Hibernate zur Verfügung stehen und welcher Funktionsumfang auch schon durch den Standard JPA abgedeckt ist.

    Mehr lesen
  • Reliable Web Clients

    Blog-Post Tobias Neef

    Microservices can make teams and systems more independent but also more vulnerable to the fallacies of distributed systems. Initially I thought this blog post is going to be about how to build reliable web clients with Akka and Akka Persistence. While this is an interesting topic by itself, I now think it is more crucial to first understand the underlying problems and trade-offs before we learn how to get around them.

    Mehr lesen
  • Bessere Web-Apps mit HTML5-APIs

    Artikel Phillip Ghadir, Simon Kölsch

    Der Begriff HTML5 fasst eine bunte Sammlung aus verfügbaren und geplanten APIs zusammen, auf die im Browser von JavaScript aus zugegriffen werden kann. Einige dieser APIs ermöglichen heute, Anwendungen für den Browser zu realisieren, die vor wenigen Jahren noch Plugins erfordert hätten. Die prominentesten Vertreter sind sicherlich Video oder WebRTC. Zum Beispiel ist heute die Public-Key-Verschlüsselung bereits im Web-Client integrierbar oder das Reagieren auf Sensordaten der Betriebs-Hardware des Browsers möglich. Es folgt eine persönliche Auswahl an etablierten APIs und ein Ausblick auf einige noch recht frische.

    Mehr lesen
  • Erlang/OTP

    Podcast Christoph Iserlohn, Till Schulte-Coerne

    In dieser Folge spricht Till Schulte-Coerne mit Christoph Iserlohn über Erlang, eine Programmiersprache und Laufzeitumgebung, die sich besonders zur Erstellung von non-stop laufenden Systemen eignet. Sie diskutieren dabei u. a. die Unterschiede zu anderen Programmiersprachen, die Besonderheiten der Laufzeitumgebung, das „ Let it crash“-Prinzip und was sich eigentlich hinter dem Kürzel OTP verbirgt. Mehr lesen
  • Declarative HTTP API Testing with gabbi

    Blog-Post Frederik Dohr

    While HTTP APIs are ubiquitous these days, testing and documenting such APIs remains somewhat awkward: Tests usually consist of procedural code that is specific to the respective language or even framework - which is neither very expressive nor easy to maintain.

    Mehr lesen
  • RXJava

    Vortrag Phillip Ghadir Java Forum Stuttgart 2015

    Mit RXJava - dem Reactive Programming-Framework von Netflix - lassen sich Datenflüsse mit Komponenten programmieren, die strukturell unabhängig sind, ohne dabei auf Higher-Order-Functions wie map, reduce oder filter verzichten zu müssen. In diesem Vortrag stelle ich Reactive Programming mit RXJava vor und zeige, wie die Konzepte für veränderliche Werte, Observables in der Kombination mit ein paar Praxistipps dabei helfen können, reaktionsfreudige Systeme zu bauen.

    Mehr lesen
  • Batch-Computing in Java

    Artikel Phillip Ghadir, Frank Hinkel

    Auch heute noch gibt es Bedarf für die wohl älteste Form der elektronischen Datenverarbeitung. Dass Batch immer noch relevant ist, zeigt der junge JSR 352 für Batch-Verarbeitung in Java EE 7. In diesem Beitrag diskutieren wir verschiedene Fragestellungen, die im Zusammenhang mit der Modernisierung bestehender und Umsetzung neuer Batch-Prozesse auftreten, und gehen auf Strategien und Technologieauswahl ein, die bei der Implementierung von Batch in der JVM auftreten können.

    Mehr lesen
  • Put your writes where your master is

    Link Daniel Westheide

    In an article published on his personal blog, Daniel Westheide explains how to verify at compile time that write operations are targeting the master database using Slick 3 and phantom types in Scala.

  • Microservices, Internet of Things und RxJava beim Java Forum Stuttgart

    News

    Am 09. Juli treffen sich rund 1.600 Softwareentwickler in Stuttgart, um zahlreichen Talks zu Themen aus dem Java-Umfeld zu lauschen. innoQ ist beim diesjährigen Java Forum Stuttgart mit drei Talks und einem Stand dabei. Mehr lesen
  • A day full of Clojure - organizing the first German ClojureBridge workshop

    Blog-Post Silvia Schreier

    During the last years a lot of initiatives focusing on increasing diversity in IT and getting kids into IT have emerged. Last weekend the first German ClojureBridge workshop took place in Solingen. Another small but important step towards a diverse IT world.

    Mehr lesen
  • Modernization of legacy systems with microservices, Hystrix and RxJava

    Vortrag Holger Kraus JEEConf

    As a software developer you are not very often in the situation where you develop a completely new system from scratch based on recent techonologies. More often just small features have to be integrated in already existing systems. A change of the basic software architecture and an introduction of new programming paradigms are very difficult in this context. It is all the more important to make the modernization of a legacy systems an ongoing part of the feature-driven development process.

    In this talk I will show step by step how to transform a big, monolithic legacy system towards a modern microservice based architecture. I will also demonstrate how two open libraries from Netflix can support this process. Hystrix will help us to improve the overall stability of the system and RxJava will help us to handle asynchronous processes in a more elegant way. Based on examples I will show how the suggested modernization process could be realised.

    Mehr lesen
  • Per request debugging with Log4j 2 filters

    Blog-Post Alexander Heusingfeld

    Customers quite regularly call on me to support them when an application is not behaving as expected. On a development machine there are a lot of ways and utilities to analyse the situation. But troubleshooting the erroneous application behaviour in production environments quite often limits your tool belt to a minimum.

    Mehr lesen
  • OAuth2 und OpenID Connect

    Vortrag Christoph Iserlohn, Simon Kölsch JAX 2015 Folien verfügbar

    Als Web-Nutzer möchte ich eigentlich nur eins: Endlich keine 100 verschiedene Passwörter mehr und trotzdem sichere Authentifizierung. OpenID und OAuth sind aus diesen Problemen heraus entstanden und über mehrere Jahre zu einer komplexen Sammlung an unterschiedlichen Spezifikationen gewachsen. Diese Session gibt einen Überblick über die Ideen dahinter, Einsatzzwecke und Funktionsweise.

    Mehr lesen
  • Microservices mit Clojure

    Vortrag Philipp Schirmacher, Silvia Schreier JAX 2015 Folien verfügbar

    Microservices zeichnen sich insbesondere durch ihre Eigenständigkeit aus: Die Services sind so lose gekoppelt wie möglich. Damit bietet eine Microservices-Architektur den idealen Rahmen für den Einsatz unterschiedlicher Technologien, die jeweils genau zum zu lösenden Problem und dem Skillset der Entwickler passen. In einem solchen Umfeld lassen sich die Vorteile einer modernen Sprache wie Clojure voll ausnutzen: Knapper und präziser Code, Parallelverarbeitung und direkter Support für asynchrone Programmierung.

    Microservices stellen jedoch auch besondere Herausforderungen: Wie lassen sich neue Projekte ohne viel Overhead aufsetzen? Wie können Services miteinander kommunizieren? Wie schütze ich meinen Service, wenn ein anderer Service ausfällt? Und wenn ich einen Service gebaut habe: Wie bringe ich ihn in Produktion und gestalte das Monitoring?

    In dieser Session führen wir die Teilnehmer Schritt für Schritt an Clojure heran und zeigen am Beispiel, mit welchen Clojure-Bibliotheken sich die genannten Herausforderungen elegant lösen lassen.

    Mehr lesen
  • Twelve-Factor App: Web-Applikationen auf die neue Art

    Podcast Michael Vitz, Stefan Tilkov

    Michael Vitz und Stefan Tilkov sprechen in dieser Folge über die Twelve-Factor App, eine Entwicklungsmethode für skalierbare Web-Applikationen in der Cloud. Michael erklärt zunächst, welche Ziele hinter dieser Methode stehen und erläutert dann die 12 Faktoren im Detail. Außerdem diskutieren Stefan und Michael über Vor- und Nachteile der Twelve-Factor App und beleuchten Gemeinsamkeiten und Unterschiede zu Microservices. Mehr lesen
  • Rails gegen Grails

    Artikel Dirk Lingstädt

    Das Angebot an Webframeworks ist üppig, allerdings durch natürliche Selektion und veränderte Ansprüche kleiner als noch vor ein paar Jahren. Die Optionen verringern sich, wenn eine dynamisch typisierte JVM-Sprache zum Einsatz kommen soll.

    Mehr lesen
  • Using Vector Assets on iOS

    Blog-Post Robert Glaser

    Vector graphics provide numerous advantages, especially when developing for mobile devices in a constantly expanding array of different screen sizes and pixel ratios.

    Mehr lesen
  • Functional Validation in Scala

    Blog-Post Tobias Neef

    Validation is something everybody needs eventually when working with domain models. The Scala ecosystems offers a wide rage of tools which can be used for this purpose. This blog post introduces some of the most common approaches by applying them to a domain model.

    Mehr lesen

    Playing Nice: Designing and implementing well-behaved web APIs

    Vortrag Daniel Westheide Play Framework User Group Berlin Brandenburg

    Providing a great web API means being a well-behaved citizen of the web, and hence, to play nicely with all the other citizens out there: Browsers, caches, proxies, crawlers and so on.

    Unfortunately, the Play Framework, like many other web frameworks, does not offer a lot of help in implementing such a well-behaved web API. However, it turns out to be quite flexible and modular, so we can easily extend it or replace parts of it that stand in our way.

    In this talk, you will learn about principles for designing well-behaved web APIs and how to implement them with Play. Daniel will discuss where Play gets in the way, show how we can overcome those obstacles and introduce a few libraries to ease the development of REST APIs with Play.

    Mehr lesen
  • Distributed Metrics and Log Aggregation

    Vortrag Alexander Heusingfeld, Tammo van Lessen JavaLand 2015 Folien verfügbar

    Most operation teams will agree, without runtime information like log data and metrics you are literally blind in production. Even if such data is available, without correlating events from different sources it becomes very difficult to make sense of your metrics and to draw accurate conclusions. With the rise of microservice architectures, which aim at breaking monoliths into zoos of distributed services, standard approaches with local logfiles and basic runtime metrics are not sufficient anymore. Instead there is an increasing need for a centralized log and metrics collection that allows for aggregating, correlating and visualizing any kind of runtime events.

    In this session, we will show both, the conceptual foundation and best practices for a monitoring solution of a decentralized and distributed application landscape. Coming from a blind example setup, we will show how logging data and runtime metrics can be captured, collected, evaluated and visualized in order to improve the operational experience and the ability to respond early to problems.

    Mehr lesen
  • Docker images for developers

    Blog-Post Jerry Preissler

    Docker seems to be all the rage lately. There are docker talks at every conference, hosting Docker containers has become a hosting option with most if not all PaaS providers, and there is hardly a technology left that is not supposed to run better and more flexibly if you wrap it in a Docker container. Well, except maybe for enterprise-level DBMSs, but you can’t have them all. This post provides an example how Docker can be used at the start of the software lifecycle, during development.

    Mehr lesen
  • Play Anwendungen mit Docker & AWS Beanstalk in die Cloud bringen

    Blog-Post Martin Eigenbrodt

    Für skalierbare Webanwendungen bietet sich die Kombination aus zustandslosen, requestbasierten Webframeworks und einem automatisch skalierendem Cloud Deployment an. In diesem Post betrachten wir konkret Play in Kombination mit Amazons Elastic Beanstalk und Docker.

    Mehr lesen
  • Frontend Dependency-Management in Rails

    Blog-Post Roman Stranghöner

    Im letzten Blogpost über Bower sind viele Gründe für die Verwendung eines Dependency-Management Tools für Frontend-Komponenten genannt worden. Dieser Artikel soll dort anknüpfen, wo der letzte aufgehört hat, und eine Reihe von Möglichkeiten aufzeigen, mit denen Bower in ein fremdes Ökosystem integriert werden kann. Denn in der Regel trifft ein Webframework wie Ruby on Rails oder Play! eigene Vorgaben darüber wie Frontend-Artefakte von einer Webanwendung verwaltet und ausgeliefert werden. Im Folgenden wird Rails als populärer Vertreter eines Webframeworks für einige dieser Integrations-Strategien herhalten.

    Mehr lesen
  • Frontend Dependency-Management mit Bower

    Blog-Post Roman Stranghöner

    Paket Management hat sich in so ziemlich jedem populären Ökosystem der Softwareentwicklung in irgendeiner Form breit gemacht. Und das nicht zu Unrecht: In den seltensten Fällen wird in einem Software-Projekt bei null angefangen. Ob Frameworks oder kleinere Bibliotheken, ein Software-Projekt besteht in der Regel aus vielen einzelnen Bausteinen, die zu einem größeren Ganzen zusammen gesetzt werden. Die Abhängigkeiten von Bausteinen zu Anderen lassen sich bis zu einem bestimmten Grad zwar manuell verwalten, mit zunehmender Größe eines Projekts ist dies auf lange Sicht aber weder praktikabel noch wartbar. Genau an dieser Stelle helfen Dependency-Management Tools dabei Bausteine neu hinzuzufügen, bestehende zu aktualisieren oder deren Abhängigkeiten aufzulösen.

    Mehr lesen

    „Es ist doch nur Web“ - A Rails Warstory

    Vortrag Tim Keller, Willem van Kerkhof Cologne.rb März Meetup 2015

    Kennt ihr das, wenn rake stats nach 3 Jahren wie aus dem Nichts 21000 LOC ausgibt? Kennt ihr das, wenn die neuen fachlichen Anforderungen daraus in 6 Monaten 32000 LOC machen würden?

    Was tun?

    Iterativ reinpopeln und mit explodierenden Kosten pro Feature gegen die Wand fahren! Mit einer tragfähigen Architetkur alles neu machen und damit alle Budgets sprengen! Sofort! Stecker! Ziehen!

    Wir sind auf eure Erfahrungen gespannt, aber vorher erzählen wir unsere Geschichte.

    Mehr lesen
  • Eureka Provisionierung mit AWS CloudFormation

    Blog-Post Michael Vitz

    In einer Microservice-Architektur muss dafür gesorgt werden, dass die einzelnen Services miteinander kommunizieren können. Eine Möglichkeit hierfür ist der Einsatz einer Service Registry. In diesem Post betrachten wir wie man mit Hilfe von AWS CloudFormation Eureka als ausfallsichere Service Registry in der Amazon Cloud provisioniert.

    Mehr lesen
  • Nanoservices und Microservices mit Java

    Vortrag Eberhard Wolff JavaLand 2016

    Es geht kleiner als Microservices: Nanoservices gehen zwar technologische Kompromisse ein, haben dafür aber auch einige entscheidende Vorteile gegenüber Microservices. Dieser Vortrag gibt einen Überblick über Microservice-Techniken wie Spring Cloud oder Spring Boot - und Java-Nanoservice-Ansätze wie Java EE, OSGi und Amazon Lambda.

    Mehr lesen
  • Interview zum Thema Microservices mit Clojure

    Link Silvia Schreier, Philipp Schirmacher

    Unsere Kollegen Silvia Schreier und Philipp Schirmacher wurden zum Thema „Microservices mit Clojure” interviewt. Bei der kommenden JAX 2015 im April werden die beiden zu diesem Thema einen Vortrag halten, der die Teilnehmer Schritt für Schritt an Clojure heran führt.

  • Clojure in der Praxis

    Vortrag Philipp Schirmacher, Silvia Schreier Frankfurter Entwicklertag 2015

    Clojure ist eine JVM-Sprache, die das Unmögliche möglich macht: Ein tatsächlich in der Praxis von normalsterblichen Entwicklern einsetzbares Lisp. Doch was bringt mir das bei meiner täglichen Arbeit? Wie setze ich die Entwicklungsumgebung auf? Wie löse ich die typischen Aufgaben? Wie kann ich Webserver bauen, JSON verarbeiten und auf Datenbanken zugreifen? Und vor allem: Warum sollte ich das mit Clojure tun und nicht eine der altbekannten Möglichkeiten verwenden? In dieser Session zeigen wir all das und machen die Teilnehmer fit für Clojure in der Praxis!

    Wir werden Clojure dabei in hands-on Sessions zur effizienten Realisierung einer Web-Anwendung verwenden. Dabei lernen wir ganz nebenbei funktionale Konzepte kennen, die mittlerweile in vielen Sprachen Einzug gehalten haben.

    Mehr lesen
  • Reaktive Webentwicklung mit Play und Scala

    Vortrag Tobias Neef Lightweight Java User Group München Folien verfügbar

    Dieser Talk bietet eine Einführung in das Play Framework und dessen reaktiven Werkzeugen. Wer schon immer mal wissen wollte warum man Scala für die Webentwicklung einsetzen sollte, was das Ganze mit reaktiver Programmierung zu tun hat und warum ich mich als genesenden Spring Entwickler sehe, für den ist dieser Talk das Richtige.

    Mehr lesen
  • Micro Services on the JVM – a practical overview

    Vortrag Alexander Heusingfeld, Martin Eigenbrodt OOP 2015 - Software meets Business Folien verfügbar

    There is a lot of buzz going on about micro services. Though actually not-so-new this service-oriented approach to system architecture promises great advantages compared to its monolithic counter parts. In this session we‘d like to show different implementations of MicroServices on the JVM and their individual benefits. We‘ll look at Dropwizard, Spring Boot + Java8 and Play2 + Scala. The attendees will get an idea of how to get started with Micro Services and how to slice a „monolithic idea“ into vertical services.

    You will:

    1. get an idea of how to get started with Micro Services
    2. get tips on how to slice a “monolithic app” into vertical services
    3. Learn about typical gotchas in systems of systems

    This session is an extension of our JavaOne 2014 talk which used an example application to showcase a typical monolithic architecture. As simple as this scenario is, it holds types of use cases which can be found in a majority of real world applications. It was sliced into different vertical applications each implemented with a different JVM technology.

    With this session businesses and developers will gain a greater overview of the micro service concept and will be able to compare it to their established approaches. By keeping services small and self-contained, the concept of micro services enables companies to improve their architecture e.g. by replacing services/ applications faster.

    Mehr lesen
  • Logging konsolidieren und Performance gewinnen

    Artikel Stefan Bodewig, Phillip Ghadir

    Apache Log4j 2.0 ist eine Neuimplementierung von Log4j zeichnet sich vor allem durch einen höheren Durchsatz – dank asynchronem I/O – aus. Die Neuerungen des Frameworks machen Lust darauf, Log4j2 einzusetzen. Da drängt sich die Frage auf, wie die Vorzüge von Log4j2 in einem System genutzt werden können, wenn Teile noch Log4J 1, commons-logging oder Ähnliches verwenden.

    Mehr lesen
  • A practical introduction into Web Development with Play

    Vortrag Tobias Neef Rhein Main Scala Enthusiasts

    Tobias Neef from innoQ will give us a very practical intro into the Play Framework, by actually showing how a web application is built. The presentation will demonstrate how Play integrates various aspects of web application development (Frontend, API, Domain) into a platform for building ergonomic software without much noise and without sacrificing evolvability.

    Mehr lesen
  • Building well-behaved web APIs with Play: The obstacles and how to overcome them

    Vortrag Daniel Westheide Amsterdam.scala Talks & Drinks

    Building applications that follow the REST architectural style can be quite cumbersome. Like most other web frameworks out there, the Play Framework does not support you a lot in building well-behaved web APIs. On the other hand, it makes implementing not-so-restful HTTP APIs super easy. As a consequence, developers choose the path of least resistance.

    However, the Play Framework is actually quite flexible and modular, so we can replace parts that hinder us and add abstractions that help building RESTful web APIs.

    After a motivational introduction to the nature of truly RESTful web APIs, Daniel will explain where Play gets in the way of building them and show how we can overcome these obstacles. I will introduce libraries for supporting common hypermedia formats and show how to implement Play-based web APIs in a resource-oriented manner.

    Mehr lesen
  • microxchg 2015 - Die Microservices Konferenz in Berlin mit innoQ-Beteiligung

    News

    Am 12. und 13. Februar 2015 findet mit der microXchg die erste Microservices-Konferenz in Berlin statt. Microservices stehen für ein neues Architektur-Paradigma: An die Stelle großer Anwendungen treten kleine Dienste. So werden monolithische Architekturen abgelöst und es entstehen leicht änderbare und skalierbare Systeme. Mehr lesen
  • Von Markdown zu Published

    Artikel Marc Jansing, Torsten Kinzel, Ramona Klein, Andreas Krüger, Tammo van Lessen, Claudia Rauch

    Im Jahr 2012 begann innoQ, mit der Published-Reihe ein jährlich zu Weihnachten erscheinendes Buch herauszugeben, welches die Artikel von Mitarbeitern des vergangenen Jahres beinhaltet. Wurden die ersten beiden Ausgaben noch von einer Agentur per Hand erstellt, haben wir uns für 2014 das Ziel gesetzt, eine eigene Pipeline zu bauen, mit der das Buch erstellt werden kann. Dieser Artikel beschreibt nun den Aufbau und die Arbeit an der Pipeline und hinter der dritten Ausgabe von Published.

    Mehr lesen
  • Ruby on Rails wird zehn Jahre alt

    Artikel Marc Jansing, Robert Glaser

    Das Webframework Ruby on Rails feiert sein zehnjähriges Bestehen. Dazu erscheint nun mit Rails 4.2 das zweite Minor-Release in diesem Jahr. Es bringt iterative Verbesserungen und einige neue Features mit.

    Mehr lesen
  • Ruby on Rails

    Podcast Robert Glaser, Stefan Tilkov

    In dieser Folge spricht Robert Glaser mit Stefan Tilkov über das Web-Framework Ruby on Rails. Robert stellt die Hauptbestandteile und aktuellen Neuerungen des Frameworks vor und schildert seine Erfahrungen im täglichen Umgang mit Rails. Mehr lesen
  • Grenzenlose Freiheit?

    Artikel Silvia Schreier

    „Die Grenzen meiner Sprache bedeuten die Grenzen meiner Welt“, stellte schon Ludwig Wittgenstein fest. Auch wenn zwei Programmiersprachen Turing-vollständig sind und somit die gleichen Probleme lösen können, beeinflussen ihre Eigenschaften dennoch die Art und Qualität der Problemlösung. Mit der JVM steht uns heute eine Plattform zur Verfügung, bei der wir für jedes Problem die am besten geeignete Sprache wählen können. Auch wenn sich prinzipiell jede JVM-Sprache mit jeder anderen kombinieren lässt, gibt es einige Stolpersteine. In diesem Artikel wollen wir analysieren, wie gut sich Clojure mit Java verträgt.

    Mehr lesen
  • Microservices on the JVM - a practical overview

    Vortrag Alexander Heusingfeld, Martin Eigenbrodt Devoxx 2014 Folien verfügbar

    There is a lot of chatting going on about the new cool kid on the block - microservices. Though the ideas are actually not that new, this service-oriented approach to system architecture promises great advantages compared to its monolithic counter parts. Unfortunately it seems that many developers get lost in the buzzwords due to a lack of concrete practical examples.

    In this session we’d like to show different implementations of microservices on the JVM and their individual benefits. We’ll look at Dropwizard, Spring Boot + Java8 and Play2 + Scala. Doing this the attendees will get an idea of how to get started with microservices, how to slice a “monolithic idea” into vertical services and what the benefits are.

    Mehr lesen

    Concurrency in Enterprise Java

    Vortrag Alexander Heusingfeld Devoxx 2014 Folien verfügbar

    This session will introduce the benefits and gotchas of concurrent programming in Java EE by showing different scenarios we can make use of the new functionality in JSR236. This includes advanced use cases for ContextualProxies, RxJava, ListenableFuture (Guava) and CompletableFuture.

    Mehr lesen
  • Security 101

    Vortrag Christoph Iserlohn, Tobias Hahn W-JAX 2014

    Wir erläutern in diesem Vortrag die wesentlichen Begriffe und Konzepte rund um das Thema IT-Sicherheit: Sie lernen die Grundlagen von Kryptografie kennen und erfahren, warum Hashing, Entropie und Zufall zentrale Bedeutung für Vertraulichkeit besitzen. Wir erläutern die Möglichkeiten von Angriffen gegen Betriebssysteme und technische Kommunikation und bringen Licht ins Dunkel von Signaturen, Zertifikaten, Man-in-the-Middle, Salting und Rainbow Tables. Zwischendurch erklären wir praktische Securityprobleme und eklatante Sicherheitslücken. Schließlich erleben Sie live einen Kryptoangriff gegen einen verschlüsselten Text (damit Sie auch schätzen lernen, was die arme NSA eigentlich leistet).

    Der Vortrag richtet sich an alle Technikinteressierten, die endlich mal die relevanten Grundlagen von Security in leicht verdaulicher Form erleben möchten.

    Mehr lesen

    Logging und Metriken: Näher dran statt nur dabei

    Vortrag Tammo van Lessen W-JAX 2014 Folien verfügbar

    Log-Dateien schreibt jeder. Meistens liest man darin, wenn der Kunde sich bereits über einen Fehler beschwert hat. Dann beginnt das mühsame Interpretieren der Vergangenheit. Es gibt aber noch mehr Möglichkeiten, um den Zustand seiner Anwendungen zu überwachen – und zwar im Hier und Jetzt, mit Near-Time-Überwachungen. Mittels gezielt eingesetzter Metriken kann man nahe am Geschehen sein. Und mit gewissen fachlichen Metriken weiß man nicht nur, wie gut oder schlecht seine Anwendung generell, sondern auch das Geschäft läuft. Gute Metriken in Kombination mit gutem Logging sind ein Erfolgsfaktor für den Betrieb einer modernen Anwendung.

    In dieser Session sprechen wir über die Möglichkeiten und Tools, um Daten aus Logs und Metriken automatisiert zu aggregieren und auszuwerten.

    Mehr lesen
  • Clojure in der Praxis

    Vortrag Philipp Schirmacher, Silvia Schreier W-JAX 2014 Folien verfügbar

    Clojure ist eine JVM-Sprache, die das Unmögliche möglich macht: Ein tatsächlich in der Praxis von normalsterblichen Entwicklern einsetzbares Lisp. Doch was bringt mir das bei meiner täglichen Arbeit? Wie setze ich die Entwicklungsumgebung auf? Wie löse ich die typischen Aufgaben? Wie kann ich Webserver bauen, JSON verarbeiten und auf Datenbanken zugreifen? Und vor allem: Warum sollte ich das mit Clojure tun und nicht eine der altbekannten Möglichkeiten verwenden? In dieser Session zeigen wir all das und machen die Teilnehmer fit für Clojure in der Praxis!

    Mehr lesen
  • Micro Services on the JVM - a practical overview

    Vortrag Martin Eigenbrodt, Alexander Heusingfeld JavaOne 2014 Folien verfügbar

    There is a lot of chatting going on about the new cool kid on the block - micro services. Though actually not-so-new this service-oriented approach to system architecture promises great advantages compared to its monolithic counter parts which are often found in real-life businesses. Unfortunately it seems that many developers get lost on the way due to a lack of concrete practical examples.

    In this session we’d like to show different implementations of MicroServices on the JVM and their individual benefits. We’ll look at Dropwizard, Spring Boot + Java8 and Play2 + Scala. Doing this the attendees will get an idea of how to get started with Micro Services, how to slice a “monolithic idea” into vertical services and what the benefits are.

    Link to JavaOne CON4952 talk

    Mehr lesen
  • Attribut-basiertes Testen mit Scala

    Artikel Tobias Neef

    Das Testen eines Software-Systems ist eine alltägliche Aufgabe mit dem Ziel, dessen Konformität bezüglich einer Spezifikation nachzuweisen. Die grüne Ampel der Testumgebung ist in vielen Projekten das Fieberthermometer, welches die Normaltemperatur des Systems verkündet oder zu Warnungen bei Überschreitung führt. Doch können wir diesem Messgerät trauen? Das Attribut-basiertes Testen ist ein Werkzeug aus der Welt der funktionalen Entwicklung, welches uns helfen kann die Zuversicht in unsere Systeme zu erhöhen.

    Mehr lesen
  • Understanding SBT: Towards a typesafe and programmable build

    Vortrag Daniel Westheide Scala User Group Berlin-Brandenburg

    Every developer hates build tools, and because of that, we tend to configure our build by copying snippets from the intarweb instead of trying to understand our build tool. This is no different or even more so the case with SBT, which in some ways is fundamentally different from other build tools.

    However, by doing so, you miss out a lot of what SBT can do for you.

    In this talk, you will learn about the most important concepts underlying SBT, how it helps you to program your build in a typesafe way, and how to extract re-usable parts of your build configuration into an SBT plugin. You’ll also see how using SBT as an interactive development environment can make your daily development work much more fun and productive.

    Mehr lesen
  • Ceylon auf der JVM und node.js

    Artikel Frank Hinkel, Muhammet Altindal

    Ceylon ist da! Eine neue Programmiersprache die sowohl im Java- als auch im JavaScript-Ökosystem zu hause ist. Ceylon möchte mit Klarheit, Modularisierung und einem ausgefeilten Metamodell punkten. Anvisiert ist der Einsatz in großen Softwareprojekten. In diesem Artikel werfen wir einen Blick in die Konzepte und schauen uns die Sprache an, welche vor kurzem das Licht der Welt erblickt hat.

    Mehr lesen
  • Scala in Pattern

    Vortrag Martin Eigenbrodt JUG Dortmund Sommerfest

    Die Seele einer Sprache erschließt sich nicht durch das Pauken von Grammatik und Vokabeln allein. Das gilt für natürliche Sprachen ebenso wie für Programmiersprachen. Zum Erlernen einer natürlichen Sprache gehört die Auseinandersetzung mit der jeweiligen Kultur. Wesentlich ist, wie die Sprache im Alltag verwendet wird. Eine Möglichkeit, sich Programmiersprachen zu erschließen, besteht darin, häufig verwendete Pattern zu betrachten. Obwohl Design Pattern scheinbar abstrakt und losgelöst von der jeweiligen Sprache betrachtet werden können, zeigt sich, dass einige Pattern durch bestimmte Sprachmerkmale erst ermöglicht werden während andere eher als Workaround für fehlende Features zu sehen sind.

    Für eine Reihe von typischen Problemen stellen wir der “klassischen” Java-Lösung ein Pattern in Scala entgegen. Wo immer möglich, betrachten wir die Pattern nicht nur in der Theorie, sondern spüren sie in Open-Source-Bibliotheken bzw. Frameworks der Scala-Community auf.

    Mehr lesen

    Software ändern, aber richtig - mit AIM42

    Vortrag Alexander Heusingfeld JUG Dortmund Sommerfest Folien verfügbar

    Den größten Teil unseres Informatikerlebens verbringen wir mit Anpassungen an bestehenden Systemen - genau dieser Teil kommt in der klassischen Ausbildung aber praktisch nicht vor. In diesem Lightning-Talk sprechen wir über Software-Änderungen, welche Ursachen sie haben, wo es häufig zu Meinungsverschiedenheiten bzgl. Prioritäten zwischen Entwicklung und Fachabteilung kommt und zeigen wie aim42 mit Hilfe von Mustern und methodischen Bausteinen diese Schwierigkeiten überbrücken helfen kann.

    http://www.jugdo.de/2014/08/08/sommer-event-programm/

    Mehr lesen
  • Die Renaissance von Erlang

    Artikel Frank Hinkel, Muhammet Altindal

    Konnte Joe Armstrong, der geistige Vater von Erlang, vor 25 Jahren schon ahnen welchen bemerkenswerten Weg seine Kreation nehmen wird? Der folgende Artikel beschreibt warum das im Stillen gereifte Erlang eine Renaissance erlebt und sich nicht nur als Vorbild für neue Sprachen größerer Aufmerksamkeit erfreuen wird.

    Mehr lesen
  • Learn you an SBT for fun and profit!

    Vortrag Daniel Westheide ScalaDays Folien verfügbar

    SBT has been the subject of quite a bit of controversy among Scala developers. It’s different enough from other build tools that not everyone has the patience of really getting into it. As a natural consequence, they tend to either go back to the build tools they know or employ SBT in a way that is similar to what they are used to and doesn’t require them to fully understand it.

    While it is possible to build your projects with only a minimal comprehension of SBT, there is a lot to gain from really understanding how it works. If you are one of the people who have never gone a lot further than “sbt test”, this talk is for you.

    You will learn how it can make your daily Scala development workflow more productive. We’ll dive into the concepts behind SBT and see how we can embrace its interactive shell, how to customise our build to our needs, and what the SBT ecosystem of plugins has to offer to improve our development workflow.

    This talk will involve a lot of live SBT interaction, and also some coding. At the end of the talk, we will have seen not only what SBT and the existing ecosystem has to offer, but also built our own little SBT plugin.

    Mehr lesen
  • Tschüss JavaEE Thread-Sorgen, hallo JSR236

    Vortrag Alexander Heusingfeld JAX 2014 Folien verfügbar

    Kopfschmerzen wegen Multi-Threading in Java-EE-Applikationen waren gestern. Die “Concurrency Utilities for Java EE” bringen ThreadPool-Management und Monitoring in den Application Server, sodass Entwicklern diese Sorgen genommen werden. Welche Vorteile bringt der JSR 236 eigentlich mit? Wie können die ManagedExecutor Entwicklern und Operatoren helfen, Asynchronität und Parallelverarbeitung zu realisieren, zu steuern und zu überwachen? Was hat Spring 4.0 eigentlich mit dem JSR 236 zu tun? Diese und weitere Fragen sollen in der Session beantwortet werden.

    Mehr lesen

    „It’s not rocket science“, aber ganz nah dran

    Vortrag Alexander Heusingfeld JAX 2014

    Java EE: Kaum ein anderes Framework schafft es dermaßen gut, vorhandene Komplexität hinter einfachen Spezifikationen und APIs zu verstecken. Was in der Theorie der Lehrbücher und in einfachen Beispielen problemlos funktioniert, führt in der Praxis allerdings nicht selten zu nicht brauchbaren und wenig performanten Architekturen - von Skalierung ganz zu schweigen. Wo liegt das Problem? Enterprise-Computing-Projekte haben ihre eigenen Herausforderungen und Gesetze, denen man leider nur selten mit 08/15-Lösungen Herr werden kann. Der Teufel steckt wie immer im (Praxis-)Detail und es gilt aus den Erfahrungen anderer zu lernen, um nicht jeden Fehler selber machen zu müssen. Die anwesenden Java-EE-Experten zeigen in dieser Session klassische Pitfalls und Anti-Pattern aus ihrem Praxisalltag auf, die in der Theorie zwar gute Lösungen zu sein scheinen, in der Praxis aber ins Chaos führen – Alternativen inklusive. Lassen sie sich überraschen und stellen sie sich auf den einen oder anderen Aha-Effekt ein!

    Mehr lesen
  • Keine Angst vor runden Klammern - Clojure: das Lisp auf der JVM

    Vortrag Silvia Schreier, Stefan Tilkov JAX 2014 Folien verfügbar

    Clojure ist eine innovative, ungemein praktische JVM-Sprache mit Lisp-Wurzeln, die von Grund auf für die Parallelverarbeitung ausgelegt ist und dabei mit vielen bekannten Mustern aus der OO-Welt bricht. Ein besonderes Merkmal ist dabei das klare und einfache grundlegende Design der Sprache. Im Vortrag wird nach einer Einführung in die Konzepte und die Syntax der praktische Nutzen von Clojure demonstriert und insbesondere auch auf die Integrationsmöglichkeiten mit anderen JVM-Sprachen eingegangen.

    Mehr lesen
  • Collections parallel verarbeiten mit der Reducers-Bibliothek von Clojure

    Vortrag Philipp Schirmacher parallel 2014 Folien verfügbar

    Clojure ist eine JVM-Sprache, die das Unmögliche möglich macht: Ein tatsächlich in der Praxis von normalsterblichen Entwicklern einsetzbares Lisp. Durch die Verwendung generischer Datentypen wie Vektoren, Sets und Maps lassen sich auch komplexe Aufgabenstellungen mit wenig Code lösen. In Zeiten von Multicore stellt sich die Frage, wie das Arbeiten mit Collections effizient parallelisiert werden kann. Ziel sollte es dabei sein, die Codestruktur gegenüber einer seriellen Implementierung nicht grundsätzlich ändern zu müssen. In dieser Session wird gezeigt, wie dies in Clojure mit der Reducers-Bibliothek erreicht werden kann.

    Mehr lesen
  • Vom Dasein eines Apache Software Foundation-Mitglieds

    Podcast Stefan Bodewig, Till Schulte-Coerne

    In dieser Episode spricht Till Schulte-Coerne mit Stefan Bodewig über die Apache Software Foundation (ASF), eine Organisation zur Förderung von Open Source-Software, in der sich Entwickler vorwiegend ehrenamtlich betätigen. Stefan ist seit vielen Jahren Mitglied der ASF. Er berichtet über ihre Strukturen, die Unterschiede zu anderen Organisationen wie der Eclipse Foundation, die Arbeit in den einzelnen Apache-Projekten und von seinem Alltag als Committer und Vice President. Mehr lesen
  • Scala in Pattern

    Vortrag Martin Eigenbrodt BEDcon 2014 Folien verfügbar

    Dieser Vortrag lädt interessierte Java-Entwickler ein, sich Scala durch Pattern zu nähern.

    Die Seele einer Sprache erschließt sich nicht durch das Pauken von Grammatik und Vokabeln allein. Das gilt für natürliche Sprachen ebenso wie für Programmiersprachen. Zum Erlernen einer natürlichen Sprache gehört die Auseinandersetzung mit der jeweiligen Kultur. Wesentlich ist, wie die Sprache im Alltag verwendet wird. Eine Möglichkeit, sich Programmiersprachen zu erschließen, besteht darin, häufig verwendete Pattern zu betrachten. Obwohl Design Pattern scheinbar abstrakt und losgelöst von der jeweiligen Sprache betrachtet werden können, zeigt sich, dass einige Pattern durch bestimmte Sprachmerkmale erst ermöglicht werden während andere eher als Workaround für fehlende Features zu sehen sind.

    Für eine Reihe von typischen Problemen stellen wir der “klassischen” Java-Lösung ein Pattern in Scala entgegen. Wo immer möglich, betrachten wir die Pattern nicht nur in der Theorie, sondern spüren sie in Open-Source-Bibliotheken bzw. Frameworks der Scala-Community auf.

    Mehr lesen
  • Domain-Driven Design in Clojure

    Artikel Phillip Ghadir, Philipp Schirmacher

    In diesem Artikel setzen wir die Prinzipien des Domain-Driven Designs mit Clojure um. Wir stellen die Domäne Rating als Beispiel vor und demonstrieren strategisches sowie taktisches DDD. Wir zeigen, wie sich das Domänenmodell in Clojure implementieren lässt.

    Mehr lesen
  • Multi-Threading in Java-EE-Applikationen

    Vortrag Alexander Heusingfeld JavaLand 2014 Folien verfügbar

    Kopfschmerzen wegen Multi-Threading in Java EE Applikationen waren gestern. Die “Concurrency Utilities for Java EE” bringen ThreadPool Management und Monitoring in den ApplicationServer, so dass Entwicklern diese Sorgen genommen werden. Welche Vorteile bringt der JSR236 eigentlich mit? Wie können die ManagedExecutor Entwicklern und Operatoren helfen Asynchronität und Parallelverarbeitung zu realisieren, steuern und überwachen? Was hat Spring 4.0 eigentlich mit dem JSR236 zu tun? Diese und weitere Fragen sollen in der Session beantwortet werden.

    Mehr lesen
  • Sicherheit von IT-Systemen

    Podcast Willem van Kerkhof, Stefan Tilkov

    Willem van Kerkhof spricht mit Stefan Tilkov über die Sicherheit von IT-Systemen. Allgemeine nichttechnischen Aspekte, wie die Wahl von Passwörtern, sind dabei mindestens genauso wichtig wie technische Implikationen beispielsweise zur Absicherung von Web-Anwendungen. Mehr lesen
  • Enterprise Application Integration War Stories

    Vortrag Alexander Heusingfeld, Martin Huber OOP 2014 Folien verfügbar

    In den heutigen heterogenen Systemlandschaften stehen Entwickler und Architekten häufig vor komplexen Herausforderungen, wenn es um die Integration von Anwendungen geht. Über die Zeit entstehen so durch wechselnde Anforderungen häufig Moloch-ähnliche Systeme, die eng an die angebundenen Schnittstellen gekoppelt und kaum noch wartbar sind.

    In diesem Talk erklären wir, was “Enterprise Integration Patterns” sind und zeigen Beispiele aus der Praxis, welche durch den Einsatz der Pattern verbessert werden konnten.

    Mehr lesen
  • Graphdatenbanken

    Podcast Oliver Tigges, Stefan Tilkov

    In der zehnten Folge unseres Podcasts spricht Oliver Tigges mit Stefan Tilkov über Graphdatenbanken, eine Unterklasse der NoSQL-Datenbanken. Oliver erklärt welche Eigenschaften graphbasierte Datenbanken haben und beschreibt Szenarien in denen ihr Einsatz gegenüber dem Einsatz von "klassischen" relationalen Datenbanken sinnvoll erscheint. Mehr lesen
  • Behavioural Abstractions in Play Framework

    Vortrag Tobias Neef Ping Conference Folien verfügbar

    Play is a framework which allows you to kick start your project with a meaningful initial structure. But projects evolve and with them the need to modularize the application into independent components, which can be combined, configured and reused.

    Fortunately Play offers tooling like Actions, Filters and Plug-ins, which help with abstracting over common problems classes. This talk focuses on patterns for modularising behavioural and structural aspects of a Play application, based on experiences gained in real life Play projects.

    Mehr lesen
  • Endlich viel erben?

    Artikel Phillip Ghadir, Oliver Tigges

    Im Fahrwasser der Lambda-Funktionen werden in Java 8 Default-Methoden eingeführt, um Interfaces aus dem JDK abwärtskompatibel um neue Methoden zu erweitern. Hier schließen wir an den Artikel von Christian Robert (Default-Methoden in Java 8, JavaSPEKTRUM 03/2013) an. Wir klären bis zu welchem Grad Mehrfacherbung in Java einzieht und wie wir die Möglichkeiten und das Risiko für bestehende Systeme einschätzen.

    Mehr lesen
  • Play!

    Podcast Tobias Neef, Stefan Tilkov

    In seinem zweiten innoQ Podcast spricht Tobias Neef mit Stefan Tilkov über das Web-Framework Play. Tobias stellt die wesentlichen Features des Frameworks vor und beschreibt deren Einsatz. Er diskutiert den alternativen Einsatz von Play mit Java oder Scala und geht auf die Hauptunterschiede zwischen Play 1 und 2 ein. Mehr lesen
  • Enterprise Integration Patterns - Best Practices for Application Integration

    Vortrag Alexander Heusingfeld, Martin Huber W-JAX 2013

    In den heutigen heterogenen Systemlandschaften stehen Entwickler und Architekten häufig vor komplexen Herausforderungen, wenn es um die Integration von Anwendungen geht. Über die Zeit entstehen so häufig molochähnliche Systeme, die eng an die angebundenen Schnittstellen gekoppelt sind. Doch auch, wenn es um individuelle Schnittstellen geht, muss man “das Rad nicht neu erfinden”. Dieser Talk gibt eine Einführung in Enterprise Integration Patterns, die häufige Problemstellungen bei der Integration von Enterprise-Applikationen in heterogene Umgebungen aufzeigen und Lösungskonzepte anbieten. Um die Theorie in die Praxis zu bringen, dient eine Java-basierte Auftragsverwaltung eines Logistikdienstleisters, die verschiedene Schnittstellen unterschiedlicher Geschäftspartner anbindet. Hier werden eigene Implementierungen der Patterns mithilfe der Java-EE–7-APIs wie JMS 2.0 und JAX-RS 2.0 den Ansätzen von Spring Integration und Apache Camel gegenübergestellt und die Vor- und Nachteile der konkreten Lösungen aufgezeigt.

    Mehr lesen
  • Eclipse Smart Home

    Vortrag Thomas Eichstädt-Engelen, Kai Kreuzer EclipseCon Europe 2013

    The new Eclipse Smart Home project is a flexible framework for smart home and ambient assisted living (AAL) solutions. It has a strong focus on heterogeneous environments, i.e. solutions that deal with the integration of different protocols or standards.

    Its purpose is to provide a uniform access to devices and information and to facilitate different kinds of interactions with them. Main features include a powerful Xtext/Xbase-based rule engine, declarative user interface descriptions and an extensible REST API.

    Developers can easily build an individual smart home solution by adding their own extensions to this framework - the result can be deployed on embedded devices which can run a JVM such as a Raspberry Pi. The full stack is pure Java/OSGi and is built on top of Equinox, EMF and Jetty.

    A first release of the Eclipse Smart Home project can be expected in early 2014. The initial contribution to this project comes from the open Home Automation Bus (openHAB), which provides a huge list of free extensions, which allow to easily integrate systems like KNX, Philips Hue, Z-Wave, EnOcean, DMX, Plugwise, Homematic or Sonos.

    In this talk you will learn about the technical aspects of this project as well as the cool home automation use cases that can be realized with such an extensible framework.

    Mehr lesen
  • Modern Batch

    Podcast Frank Hinkel, Stefan Tilkov

    In dieser Folge unterhalten sich Frank Hinkel und Stefan Tilkov über Batchverarbeitung, was gerade für große Unternehmen immer ein wichtiger Bestandteil der IT gewesen ist und bleiben wird. Frank stellt die Herausforderungen der Thematik vor und spricht über die Bedeutung von Frameworks wie Spring Batch. Mehr lesen
  • Scala

    Podcast Tobias Neef, Stefan Tilkov

    In dieser Folge diskutiert Tobias Neef mit Stefan Tilkov über Vorteile von und Vorurteile gegen Scala. Tobias gibt einen kurzen Überblick über einige wichtige Features und sowie deren Nutzen in der Praxis. Mehr lesen
  • Home Automation for Geeks [CON9177]

    Vortrag Thomas Eichstädt-Engelen - innoQ, Kai Kreuzer - Deutsche Telekom JavaOne 2013

    Home automation nowadays comprises much more than just lighting and HVAC. New Internet of Things devices and services are hitting the market constantly. But how to easily integrate them with each other? The open source project openHAB addresses this problem: it connects to a multitude of different systems and comes with powerful automation rules and nice UIs. Its modular architecture guarantees simple extensibility. While running it on small and cheap embedded devices such as the Raspberry Pi, you can explore the world of home automation beyond the ordinary: do a presence simulation with the push of a button, see live charts of your sensor data, or adjust your irrigation schedule through Google Calendar. Be prepared to see geeky hardware in the live demo in this session.

    Mehr lesen
  • Enterprise Integration Patterns with Java EE (CON7969)

    Vortrag Alexander Heusingfeld JavaOne 2013 Folien verfügbar

    In today’s heterogeneous system/application environments, enterprise developers and architects are often faced with complex integration challenges that often result in Moloch-like code. This session introduces common patterns for enterprise application integration (EAI) that can easily be used to integrate Java EE applications into heterogeneous system environments. Learn how to face the challenges of small and medium businesses by leveraging the benefits of Java EE APIs and see different implementations with Apache Camel and Spring Integration.

    An order management application of a logistics service provider that implements multiple interfaces of heterogeneous business partner systems serves as an example.

    Mehr lesen
  • RoR + DynamoDB = ?

    Vortrag Silvia Schreier JRubyConf 2013 Folien verfügbar

    We are currently developing a Ruby on Rails application with Amazon’s DynamoDB. Using a NoSQL cloud service and especially DynamoDB with its particular restrictions entails a lot of challenges.

    We will share our experiences using DynamoDB in general and in combination with Ruby (and Rails) to help you to decide if you want to use DynamoDB for your project (or not). We also provide a list of things you should to keep in mind if you start using DynamoDB. These range from managing your database, over mapping your model to the database, up to testing. Furthermore, we present the design and technical details of our persistence module.

    Mehr lesen
  • Clojure

    Podcast Philipp Schirmacher, Stefan Tilkov

    Stefan Tilkov unterhält sich mit Philipp Schirmacher über Clojure, ein pragmatisches und praxistaugliches Lisp für die Java Virtual Machine. Mehr lesen
  • Faster Builds with Apache Buildr

    Vortrag Tammo van Lessen Java Forum Stuttgart 2013

    Die meisten Java-Entwickler verbindet eine Hass-Liebe mit Maven. Apache Buildr ist ein Ruby-basiertes Buildsystem für Java-Anwendungen und stellt eine gute Alternative zu Maven dar. Es verbindet dessen Vorteile mit einer leichtgewichtigen und anpassbaren DSL, ist sehr leicht erweiterbar und ist fast doppelt so schnell wie Maven. In dieser Session stellen wir die Konzepte anhand von Beispielen vor.

    Mehr lesen
  • Micro-Cloud mit Cloud Foundry

    Artikel Phillip Ghadir, Oliver Wolf

    In dieser Ausgabe stellen wir mit Cloud Foundry einen Plattformdienst vor, mit dem Java-Anwendungen in der Cloud betrieben werden können. Die Plattform stellt Java-Anwendungen eine virtuelle Umgebung mit Ressourcen zur Verfügung. Wir haben Cloud Foundry für diese Kolumne gewählt, weil es die Cloud-Plattform auf den eigenen Rechner holt. Dadurch wird die Cloud- Entwicklung netzunabhängig.

    Mehr lesen
  • openHAB - die Welt der Dinge in der Hand

    Vortrag Thomas Eichstädt-Engelen - innoQ, Kai Kreuzer - Deutsche Telekom JAX 2013

    Das IoT bringt viele coole Gadgets hervor, die jedoch meist nur mit ihrem eigenen Backend verbunden und somit nicht miteinander vernetzt sind. Für den Anwender fehlt eine zentrale Instanz, die als Integrationsplattform einheitliche Protokolle und Datenstrukturen bereitstellt und es dem Anwender erlaubt, Anwendungslogik zu definieren und auszuführen. openHAB ist eine solche Plattform. Dieser Talk geht auf deren Konzepte ein und zeigt live, wie einfach sich die Welt der Dinge mit Leben füllen lässt.

    Mehr lesen
  • OO in Scala. The unloved side of the cake

    Vortrag Tobias Neef Scala User Group - Berlin Brandenburg Folien verfügbar

  • Rubies are forever

    Artikel Tim Keller, Christian Albrecht

    Der 24. Februar 2013 markiert nicht nur die Freigabe der Version 2.0 der Programmiersprache Ruby, sondern zugleich auch ihr 20-jähriges Bestehen. Am 24. Februar 1993 gab es den ersten Check-in, und damit läutete Ruby-Erfinder Yukihiro “Matz” Matsumoto die Erfolgsgeschichte einer dynamisch typisierten Programmiersprache ein, die vor allem mit dem Webframework Ruby on Rails weltweit populär werden sollte.

    Mehr lesen
  • Apache Buildr

    Artikel Tammo van Lessen

    Die Automatisierung der Buildprozesse ist eine feine und wichtige Sache. In der Regel freut man sich, wenn ein Projekt Apache Maven verwendet und man dank der Konvention das Projekt sofort bauen kann. Doch mit der Zeit stellt sich in der Regel Ernüchterung ein. Der Build schlägt plötzlich fehl, weil ein Artefakt nicht mehr in den bekannten Repositories gefunden werden kann, die Ergebnisse sind nicht exakt reproduzierbar oder für eine kleine Erweiterung des Prozesses müssen erst aufwendig Plug-ins entwickelt und verteilt werden. Muss das so sein? Apache Buildr hat sich zu einer mächtigen Alternative entwickelt, in dem es den deklarativen Ansatz von Maven mit dem imperativen einer Skriptsprache kombiniert.

    Mehr lesen
  • Ride the Camel like a Pro

    Vortrag Martin Huber JBoss One Day Talk 2012

    Apache Camel ist ein Integrationsframework basierend auf Java. Apache Camel ist mit seiner Vielzahl an Integrationsmöglichkeiten zu einem mächtigen Tool herangewachsen. Dabei muss man nicht immer gleich an ESBs denken wenn es um Integration geht. Man findet schnell einige Anwendungsfälle für Apache Camel, deren Lösung mit Bord-Mitteln in der Java-Welt unweit schwieriger zu lösen wären. Neben einer kurzen Einführung in die “Philosophie der Kamele” werden wir uns in dieser Session einige fortgeschrittene Anwendungsfälle vornehmen in denen sich der Einsatz eines Integrationsframeworks als vorteilhaft erweist. Wir werden dazu auch reale Code-Beispiele in Camel durchgehen, die die pragmatischen Lösungsansätze veranschaulichen.

    Mehr lesen
  • Java-Programme mit Clojure würzen

    Artikel Phillip Ghadir

    Für jeden, der einen Lisp-Dialekt auf der JVM verwenden will, ist Clojure eine naheliegende Wahl. Es verbindet die Ausdruckskraft von Lisp mit der Vielzahl von bestehenden Java-Bibliotheken. Was zur Integration von Clojure mit Java gehört und wie sich die Mächtigkeit von Clojure auswirkt, wollen wir am Beispiel der Clojure-Bibliothek Incanter betrachten.

    Mehr lesen
  • Webanwendungen mit dem Play!-Framework

    Artikel Phillip Ghadir, Philipp Haußleiter

    Das Play!-Framework ist ein recht junges, vollständiges MVC-Framework, das den Charme von Ruby on Rails hat. Aber anstatt unreflektiert jede Entwurfsentscheidung von Rails ins Play!-Framework zu übernehmen - wie das manch andere Rails-Klone gemacht haben -, haben die Entwickler darauf geachtet, es so zu konstruieren, dass es sich gut in das Ökosystem eines typischen Java-Entwicklers einfügt.

    Mehr lesen
  • Domain Specific Languages

    Artikel Stefan Tilkov

    In den letzten Jahren hat es sich eingebürgert, bei domänenspezifischen Sprachen zwei Varianten zu unterscheiden: interne und externe. Dabei gewinnen interne DSLs insbesondere durch die steigende Popularität dynamischer Sprachen zunehmend an Bedeutung.

    Mehr lesen
  • DevOps konkret: Infrastruktur mit Chef entwickeln

    Vortrag Martin Eigenbrodt jax 2012

    Ein Paradigma der DevOps-Bewegung ist “Infrastructure as Code”. Ganze Serverlandschaften werden nicht mehr konfiguriert, sondern wie Software entwickelt und vollständig automatisiert erstellt. Diese Session stellt diese grundlegenden Konzepte am Beispiel des Open-Source-Frameworks Chef vor.

    Mehr lesen
  • „Infrastructure as Code“ mit Chef

    Artikel Martin Eigenbrodt

    Im Rahmen der DevOps-Bewegung setzt sich die Erkenntnis durch, dass das Konfigurieren von Servern ähnlich wie das Entwickeln von Software behandelt werden sollte. Testbare, wiederholt ausführbare Programme ersetzen die manuelle Konfiguration. Dieser Artikel zeigt am Beispiel Chef, wie dieses Paradigma umgesetzt wird.

    Mehr lesen
  • Panel Agile Day

    Vortrag Oliver Wolf - innoQ Deutschland GmbH, Henning Wolf - it-agile GmbH, Matthias Bohlen - Coach für effektive Produktentwicklung, Martin Karmann - OPITZ CONSULTING München GmbH, Michael Hofmann - oose Innovative Informatik GmbH, Jürgen Broda - Continental Au W-JAX 2011

    Nach einem Agile Day mit vielen interessanten Anregungen ergeben sich zumeist ebenso viele Fragen und Anmerkungen. Die Speaker des Agile Day stehen zum Abschluss für einen Dialog mit den Teilnehmern zur Verfügung - Detailfragen können gelöst werden, Themen vertieft, Kontroversen ausgefochten, Moderiert von Henning Wolf.

    Mehr lesen
  • Effiziente Systemintegration mit Apache Camel

    Vortrag Martin Huber, innoQ Deutschland GmbH, Kai Spichale, Kai Wähner, MaibornWolff et al GmbH JBoss OneDayTalk 2011

    Der Datenaustausch zwischen Unternehmen oder einzelnen Bereichen wird immer intensiver. Die Zahl der Anwendungen, die integriert werden müssen, steigt stetig an. Die Schnittstellen nutzen diverse Technologien, Protokolle und Datenformate. Die Integration dieser Anwendungen soll aber trotzdem standardisiert modellierbar, effizient umsetzbar und automatisiert testbar sein. Apache Camel ist ein Framework, welches diese Anforderungen erfüllt. Es implementiert die allseits bekannten Enterprise Integration Patterns (EIP) und bietet dadurch eine standardisierte, domänenspezifische Sprache, welche für die Integration von Anwendungen eingesetzt wird. Neben Java kann auch Spring XML, Scala oder Groovy für die Integration genutzt werden. Dieser Vortrag stellt Apache Camel vor und zeigt an Hand eines realistischen Praxisbeispiels inklusive Live-Demo, wie dieses Framework in fast jedem Integrationsprojekt im JVM-Umfeld sinnvoll und effizient eingesetzt werden kann. Dabei spielt es keine Rolle, welche Technologien sowie Transport- und Nachrichtenprotokolle eingesetzt werden. Alle Integrationsprojekte können einheitlich und ohne redundanten, „Boilerplate-Code“ umgesetzt werden.

    Mehr lesen
  • Smart Enterprise Application Integration with Apache Camel (Live-Demo)

    Vortrag Martin Huber, innoQ Deutschland GmbH, Kai Spichale, Kai Wähner, MaibornWolff et al GmbH Jazoon 2011

    Data exchanges between companies increase a lot. The number of applications which must be integrated increases, too. The interfaces use different technologies, protocols and data formats. Nevertheless, the integration of these applications shall be modeled in a standardized way, realized efficiently and supported by automatic tests.

    Apache Camel is an integration framework, which fulfils these requirements. It implements the well-known Enteprise Integration Patterns (EIP) and therefore offers a standardized, domain-specific language to integrate applications. Besides Java, also Spring XML, Scala or Groovy can be used for integration.

    After a short introduction to the framework, this session presents a realistic use case and demonstrates a live-demo to show how Apache Camel can be used in almost every integration project within the JVM environment - no matter which technologies, transport protocols or data formats are used. All integration projects can be realized in a consistent way without redundant boilerplate code.

    Finally, a visual designer will be shown to model an integration based on EIPs graphically. The corresponding Camel source code is generated automatically.

    The target audience is Java developers, architects and project managers. The level is “beginner”, so no knowledge in Apache Camel is required.

    Mehr lesen
  • Infrastruktur entwickeln mit Chef

    Vortrag Martin Eigenbrodt gearconf 2011

    Chef ist ein Configuration-Management-Tool. Mit Chef lassen sich Server verwalten, in dem Code geschrieben wird, anstatt (Konsolen-) Kommandos auszuführen. Dieser Vortrag zeigt, dass Chef auch in kleinen Projekten mit wenigen Servern und jenseits des Cloud Computing Vorteile gegenüber dem händischen Ansatz hat. Ausrücklich werden auch durch die Wahl des Beispiel Java-Entwickler angesprochen, die in der Ruby/Rails lastigen Dokumentation sonst häufig zu kurz kommen.

    Mehr lesen
  • Rails Engines. Doing it wrong. And then right.

    Vortrag Robert Glaser RailsWayCon 2011 Folien verfügbar

    The session should show the big advantages that the engines feature brings since Rails 3.0. On the other hand it should also hint on the possible pitfalls based on a real life project. After using engines extensively in a government project, there are lots of practical experience that can be shared. - How are we using engines? - What have we done wrong/right? - What are we still not able to do?

    Mehr lesen
  • MongoDB on Rails 3, a successful real world struggle

    Vortrag Willem van Kerkhof RailsWayCon 2011

    In this session we will briefly cover the basic aspects of MongoDB, its differences to other DBMS and its use in Rails 3 using Mongoid. The main focus will however be on problems and caveats encountered and solved during a recent real-world dating platform project involving n-to-n matching and not-so-trivial queries causing huge initial performance problems.

    Mehr lesen
  • Panel: Java - die nächste Dekade

    Vortrag Stefan Tilkov, Eberhard Wolff, Lothar Wieske JAX 2011

    Gerade in letzter Zeit gab es im Java-Ökosystem durch die Übernahme von Sun durch Oracle und Konflikte zwischen Oracle und Google bzw. der Apache Software Foundation einige Verunsicherung. Gleichzeitig tauchen neue Technologietrends wie Cloud, mobile Endgeräte und Social Media auf, denen Java begegnen muss. Genügend Anlass, die Zukunft von Java einmal zu diskutieren. Dieses Panel bietet die Möglichkeit, mit dem Advisory Board der Artikelserie im Java Magazin gerne auch kontrovers zu diskutieren und es auszufragen. Nutzen Sie diese Chance!

    Mehr lesen
  • Clojure — in der Praxis?

    Artikel Stefan Tilkov

    Wer braucht schon eine neue Programmierprache? Schließlich lässt sich alles in jeder Sprache erledigen, die Turing-complete ist; ob es nun C++, C# oder Java ist – irgendwie ist doch alles das Gleiche. Die wirklich spannenden Themen liegen ganz woanders: in der Gesamtarchitektur, der Entwicklungsmethodik, sozialen Faktoren, der Firmenpolitik usw. oder nicht? Spielen Programmiersprachen wirkliche eine Rolle oder sind sie vergleichsweise egal? Wie kann der Aufwand für das Erlernen und – viel wichtiger – das Einführen einer neuen Sprache gerechtfertigt werden? Am Beispiel Clojure diskutieren wir in diesem Artikel die wichtigsten Argumente.

    Mehr lesen
  • Integration von Apache CAMEL mit HornetQ

    Vortrag Martin Huber JBoss Usergroup

    Apache Camel ist ein mächtiges Open Source Framework, dass es ermöglicht die bekannten Enterprise Integration Patterns zu implementieren. Über eine einfache DSL-basierte Sprache können verschiedenste Systeme integriert und die Hürden verschiedener Transportprotokolle überwunden werden - ohne dabei den Überblick zu verlieren.

    In diesem Vortrag soll eine kleine Einführung in Apache Camel gegeben werden, vor allem in Hinblick auf die Integration mit HornetQ. An einem kleinen Beispiel wird die Integration von Apache Camel mit HornetQ vorgeführt.

    Mehr lesen
  • NoSQL - Einsatzgebiete für die neue Datenbank-Generation

    Artikel Dirk Lingstädt

    NoSQL ist derzeit in aller Munde, obwohl manche Konzepte und Technologien schon seit Jahrzehnten bestehen. Der Begriff umspannt inzwischen derart viele Datenbank-Kategorien und -Produkte, dass es oft zu Verwirrungen und falschen Annahmen über den geeigneten Einsatz kommt. Dieser Artikel betrachtet anhand konkreter Beispielszenarien die Kriterien, die bei der Entscheidung für ein klassisches relationales Datenbanksystem oder eine der NoSQL-Varianten eine Rolle spielen.

    Mehr lesen
  • Multimodule Projekte, CI u. Releases mit Ant & Ivy

    Vortrag Martin Eigenbrodt gearconf2010

    Heute gehören neben dem Compilieren von Sourcen und dem Erstellen von Artefakten auch das Ausführen von Tests und das Verwalten verwendeter Abhängigkeiten selbstverständlich zu den Aufgaben eines Buildsystems. Häufig erfordert allerdings das Bereitstellen von Releases ebenso wie das Branchen noch händisches Eingreifen. Diese fehlende Automatisierung ist ein Fehlerquelle und erzeugt - grade in agilen Projekten mit häufigen Releases - unnötige Aufwände. In diesem Vortrag werden Konzepte zur Lösung vorgestellt, um auch die Builds komplexer Projekte vollständig zu automatisieren und das Release auf Knopfdruck zu realisieren. Die Open Source Projekt Apache Ant 1.8.1, der Dependency Manager Apache Ivy und der Buildserver Hudson liefern dabei das mächtige und flexible Tooling zur Umsetzung.

    Mehr lesen
  • Fantastische Formulare - Formulare endlich einfach

    Artikel Robert Glaser RailsWay Magazin 01/2010

    Formulare sind sicherlich das Stiefkind im Alltag eines Rails-Entwicklers: Felder für die verschiedenen Attribute anlegen, Standardwerte und Vorauswahlen einbauen, Fehlermeldungen und Hinweisfelder hinzufügen und letztendlich das Ganze noch in brauchbares semantisches HTML verpacken - Sie kennen das sicher zur Genüge. Das i-Tüpfelchen: Die meisten Webanwendungen sind voll von Formularen!

  • Bundle-Bee – OSGi-basiertes Grid-Computing

    Vortrag Phillip Ghadir & Philipp Haußleiter OOP 2009

    Bundle-Bee ist eine OSGi-basierte Grid-Plattform, die es Anwendungsentwicklern erlaubt, eigene Dienste als OSGi- Bundles zentral zu installieren, die über die Plattform automatisch auf verschiedene Knoten im Grid verteilt werden. Die Erstellung eigener Dienste erfordert mit wenigen Einschränkungen kein spezifisches Programmiermodell. Der Vortrag stellt die Konzepte sowie Funktionen der Plattform vor und zeigt auch deren Grenzen auf.

    Mehr lesen
  • Service Design – Richtlinien und Heuristiken für Services

    Vortrag Hartmut Wilms JAX 2008

    Der „Service“ ist das Schlüsselkonzept von serviceorientierten Architekturen. Aber wie entwickelt man „gute“ Services? Wie grenzt sich der Service gegenüber Geschäftsprozessen und Workflows ab? In diesem Vortrag werden Ihnen Richtlinien und Heuristiken für die Entwicklung von Services vorgestellt, die unter anderem zeigen, dass SOA mehr als nur ein Paradigma für Schnittstellen ist.

    Mehr lesen
  • Die Java Persistence API

    Artikel Phillip Ghadir, Oliver Tigges, Serge Pagop JavaSPEKTRUM 02/07

    Mit EJB 3 wurde im Rahmen des Java Community Process das Java Persistence API (JPA) entworfen und verabschiedet. JPA ist zwar im Rahmen von EJB 3 entstanden, aber durchaus auch separat verwendbar. Die Mission: einen einheitlichen Persistenzmechanismus sowohl für Standard-Java als auch für Enterprise-Java bereitzustellen, der alle anderen Standard-Persistenz-Mechanismen wie JDO (Java Data Objects) oder EJB (Enterprise JavaBeans) ablösen soll.