Microsoft SQL 2019: Java Unterstützung und Open Source Java-Spracherweiterung

Vor Version 2019 unterstützte Microsoft SQL Server R, Python und .Net  als Spracherweiterung.  Mit der neuen Version SQL Server 2019 wurde auch Java integriert. Das bedeutet, dass man beim Kauf eines Microsoft SQL Servers den Java-Support dazu erhält.

Im April 2020 wurde bekannt gegeben, dass die Java-Spracherweiterung für SQL Server 2019 als Open Source zur Verfügung gestellt wird. Die Spracherweiterung dient zur Ausführung von externem Code im Rahmen von SQL-Abfragen. Java-Anwendungsentwicklungsteams, die SQL Server als Backend-Speicher nutzen, können jetzt sogar Java-Code in Stored Procedures einbetten, wodurch Geschäftslogik für eine bessere Leistung in die Datenbank verlagert werden kann.

Insbesondere verwendet die Erweiterung das „Extensibility Framework API“ für SQL Server, das öffentlich dokumentiert ist. Diese neue Architektur gibt Kunden die Freiheit, ihre eigene Runtime mitzubringen und Programme unter Verwendung dieser Runtime in SQL Server auszuführen und gleichzeitig die vorhandenen Sicherheitsmechanismen zu nutzen, die die Erweiterungsarchitektur des SQL Servers bietet.

Die Wahl der verwendenden JRE bietet die Flexibilität, zwischen verschiedenen Java-Distributionen zu wählen. Wenn neuere Versionen veröffentlicht werden, erleichtert diese Architektur die Aktualisierung der Java-Laufzeitumgebung.

Außerdem bedeutet die fortlaufende Partnerschaft zwischen Microsoft und Azul, dass die „Distribution Zulu for Azure – Enterprise von Java für alle SQL Server-Kunden direkt kostenlos zur Verfügung steht. Dies stellt sicher, dass Kunden eine vollständig unterstützte Distribution nutzen können, ohne sich Sorgen machen zu müssen, dass eine bestimmte Laufzeitumgebung aus dem Support herausfällt.

Posted in Java and Quality, Uncategorized | Tagged , , | 1 Comment

HTTP/2 Server Push

Welcome to the last blog post of the HTTP blog post series, namely Server Push!

The HTTP client API which came with JDK 11 supports HTTP/2 as a default but also HTTP/1.1. An interesting feature of HTTP/2 is the server push capability. This means that the Web server is allowed to push information to the client before the client requests it. This all can happen if the URLs are provided over the same host name and protocol.

In other words, while in HTTP/1.1 the browser triggers a request to get an HTML page and has to send one request for each referenced resource, in HTTP/2 there is no need for an explicit request from the browser for the referenced resources of an HTML page.

In order to have a better understanding of this concept I will show you an example.

Continue reading
Posted in Java Basics | Tagged , , , | Leave a comment

HTTP Client WebSocket Chat Application using Spring Boot

Have you ever thought about what the logic behind a chat application is? How could it be written and how does it work? If yes, here is the right place to look for an answer. It is called WebSocket! But what is this?

What is WebSocket?

WebSocket is a communication protocol exactly like HTTP providing a full duplex communication channel between server and client. The principle is that once a WebSocket connection between a server and a client exists, they can communicate and exchange information until one of them (the server or the client) disconnects. If there is the need for a communication and information exchange at high frequency and low latency, WebSocket should be preferred over HTTP. The WebSocket process is the following:

Continue reading
Posted in Java Basics | Tagged , , | Leave a comment

Java 14 ist erschienen

An die halbjährlichen Updates der Programmiersprache Java haben wir uns gewöhnt, sie tun der Sprache und der Plattform gut. Zuletzt waren die Änderungen aber überschaubar gewesen. Mit dem Mitte März 2020 erschienen Java 14 gab es nun wieder ein regelrechtes Feuerwerk an neuen, spannenden Features. In diesem Artikel wollen wir die insbesondere aus Entwicklersicht relevanten Themen unter die Lupe nehmen. Schließlich steht im September mit Java 15 bereits die nächste Version vor der Tür.

Continue reading
Posted in Java Basics | Tagged , , , | Leave a comment

Asynchronous HttpClient

Wouldn’t it be great if there was any HTTP API that doesn’t block until an HttpResponse is available? I mean, a main thread that can execute other tasks in parallel and doesn’t block or wait for the completion of that task? Well, there is one.

java.net.http.HttpClient provides both synchronous and asynchronous request mechanisms. The synchronous mechanism was explained in the first article of this blog post series.

HttpClient.sendAsync is the answer to the question. It sends a request and receives the response asynchronously. This method returns a CompletableFuture.

Continue reading
Posted in Java Basics | Tagged , , | Leave a comment

Was gibt es Neues im JUnit 5.6.0 Release?

Vor kurzem wurde die Version 5.6.0 des JUnit Test-Frameworks veröffentlicht. Daher möchte ich hier gerne eine Übersicht über die Änderungen bzw. die neuen Funktionen geben.

Continue reading
Posted in Java and Quality | Tagged | Leave a comment

High performance at low cost – choose the best JVM and the best Garbage Collector for your needs

The Garbage Collector (GC) is an integral part of every Java Virtual Machine (JVM) – running in the Cloud, on a dedicated server or on your desktop/laptop. Are you aware of what impact a GC has on an application – on its performance, resource consumption and finally on its operational cost? Which GC will allow you to maximize the performance and minimize the cost of a running Java application? This article provides a complete answer to the above questions.

What is a Garbage Collector?

As explained in Introduction to Garbage Collection Tuning:

The garbage collector (GC) automatically manages the application’s dynamic memory allocation requests. A garbage collector performs automatic dynamic memory management through the following operations:

  • Allocates from and gives back memory to the operating system.
  • Hands out that memory to the application as it requests it.
  • Determines which parts of that memory is still in use by the application.
  • Reclaims the unused memory for reuse by the application.

Considered Java Virtual Machines and Garbage Collectors

In this article I consider the following Java distributions, Virtual Machines and Garbage Collectors:

Continue reading
Posted in Java Runtimes - VM, Appserver & Cloud | Tagged , , , , , , | 2 Comments