Informieren Sie sich sofort über neue Funktionen von Java 7 bis Java 9

Einführung

Ich habe in den letzten zwei Jahren Front-End-Entwicklung mit TypeScript durchgeführt. Ich habe die serverseitige Entwicklung mit Java durchgeführt, aber die letzte Version, die ich verwendet habe, war Java 7. Java 9 wurde im September 2017 veröffentlicht und scheint völlig zurückgelassen zu sein, also von Java 7 auf Java 9 Ich werde versuchen, die geänderten Punkte sofort nachzuholen.

Wichtige neue Funktionen in Java 8

Java 8 wurde im März 2014 veröffentlicht. Java 8 bietet präzisere Funktionen zum Schreiben von Code wie Lambda-Ausdrücke und die Stream-API. Neu in Java 8 ist, dass der Code intelligenter und Java etwas ausgefeilter ist.

Lambda-Stil

Java kann endlich Lambda-Ausdrücke verwenden.

java7


		//Verwenden Sie eine anonyme Klasse
		Arrays.sort(array, new Comparator<Student>() {
			@Override
			public int compare(Student s1, Student s2) {
				return s1.getAge() - s2.getAge();
			}
		});

In Java8 können Sie mit dem Pfeiloperator wie folgt schreiben. Es gibt viele Möglichkeiten, einen Lambda-Ausdruck zu schreiben, aber ich werde ihn hier weglassen.

java8


		//Der Lambda-Ausdruck kann verwendet werden
		Arrays.sort(array, (s1, s2) -> s1.getAge() - s2.getAge());

Sie können auch eine Methode definieren, mit der der Benutzer einen Lambda-Ausdruck verwenden kann, indem Sie eine Methode schreiben, die eine Funktionsschnittstelle als Argument verwendet.

Stream API Eine praktische API für die Handhabung von Arrays usw. wurde hinzugefügt. Die Verarbeitung, die für usw. bis Java 7 verwendet wurde, kann nun in der Methodenkette kurz beschrieben werden.

java7


String[] list = new String[] {
				"ABC", "CDE", "EFG"
		};

		//Verwenden Sie Java7 als Anweisung
		String target = "";
		for (String str : list) {
			if (str.contains("C")) {
				target += str;
			}
		}

java8


		Optional<String> result = Arrays.stream(list).filter(s -> s.contains("C")).reduce((v1, v2) -> v1 + v2);

Optional Optional ist eine API für den guten Umgang mit Nullen. Sie können null umbrechen und schreiben, was zu tun ist, wenn es null sein könnte.

Beispielsweise bis Java 7 der Code, der wie folgt auf Null geprüft wurde

java7


		String str1 = "hoge";
		if (str1 != null) {
			System.out.println(str1);
		}

Wenn Sie Optional verwenden, können Sie wie folgt ordentlich schreiben.

java8


		Optional<String> str2 = Optional.ofNullable("hoge");
		str2.ifPresent(x -> System.out.println(x));

Auch der folgende Code

java7


		String str1 = "hoge";
		if (str1 != null) {
			System.out.println(str1);
		} else {
			System.out.println("Null");
		}

Sie können es ordentlich wie folgt schreiben.

java8


		String str2 = Optional.ofNullable("hoge").orElse("Null");
		System.out.println(str2);

Date and Time API In java8 wurde ein neues java.time-Paket hinzugefügt und verschiedene Klassen für die Behandlung von Datum und Uhrzeit basierend auf ISO8601 wurden hinzugefügt. Die Mindest-APIs, an die Sie sich erinnern sollten, sind:

Neue API Überblick
LocalDateTime Datum und Uhrzeit ohne Zeitzone
ZonedDateTime Datum und Uhrzeit mit Zeitzone
DateTimeFormatter Formatierer. Entspricht SimpleDateFormat

interface Sie können jetzt eine Standardimplementierung für die Schnittstelle festlegen. Sie können Methoden und statische Methoden wie folgt schreiben. Die Standardmethode kann in der Implementierungsklasse überschrieben werden.

java8


public interface IDefaultSample {

	default void Print(String value) {
		System.out.println(value);
	}

	public static void Hello() {
		System.out.println("hello");
	}
}

Geben Sie eine Anmerkung ein

Bis zu Java7 war es eine Annotation, die nur zum Deklarieren von Klassen und Methoden verwendet werden konnte, jedoch von Java8 Es kann jetzt auch für Typen (von Variablen und Generika) verwendet werden.

Wichtige neue Funktionen in Java 9

Als nächstes folgen die Änderungen von Java8 zu Java9. Die vielleicht größte Neuerung ist die Modularisierung. Darüber hinaus scheint es viele funktionale Verbesserungen zu geben.

Modulares "Projektpuzzle"

Es ist jetzt möglich, Abhängigkeiten, öffentliche Einstellungen, Versionseinstellungen usw. in Einheiten festzulegen, die als Module bezeichnet werden, indem mehrere Klassen zusammengefasst werden.

Es scheint, dass Sie ein Modul einfach definieren können, indem Sie eine Datei mit dem Namen "module-info.java" schreiben. Ich habe auf das Programm in [hier] verwiesen (http://openjdk.java.net/projects/jigsaw/quick-start).

Deklarieren Sie in module-info.java das zu veröffentlichende Modul und das zu veröffentlichende Paket wie folgt. Hier wird festgelegt, dass das Paket org.astro durch Deklarieren des Moduls org.astro veröffentlicht wird.

** Beschreibung der Erklärung ** --module: Deklaration des Moduls --exports: Geben Sie die zu veröffentlichenden Pakete an

java:src/org.astro/module-info.java


module org.astro {
    exports org.astro;
}

java:src/org.astro/org/astro/World.java


package org.astro;
  public class World {
    public static String name() {
        return "world";
    }
}

Im Folgenden werden die abhängigen Module angegeben. Weil das com.greetings-Modul das org.astro-Modul in seiner inneren Klasse verwendet Diese Erklärung ist erforderlich.

** Beschreibung der Erklärung **

java:src/com.greetings/module-info.java


module com.greetings {
    requires org.astro;
}

java:src/com.greetings/com/greetings/Main.java


package com.greetings;
import org.astro.World;
public class Main {
    public static void main(String[] args) {
        System.out.format("Greetings %s!%n", World.name());
    }
}

Details finden Sie unter hier.

JShell Die jshell, eine REPL von Java, ist installiert. REPL soll ** R ** (Lesen) lesen, ** E ** (Auswerten) auswerten und ** P ** (Drucken) Ausgabe ** L ** (Schleife) wiederholen. Einige sind in anderen Sprachen enthalten.

Um es zu verwenden, übergeben Sie den Pfad an das JDK oder gehen Sie zum JDK und führen Sie den Befehl jshell aus.

Jetzt können Sie die Java-Syntax sofort wie folgt ausführen: Ich kann mir nicht viele Verwendungszwecke vorstellen, aber es könnte ein guter Ort sein, um ein wenig Code auszuprobieren.

SnapCrab_コマンド プロンプト - jshell_2017-12-17_15-14-15_No-00.png

private Methode auf der Schnittstelle

Zu den in Java8 hinzugefügten Funktionen können jetzt private Methoden hinzugefügt werden, mit denen Standardmethoden und statische Methoden in der Schnittstelle beschrieben werden können.

Stream-API-Funktion hinzugefügt

Die Methoden takeWhile und dropWhile wurden der in java8 hinzugefügten Stream-API hinzugefügt.

Reactive Streams Ein Framework, das das Publish / Subscribe-Modell übernimmt, wurde hinzugefügt, um asynchrone Streams zu realisieren. Es wird ausführlich in diesem Artikel von ITpro erläutert.

schließlich

Es enthält viele andere Änderungen, aber dieses Mal haben wir uns beeilt, die wichtigsten Änderungen zu sehen.

Recommended Posts

Informieren Sie sich sofort über neue Funktionen von Java 7 bis Java 9
Neue Funktionen von Java7 bis Java8
Java1.8 neue Funktionen
Änderungen von Java 8 zu Java 11
Summe von Java_1 bis 100
Von Java zu Ruby !!
6 Funktionen, die ich nach meiner Rückkehr von Scala nach Java verpasst habe
Einführung von New Relic in Java-Apps, die auf Heroku ausgeführt werden
Migration von Cobol nach JAVA
Stellen Sie eine Verbindung von Java zu PostgreSQL her
Java 14 neue Funktionen, mit denen Code geschrieben werden kann
Von ineffektivem Java zu effektivem Java
Java Konvertiert unterschiedliche Zeichencodes gleichzeitig in denselben Zeichencode
Hinweise zum Erstellen der Kotlin-Entwicklungsumgebung und zur Migration von Java nach Kotlin
[Java] Von der Erstellung neuer Projekte bis zur automatischen Realisierung von Tests / Builds / Bereitstellungen
Java 9 neue Funktionen und Beispielcode
Java soll ab heute dabei sein
Von Java zu VB.NET-Writing Kontrastmemo-
Java, Schnittstelle für Anfänger
Hinweise zur Migration von CircleCI 1.0 auf 2.0
Der Weg von JavaScript nach Java
[Java] Konvertierung von Array zu Liste
Wechseln Sie in einem neuen Ruby on Rails-Projekt von SQLite3 zu PostgreSQL
[Java] Ablauf von der Einführung von STS bis zur Bestätigung der dynamischen Seite auf dem lokalen Host (2/3)
[Java] So rufen Sie die von HTML auf der Serverseite übergebenen Parameter ab
[Java] Ablauf von der Einführung von STS bis zur Bestätigung der dynamischen Seite auf dem lokalen Host (1/3)
So überprüfen Sie, ob Java auf einem Mac installiert ist
Kick ShellScript auf dem Server von Java
Konvertieren Sie von der Java-UTC-Zeit in die JST-Zeit
So wechseln Sie Java-Versionen auf dem Mac
Stellen Sie mit Eclipse eine Verbindung von Java zu MySQL her
Von der Installation von Eclipse bis zur Ausführung von Java (PHP)
Post to Slack von Play Framework 2.8 (Java)
Java: So senden Sie Werte von Servlet zu Servlet
[Java] Fluss vom Quellcode zur Ausführung
Einführung in die Überwachung von Java Touching Prometheus
Vorsichtsmaßnahmen bei der Migration von VB6.0 auf JAVA
Memo für die Migration von Java nach Kotlin
Typkonvertierung vom Java Big Decimal-Typ zum String-Typ
Schritte zum Registrieren einer Java-Datei auf GitHub
Git-Befehl, auf den neue Ingenieure zurückblicken sollten [Von Zeit zu Zeit aktualisiert]