Netzwerkapplikationsentwicklung mit Netty

Netzwerkapplikationsentwicklung mit Netty

Norman Maurer


Nachdem in den letzten Artikeln der Netty-Reihe [1] verschiedenste Anwendungsszenarien beleuchtet wurden, widmet sich der letzte Artikel der Netty-Serie dem anstehendem „Major-Release“ von Netty 4.0.0.Final und den hierdurch entstandenen Änderungen. Zum Zeitpunkt des Artikels wurde die wohl letzte Alphaversion von Netty 4.0.0 veröffentlicht. Somit kann davon ausgegangen werden, dass das Final-Release in Kürze folgen wird. Netty kann wie immer entweder auf der Projektwebseite [2] oder via Maven heruntergeladen werden.

ArtikelserieTeil 1: Entwicklung von Netzwerkapplikationen Teil 2: Mit Netty WebSockets unterstützenTeil 3: Netty via SPDYTeil 4: Next Major here we come: Neues in Netty 4.0.0

Netty 4 beherbergt eine Vielzahl von Änderungen zur vorherigen 3.x-Serie, wobei einige schwerer ins Gewicht fallen als andere. Im Folgenden werden die einzelnen Änderungen vorgestellt bzw. beleuchtet. Hierbei beschränkt sich der Artikel auf die „wichtigsten“ Änderungen. Wer einen Überblick über alle Features erhalten will, sollte ihn durch den Blick auf Nettys Bug-Tracker erhalten.

Mit der Veröffentlichung von Netty 4.0.0 wird das Projekt nun in mehreren einzelnen Libraries (Module) zur Verfügung gestellt. Hierdurch erhofft man sich, dass es in Zukunft für die Benutzer einfacher wird, nur spezifische Teile von Netty zu verwenden. Des Weiteren wird es hierdurch einfacher, neue Funktionen/Features einzuführen, ohne den „Kern“ von Netty zu beeinträchtigen.

ChannelHandler: was hat sich geändert?

Wie auch in Netty 3.x wird in 4.x ein ChannelHandler implementiert, um die Businesslogik abzubilden. Hier hat sich vom Konzept nichts geändert, doch der Schein trügt. Zwar hat sich der Grundgedanke nicht geändert, jedoch die Art und Weise wie ein solcher ChannelHandler aussieht schon. In früheren Versionen von Netty war alles Event-gesteuert. Dies hatte zur Folge, dass jede I/O-Operation die Erzeugung eines ChannelEvents zur Folge hatte. Des Weiteren wurde für jede Schreibe- und Leseoperation ein ChannelBuffer erzeugt, der als „Container“ der Daten verwendet wurde. Durch das hier beschriebene Design wurde der Kern von Netty relativ einfach gehalten. Leider brachte es einige Probleme mit sich:

GC-Pressure: Durch das Allozieren von vielen Objekten in kurzer Zeit wurde eine so genannte GC-Pressure erzeugt. Hierbei ist der Garbage Collector durchweg beschäftigt, die nicht mehr verwendeten Objekte aus dem Heap zu entfernen.Resource exhausting: Durch die Erzeugung von ChannelBuffer-Instanzen e...

Netzwerkapplikationsentwicklung mit Netty

Netzwerkapplikationsentwicklung mit Netty

Norman Maurer


Nachdem in den letzten Artikeln der Netty-Reihe [1] verschiedenste Anwendungsszenarien beleuchtet wurden, widmet sich der letzte Artikel der Netty-Serie dem anstehendem „Major-Release“ von Netty 4.0.0.Final und den hierdurch entstandenen Änderungen. Zum Zeitpunkt des Artikels wurde die wohl letzte Alphaversion von Netty 4.0.0 veröffentlicht. Somit kann davon ausgegangen werden, dass das Final-Release in Kürze folgen wird. Netty kann wie immer entweder auf der Projektwebseite [2] oder via Maven heruntergeladen werden.

ArtikelserieTeil 1: Entwicklung von Netzwerkapplikationen Teil 2: Mit Netty WebSockets unterstützenTeil 3: Netty via SPDYTeil 4: Next Major here we come: Neues in Netty 4.0.0

Netty 4 beherbergt eine Vielzahl von Änderungen zur vorherigen 3.x-Serie, wobei einige schwerer ins Gewicht fallen als andere. Im Folgenden werden die einzelnen Änderungen vorgestellt bzw. beleuchtet. Hierbei beschränkt sich der Artikel auf die „wichtigsten“ Änderungen. Wer einen Überblick über alle Features erhalten will, sollte ihn durch den Blick auf Nettys Bug-Tracker erhalten.

Mit der Veröffentlichung von Netty 4.0.0 wird das Projekt nun in mehreren einzelnen Libraries (Module) zur Verfügung gestellt. Hierdurch erhofft man sich, dass es in Zukunft für die Benutzer einfacher wird, nur spezifische Teile von Netty zu verwenden. Des Weiteren wird es hierdurch einfacher, neue Funktionen/Features einzuführen, ohne den „Kern“ von Netty zu beeinträchtigen.

ChannelHandler: was hat sich geändert?

Wie auch in Netty 3.x wird in 4.x ein ChannelHandler implementiert, um die Businesslogik abzubilden. Hier hat sich vom Konzept nichts geändert, doch der Schein trügt. Zwar hat sich der Grundgedanke nicht geändert, jedoch die Art und Weise wie ein solcher ChannelHandler aussieht schon. In früheren Versionen von Netty war alles Event-gesteuert. Dies hatte zur Folge, dass jede I/O-Operation die Erzeugung eines ChannelEvents zur Folge hatte. Des Weiteren wurde für jede Schreibe- und Leseoperation ein ChannelBuffer erzeugt, der als „Container“ der Daten verwendet wurde. Durch das hier beschriebene Design wurde der Kern von Netty relativ einfach gehalten. Leider brachte es einige Probleme mit sich:

GC-Pressure: Durch das Allozieren von vielen Objekten in kurzer Zeit wurde eine so genannte GC-Pressure erzeugt. Hierbei ist der Garbage Collector durchweg beschäftigt, die nicht mehr verwendeten Objekte aus dem Heap zu entfernen.Resource exhausting: Durch die Erzeugung von ChannelBuffer-Instanzen e...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang