$30 off During Our Annual Pro Sale. View Details »

State of Netty (2016)

Trustin Lee
February 16, 2016

State of Netty (2016)

The slides for my talk at LINE Developer Meetup in Fukuoka on February 16, 2016

An older version with a video: https://speakerdeck.com/trustin/state-of-netty-2014

Trustin Lee

February 16, 2016
Tweet

More Decks by Trustin Lee

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. 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

    View Slide

  5. 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

    View Slide

  6. Since then …
    3.0.0 in October 2008
    HTTP
    WebSocket
    SPDY 2 & 3
    OpenSSL

    3.9.2 in June 2014

    View Slide

  7. 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

    View Slide

  8. 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

    View Slide

  9. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  14. Thank you!
    netty.io

    View Slide