Normale Ansicht

Es gibt neue verfügbare Artikel. Klicken Sie, um die Seite zu aktualisieren.
Ältere BeiträgeHaupt-Feeds

Eclipse 2023-09 veröffentlicht

14. September 2023 um 09:59

Die freie Entwicklungsumgebung Eclipse ist in der Version 2023-09 erschienen. Die IDE unterstützt Java, C/C++, TypeScript/JavaScript, PHP und weitere Sprachen und bringt in der neuen Ausgabe Verbesserungen im Detail.

Dazu zählen die Entwickler unter anderem Updates für den Java-Editor, der eine neue Hover-Funktion mitbringt, um die Werte von Integer- oder Float-Konstanten im Binär-, Oktal- oder Hex-Format anzuzeigen. Bewege man den Mauszeiger über solche Konstanten, werde der Wert im Dezimalformat angezeigt, gefolgt von dem Wert in Hexadezimal.

Informationen zu den Neuerungen der einzelnen in Eclipse enthaltenen Projekten können der Webseite von Eclipse entnommen werden. Die DIE steht für Linux, Windows und MacOS zur Verfügung.

Der Beitrag Eclipse 2023-09 veröffentlicht erschien zuerst auf Linux-Magazin.

Analyse: Java-Entwickler dringend gesucht

24. April 2023 um 09:40

Das Freelancer-Portal Workgenius hat den Fachkräftemangel in Deutschland analysiert und nach Städten und Programmiersprachen aufgeschlüsselt. Ein Resultat: Java-Programmierer sind am häufigsten gesucht.

Für die Studie zum Arbeitsmarkt für das Jahr 2023 hat Workgenius nach eigenen Angaben mehr als 120.000 Stellenausschreibungen für IT-Jobs in Deutschland analysiert. Und auch ermittelt welche Programmiersprachen am gefragtesten in Deutschlands Großstädten sind.

Im Ranking bezogen auf die Freien Stellen bezogen auf 100.000 Einwohner liegt Frankfurt auf Rang 1 mit 1582 Stellen je 100.000 Einwohnern. Insgesamt seien 12.089 IT-Stellen ausgeschrieben, heißt es in der Studie von Workgenius. Bei den Programmiersprachen ist Java mit 1397 Ausschreibungen in Frankfurt die gefragteste Programmiersprache. In absoluten Werten bei den Stellenausschreibungen landet Frankfurt hinter Berlin (19.914 Stellen), München (16.605) und Hamburg (13.058) auf Platz vier.

Auf Platz zwei folgt, wie schon im Vorjahr, Stuttgart. Die insgesamt gezählten 9009 Stellen (2022: 5.325) Stellen verteilt auf die knapp 630.000 Einwohner bedeuten 1430 Stellen je 100.000 Einwohner.  Auch in Stuttgart ist der Java-Bedarf mit 1207 Ausschreibungen am größten, teilt Workgenius mit.

Platz drei geht nach Düsseldorf. Die 6989 Stellenausschreibungen entsprechen einer Quote von rund 1125 pro 100.000 Einwohner. In Düsseldorf werden derzeit SQL-Experten mit 706 Ausschreibungen am häufigsten gesucht.

Was die häufig gesuchten Programmiersprachen betrifft, wird Java in insgesamt 24.901 Ausschreibungen gesucht, was den ersten Platz des Rankings bedeutet. Auf Platz zwei folgt SQL. Zwar gilt die Structured Query Language nicht als vollwertige Programmiersprache, allerdings lässt sie sich mit anderen Programmiersprachen kombinieren, heißt es in der Analyse. SQL werde bei 21.813 Stellenausschreibungen vorausgesetzt. Auf dem dritten Platz landet Python mit insgesamt 20.023 Stellenausschreibungen. Die drei Plätze sind damit gleich belegt wie in der Analyse des Vorjahres.

Die kompletten Ergebnisse sind online abrufbar.

Der Beitrag Analyse: Java-Entwickler dringend gesucht erschien zuerst auf Linux-Magazin.

Java Development Kit 20 mit neuen Funktionen

22. März 2023 um 09:30

Oracle hat das Java Development Kit (JDK) 20 veröffentlicht. JDK 20 ist ein so genanntes Short-Term-Release und erfährt sechs Monate Unterstützung. Produktionsreife Binärdateien unter der GPL sind von Oracle erhältlich.

Das neueste Upgrade von Standard-Java enthält sieben neuen Funktionen, die sich alle entweder in einer Inkubations- oder in einer Vorschauphase befinden. Ein Vektor-API, Virtual Threads, Record Patterns, Scoped Values und eine Foreign Function & Memory API zählen laut den Release Notes  dazu.

Die Funktionen in JDK 20 werden nach Angaben von Oracle jetzt zunehmend zu Standards weiterentwickelt. Die neuen Funktionen stammen aus Java-Projekten Amber, Panama und Loom stammen. Amber ist dabei für die Record Patterns und Pattern Matching für Switch zuständig. Panama für die Verbindung der JVM mit nativem Code (Foreign Function & Memory API nebst Vector API) und Loom entwickelt die neuen JVM-Funktionen und die darauf aufbauenden APIs (Scoped Values, Virtual Threads und Structured Concurrency).

Open-Source-Builds des Java Development Kit 20 sind hier verfügbar.

Der Beitrag Java Development Kit 20 mit neuen Funktionen erschien zuerst auf Linux-Magazin.

Quartals-Patchday bei Oracle

20. Oktober 2022 um 08:25

Oracle hat für seinen alle drei Monate stattfindenden Patchday fast 400 Patches veröffentlicht.

Im so genannten  Critical Patch Update für Oktober stecken laut Oracle Patches für Sicherheitslücken in Oracle-Code und in Komponenten von Drittanbietern, die in Oracle-Produkten enthalten sind.

Die Zahl der Patches macht deutlich, dass es in nahezu allen Anwendungen von Oracle Lücken zu schließen gibt. Betroffen sind unter anderem MySQL-Produkte, Solaris, Java SE sowie die Financial-Services und Healthcare-Produkte. Oracle empfiehlt das Einspielen der Patches dringend. Es gäbe immer wieder Hinweise darauf, dass Angreifer bereits gepatchte Lücken ausnutzen.

Die Liste der Patches ist online abrufbar und die einzelnen Patches linken jeweils zur Beschreibung.

Der Beitrag Quartals-Patchday bei Oracle erschien zuerst auf Linux-Magazin.

Von Java 11 zu Java 17

21. Dezember 2021 um 19:23

Seit einigen Jahren erscheinen halbjährlich neue Java-Versionen. In dieser Versionsflut stechen die LTS-Versionen (Long Term Support) heraus. Zuletzt war das Java 11, aktuell ist es Java 17. Eine gute Gelegenheit also, einen Blick auf die Neuerungen von Java der letzten Jahre zu werfen.

Ich beschränkt mich in diesem Artikel auf die (aus meiner Sicht) wichtigsten Neuerungen. Daneben gibt es eine Menge weiterer neuer Features, die je nach Zielgruppe durchaus interessant sind. Werfen Sie gegebenenfalls einen Blick auf die Links am Ende dieses Artikels!

Oracle JDK wieder uneingeschränkt frei

In den vergangenen Jahren hat Oracle versucht, den JDK-Zugang für die kommerzielle Nutzung kostenpflichtig zu machen. Zwar standen die halbjährlichen Java-Versionen stets zum kostenfreien Download zur Verfügung, aber bei den LTS-Version wollte Oracle Geld für Updates sehen.

Man kann sich natürlich auch ins Knie schießen. Der wenig überraschende Effekt war, dass gefühlt jede größere IT-Firma ein eigenes JDK auf OpenJDK-Basis ins Leben rief. (Der Java-Quellcode ist ja Open Source.) Unter Privatanwendern außerhalb der Linux-Szene waren vor allem die Downloads der Seite https://adoptopenjdk.net/ beliebt. Mittlerweile ist daraus das Projekt Adoptium geworden, an dem unter anderem IBM, Microsoft und Red Hat mitarbeiten.

Wie dem auch sei, seit Java 17 bietet auch Oracle das JDK wieder uneingeschränkt frei an. Natürlich braucht es dazu eine eigene Lizenz, die Oracle No-Fee Terms and Conditions, leicht zu merken als NFTC. Wem fällt das alles nur ein?

Records

Die vermutlich spannendste Neuerung der letzten drei Jahre sind Records. Das neue Schlüsselwort record bietet einen besonders effizienten Weg an, um Klassen zu definieren, deren Objekte unveränderlich (immutable) sind. Die Zeile

public record Rectangle(double length, double width) { }

definiert eine Klasse mit den unveränderlichen Instanzvariablen length und width, die über die gleichnamigen Methoden ausgelesen werden können (length() und width()). Einen geeigneten Konstruktor bekommen Sie frei Haus geliefert, ebenso brauchbare Implementierungen von toString, equals und hashCode.

Bei Bedarf können Sie Records mit eigenen Methoden und (mit Einschränkungen) mit eigenem Konstruktor-Code ausstatten. Records können Schnittstellen implementieren, aber keine Vererbung nutzen (also weder selbst erben noch als Basis für Vererbung dienen).

Besonders gut eignen sich Records für Data Transfer Objects (DTOs). Dieser Fachbegriff bezeichnet den Datenaustausch zwischen Methoden oder anderen Software-Komponenten.

Mehrzeilige Zeichenketten

Ebenfalls jahrelang auf der Wunschliste vieler Java-Entwickler stand die Möglichkeit, mehrzeilige Zeichenketten zu formulieren. Wie in einigen anderen Programmiersprachen werden solche Zeichenketten mit """ eingeleitet und abgeschlossen.

String sql = """
    SELECT books.id, title, publId, name 
    FROM books 
    JOIN publishers ON publId = publishers.id  
    WHERE books.id >= 167""";

// entspricht in älteren Java-Versionen:
String sql =
    "SELECT books.id, title, publId, name\n" +
    "FROM books\n" +
    "JOIN publishers ON publId = publishers.id\n" +
    "WHERE books.id >= 167";

Die neue Syntax mit """ hat drei Besonderheiten:

  • Nach den einleitenden Zeichen """ muss eine neue Zeile folgen.
  • Nur wenn die abschließenden Zeichen """ in einer neuen Zeile angegeben
    werden, endet auch die letzte Zeile mit dem Zeilenumbruchzeichen \n.

  • Die Position der abschließenden Zeichen """ bestimmt die Einrücktiefe des
    Texts.

Der letzte Punkt erfordert noch einmal ein Beispiel:

String s = """
       abc
         efg
    """; 
// entspricht s = "   abc\n" +
//                "     efg\n";

Weil """ hier gegenüber dem Inhalt der Zeichenkette drei Zeichen weiter links platziert wurde, beginnt jede Zeile der Zeichenkette mit drei Leerzeichen.

Endlich lesbare switch-Ausdrücke

Die in den Grundzügen von C übernommene Syntax von switch war in der Vergangenheit so, dass man Einsteigern eigentlich nur davon abraten konnte. Die alte Syntax bleibt weiterhin gültig, aber parallel dazu besteht nun eine zweite Variante, die in manchen Fällen tatsächlich präzisen, gut lesbaren Code liefert:

switch(ausdruck) {
    case konstante1, k2 -> { anweisung1a; a1b; }
    case k3, k4, k5     -> { a2a; a2b; a3b}
    default             -> { a3a; a3b; }
}

Wenn der switch-Ausdruck dazu dient, einen Wert einzustellen, gibt es noch eine Vereinfachung. Wie in Kotlin können Sie die gesamte switch-Konstruktion als Ausdruck betrachten und das Ergebnis direkt einer Variablen zuweisen. Vergessen Sie nicht, dass Sie in diesem Fall den gesamten Ausdruck mit einem Strichpunkt beenden müssen!

int result = switch(ausdruck) {
               case konstante1, k2 -> 1;
               case k3, k4, k5     -> 2;
               default             -> -1;
             };

Abschließend noch ein konkretes Beispiel:

String month = "März";
int days =  
    switch(month) {
        case "Januar", "März", "Mai", "Juli", "August",
             "Oktober", "Dezember" -> 31; 
        case "April", "Juni", "September", 
             "November" -> 30;      
        case "Februar"  -> 28; // oder 29, wenn Schaltjahr
        default -> 0;
    };

Mehr Komfort für instanceof

Der Operator instanceof wird häufig vor einem Downcast verwendet, um sicherzustellen, dass die Variable tatsächlich ein Objekt des erforderlichen Typs enthält:

if(bike instanceof EBike) {
    var eb = (EBike)bike;             
    // eb gibt Zugriff auf EBike-spezifische Methoden und -Variablen 
}

In Java 17 lässt sich der Code wie folgt verkürzen:

if(bike instanceof EBike eb) {
    // eb gibt Zugriff auf EBike-spezifische Methoden und -Variablen 
}

Innerhalb des if-Blocks steht nun die Variable eb mit dem Datentyp EBike zur Verfügung.

Nächste LTS-Version vermutlich schon 2023

Oracle plant, auf einen zweijährigen LTS-Zyklus umzusteigen. Ganz fix ist das noch nicht, aber wenn der Plan realisiert wird, dann wird Java 21 die nächste LTS-Version sein und im Herbst 2023 erscheinen.

Fazit

Ich bleibe bei meiner Ansicht: Das bessere Java heißt heute Kotlin.

Aber man muss Oracle zugestehen: Im Rahmen des engen Kompatibilitätskorsetts ist gelungen, Java in wesentlichen Details zu modernisieren. Begeisterung ruft das kaum hervor, aber es natürlich dennoch ein Fortschritt für alle, die im Java-Kosmos gefangen sind. Die Dominanz von Java in bestimmten Segmenten der Software-Industrie wird damit weiter zementiert.

Quellen, Links, Downloads

❌
❌