Slide 1

Slide 1 text

State of Netty @trustin @netty_project 16-Feb-2016

Slide 2

Slide 2 text

Netty is … Java framework Simplifies socket client · server development Fast yet maintainable Asynchronous Event-driven

Slide 3

Slide 3 text

Many organic. Very forks. Wow! 180+ people in repo history 29th in most starred Java · Android project 20th in most forked Java · Android project

Slide 4

Slide 4 text

What do people use it for? 1 Web services Instant messaging Multiplayer games Storage · Database High frequency trading Media streaming 1 http://netty.io/wiki/adopters.html http://netty.io/testimonials

Slide 5

Slide 5 text

Long history short 2001.12.16. First release 1 2004.06.07. Major revision 2 2004.09.28. Moving effort to Apache MINA 3 2006.10.27. Apache MINA becomes a TLP 4 2008.06.11. Moving effort back again 5 1 http://t.motd.kr/ko/archives/1930 2 http://www.theserverside.com/news/thread.tss?thread_id=26416 3 http://t.motd.kr/ko/archives/1693 4 http://t.motd.kr/ko/archives/1560 5 http://t.motd.kr/ko/archives/1502

Slide 6

Slide 6 text

Since then … 3.0.0 in October 2008 HTTP WebSocket SPDY 2 & 3 OpenSSL … 3.9.2 in June 2014

Slide 7

Slide 7 text

What we learned in 3 Object allocations are expensive. Memory bandwidth Small garbage is garbage anyway. Some constructs are generally useful. Byte buffers Listenable futures Ill-defined thread model is painful. SSL handler

Slide 8

Slide 8 text

4.0 1 Event objects → Event methods Reference-counted buffers + pool Modularization Well-defined thread model Improved API user experience /dev/epoll · OpenSSL 1 https://blog.twitter.com/2013/netty-4-at-twitter-reduced-gc-overhead http://netty.io/wiki/new-and-noteworthy-in-4.0.html

Slide 9

Slide 9 text

4.1 1 Protocols - Memcache · DNS · MQTT · STOMP · HAProxy Streamed XML · JSON Asynchronous DNS lookup SOCKS · HTTP proxy support More flexible thread model Android support 1 Currently at release candidate - http://netty.io/wiki/new-and-noteworthy-in-4.1.html

Slide 10

Slide 10 text

Are we there yet? “Hell no! :-)”

Slide 11

Slide 11 text

Our mission … or ambition! “Opening the future of network programming”

Slide 12

Slide 12 text

Beyond 4.1 Protocols - Redis · MySQL · PostgreSQL … kqueue · IOCP … Metrics Android testsuite Java 8 lambda friendliness Better user guide · Javadoc

Slide 13

Slide 13 text

Beyond 4.1 (Cont’d) Accurate backpressure User-space TCP · UDP stack Non-blocking I/O friendly parser generator Investment in alternative system languages

Slide 14

Slide 14 text

Thank you! netty.io