Wer kennt sie nicht die alljährliche Java Konferenz im schönen Mainz zum Thema Java & Co? Selbst wenn man das Glück hat die Woche vor Ort zu sein und von Session zu Session flitzen zu dürfen, so bleiben einfach einige Themen links liegen zu denen man es nicht schafft. Im Nachhinein bleibt dann nur der Blick ins Programmheft was die Trends und Tendenzen in der Java-Welt sind. Für alle die wie ich nicht jede Session besuchen konnten die sie gerne gesehen hätten oder das Büro hüten mussten hier ein Versuch die diesjährigen Themen Zusammenzufassen.
Microservices
Wahrscheinlich das Thema schlechthin in diesem Jahr. Microservices sind ein Architekturansatz der vorsieht, dass die Entwicklung einer Software nicht in einem monolithischen Deployment endet, sondern, dass unsere Anwendung in viele kleine Komponenten geteilt ist. Diese Komponenten sollten völlig unabhängig voneinander betrieben und gewartet werden können. Ziel des Ganzen ist es eine besser Wartbarkeit zu erreichen da die unterschiedlichen Microservices autonom von unterschiedlichen Team bearbeitet werden können und nur über Schnittstellen kommunizieren.
https://jax.de/session/microservices-workshop-architektur-und-praxis/
https://jax.de/session/java-ee-meets-microservices/
https://jax.de/session/wie-microservices-ansaetze-scheitern-fuenf-anti-patterns/
AngularJS
Eines der vielen JavaScript Frameworks zur Entwicklung von Clientseitiger Webanwendungen. Entwickelt von Google erfreut sich Angular größter Beliebtheit und steht derzeit mit Angular2 (noch Beta) auch in einer brandneuen Version zur Verfügung. Bei Angular handelt es sich um ein Framework für klassische Single Page Anwendungen und basiert auf dem Model View Controller Prinzip.
HelloWorld
<input type="text" ng-model="yourName" /> <button ngClick="sayHello())>SayHello</button> <h1 ng-show="yourName">Hello {{ yourName }}</h1>
https://jax.de/session/angularjs-2-0/
https://jax.de/session/angular-2-0-und-typescript-verliebt-verlobt-verheiratet/
https://jax.de/session/wiederverwendbare-komponenten-mit-angular-2-0-deep-dive/
Ionic
Ionic ist ein Framework welches eine Möglichkeit schafft mobile Hybrid-Anwendungen mit Web-Technologien zu schreiben. Dabei kümmert sich Ionic um das Look&Feel und die eigentliche Benutzeroberfläche die später in mobilen Endgeräten angezeigt werden. Zur Erzeugung der Anwendung wird Apache Cordova eingesetzt und zur Implementierung kommt sehr häufig Angular zum Einsatz
HelloWorld
<ion-header-bar class="bar-stable"> <h1 class="title">Hello World!</h1> </ion-header-bar> <ion-content> Hello {{yourName}} </ion-content>
https://jax.de/session/mobile-apps-mit-typescript-erster-blick-auf-ionic-2/
React
Eine JavaScript Bibliothek aus dem Hause Facebook um JavaScript Anwendungen zu entwickeln. Ein Schwerpunkt ist dabei ist die Performance bei großen Webseiten, so wird mit einem virtuellen DOM gearbeitet um nur Elemente zu aktualisieren die auch verändert wurden. Anders als z.B. Angular wird bei React nicht HTML mit Java Script angereichert, sondern ist JavaScript zentriert.
Hello World
var HelloWorld = React.createClass({ render: function () { return <h1>Hello {this.props.name}!</h1>; } }); ReactDOM.render(<HelloWorld name="YourName" />, document.getElementById('root'));
TypeScript
TypeScript stammt aus dem Hause Microsoft und ist schon einige Jahre auf dem Markt und findet auch Verwendung bei der Entwicklung mit Angular 2.Bei Typescript handelt es sich um eine Obermenge von JavaScript, was bedeutet das jeder JavaScript Code auch gültiget TypeScript Code ist. Darüber hinaus fügt TypeScript “lesbare” Klassen-Konstruktore, statische Typisierung und ECMA6 Syntax ein, das alles dank Umwandlung in reines JavaScript auch in älteren Browser funktioniert
import {Customer} from './Models'; import {ServiceInterface, BasicRepository} from './ServiceUtils'; class CustomerService extends BasicRepository&amp;amp;lt;Customer&amp;amp;gt; implements ServiceInterface{ constructor() { super(); } }
Docker
Bei Docker handelt es sich einfach gesagt um das Image einer ganzen Laufzeitumgebung. Applikation Server, Storages, Datenbank etc. einmal konfiguriert und als Docker-Container in einer entsprechenden Laufzeitumgebung auf einem beliebigen System zum Ausführen gebracht.
(by https://www.docker.com/what-docker )
https://jax.de/session/docker-eine-einfuehrung/
https://jax.de/session/container-as-a-service-with-docker/
https://jax.de/session/start-your-rugged-devops-journey-with-nexus-jenkins-docker/
Java 9
Der Sprung auf die Version 8 wurde von vielen Entwicklern freudig erwartet, so brachte Java 8 doch einige neue Sprachfeatures mit. Mit der Version 9 steht eher ein “leises” Update bevor, das eher die JVM verbessert (z.B. mittels Modulkonzept / Jigsaw) und sich weniger darauf konzentriert neue Features für den Anwendungsentwickler zu bieten
https://jax.de/session/was-wird-java-9-bringen-ein-ausblick-auf-die-naechste-version-von-java/
Elasticsearch
Bei Elasticsearch handelt es sich um eine auf Lucene basierende Suchmaschine. Diese Application kann genutzt werden um REST-basierte Suchanfragen auf der eigenen Webseite zu verarbeiten
https://jax.de/session/integration-von-elasticsearch-in-moderne-java-ee-webanwendungen/
https://jax.de/session/elasticsearch-performance-best-practices/
https://jax.de/session/ueberblick-zu-apache-lucene-und-den-darauf-basierenden-suchservern-apache-solr-und-elasticsearch/
MVC
Bei MVC handelt es sich in diesem Fall nicht um das Konzept (Model View Controller) sondern um ein Action basiertes Webframework das für Java EE 8 mit in den Standard fließt. Im Gegensatz zu JSF (Komponentenbasiert, abstrahiert von HTML/CSS/JavaScript) liegt ein Fokus auf darauf im Frontend alle Freiheiten zu haben die uns die Technik bietet.
HelloWorld
@Controller @Path("hello") public class HelloWorldController { @Inject Models models; @GET public String helloWorld() { this.models.put("text", "Hello World"); return "/hello.jsp"; }
https://jax.de/session/eine-mvc-anwendung-in-60-minuten/
https://jax.de/session/isomorphic-javascript-webapps-auf-der-jvm-mit-react-js-und-java-ee-mvc/
HTTP2
Die neue Version der http/2 Protokolle ist unbemerkt schon seit langem auf dem Vormarsch. Viele Webseiten haben bereits umgestellt ohne das die Benutzer es gemerkt haben. http/2 verspricht schnelle Webseiten durch ein binäres Übertragungsformat, Komprimierung und Multiplexing (eine einzelne TCP-Verbindung für alle Ressourcen), siehe auch unseren Blog-Eintrag
https://jax.de/session/http2-and-java-9/
JavaFX
Java Framwork zum Schreiben von Desktop Anwendungen ähnlich wie Swing
HelloWorld
public class HelloWorld extends Application { public static void main(String[] args) { } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Hello World!"); final Label label = new Label("Hello World"); StackPane root = new StackPane(); root.getChildren().add(label); primaryStage.setScene(new Scene(root, 300, 250)); primaryStage.show(); } }
https://jax.de/session/von-swing-nach-javafx/
https://jax.de/session/javafx-einstieg-am-lebenden-beispiel/
https://jax.de/session/javafx-im-ui-technologiedschungel/
Weitere Buzzwords
Spring Boot, Standalone Anwendungen auf inkl. Application Server auf Basis von Spring
Nexus, Maven Repository Manager
ECMAScript 2015, neue JavaScript Version
MQTT, Protokoll für Maschine zu Maschine Kommunikation, Internet der Dinge
JCache, Java Standard Caching API (JSR 107)
Checker, Framework zu Code Überprüfung
Jigsaw, Modulsystem Java 9
Gatling, Stress-Test Tool
Neo4j, Graph-Datenbank
…und noch viele mehr