Netty für Java: Vollständiges Tutorial mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist Netty und wozu braucht man es?

Netty ist eine asynchrone Netzwerkbibliothek für Java, mit der sich hochperformante Server- und Client-Anwendungen erstellen lassen. Sie abstrahiert die Komplexität von Sockets, Threads und NIO (Non-blocking I/O) und bietet Entwicklern eine einfache und leistungsstarke API für den Aufbau von Netzwerkanwendungen.

Warum Netty verwenden?

  • Hohe Leistung: Netty basiert auf Java NIO und kann tausende gleichzeitige Verbindungen verarbeiten, ohne für jede Verbindung einen eigenen Thread zu erstellen.
  • Asynchronität: Alle Ein-/Ausgabeoperationen blockieren den Ausführungsthread nicht, was die Skalierbarkeit von Anwendungen verbessert.
  • Einfache Bedienung: Trotz der Komplexität der zugrunde liegenden Technologien bietet Netty eine klare und prägnante API.
  • Flexibilität: Die Architektur von Netty basiert auf einer Kette von Handlern (Pipeline), sodass sich die Datenverarbeitungslogik leicht hinzufügen, entfernen oder ändern lässt.
  • Unterstützung verschiedener Protokolle: Netty bietet integrierte Unterstützung für HTTP, WebSocket, SSL/TLS, UDP und viele weitere Protokolle.

Netty wird in zahlreichen Projekten eingesetzt, darunter Apache Cassandra, Apache Spark, Elasticsearch, Twitter Finagle und viele andere.

Netty Installation

Netty ist eine Java-Bibliothek und wird daher über ein Abhängigkeitsverwaltungssystem wie Maven oder Gradle installiert. Anders als bei Python oder JavaScript gibt es hier keinen pip install- oder npm install-Befehl.

Installation mit Maven

Fügen Sie die folgende Abhängigkeit in Ihre pom.xml-Datei ein:

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-all</artifactId>
    <version>4.1.109.Final</version>
</dependency>

Installation mit Gradle

Fügen Sie in Ihre build.gradle-Datei ein:

implementation 'io.netty:netty-all:4.1.109.Final'

Installation mit Gradle (Kotlin DSL)

implementation("io.netty:netty-all:4.1.109.Final")

Nachdem Sie die Abhängigkeit hinzugefügt haben, lädt Ihre IDE (z. B. IntelliJ IDEA oder Eclipse) die Bibliothek automatisch herunter.

Schnellstart: Ein einfacher HTTP-Server

Lassen Sie uns einen einfachen HTTP-Server erstellen, der auf jede Anfrage mit "Hello, World!" antwortet.

import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.codec.http.HttpServerCodec;
import io.netty.handler.codec.http.HttpObjectAggregator;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.handler.codec.http.DefaultFullHttpResponse;
import io.netty.handler.codec.http.FullHttpResponse;
import io.netty.handler.codec.http.HttpRequest;
import io.netty.handler.codec.http.HttpResponse;
import io.netty.handler.codec.http.HttpVersion;
import io.netty.buffer.Unpooled;
import io.netty.util.CharsetUtil;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;

public class SimpleHttpServer {

    public static void main(String[] args) throws Exception {
        EventLoopGroup bossGroup = new NioEventLoopGroup(1);
        EventLoopGroup workerGroup = new NioEventLoopGroup();

        try {
            ServerBootstrap b = new ServerBootstrap();
            b.group(bossGroup, workerGroup)
             .channel(NioServerSocketChannel.class)
             .childHandler(new ChannelInitializer<SocketChannel>() {
                 @Override
                 public void initChannel(SocketChannel ch) {                    

Empfehlungen