Upgrade to Pro — share decks privately, control downloads, hide ads and more …

What if everything was a database [JavaZone`17]

What if everything was a database [JavaZone`17]

Creating software is hard and unnecessarily complex. Layers upon layers of complexity and abstractions are common among applications, frameworks, and libraries we see and use.

In this session, we’ll talk about Eve — the programming language that tries to lower the complexity of software development by treating everything as a record that you read and write. Eve offers a human-first programming platform and makes a number of interesting design choices, the most prominent of which are reactive blocks of code. It allows you to focus on what you want to achieve, rather than how you want to achieve it.

Join me to look at Eve, the platform and the language. We’ll cover how treating everything as a record allows Eve to be a declarative programming language and how it provides an alternative solution for the typical use-cases in software development.
You'll get inspired to find whether you can even do things Eve offers out-of-the-box in your Java projects and will be eager to try tools that promise to help you do it :)

Oleg Šelajev

September 13, 2017
Tweet

More Decks by Oleg Šelajev

Other Decks in Programming

Transcript

  1. WHAT IF EVERYTHING
    WAS A DATABASE?
    Oleg Šelajev
    ZeroTurnaround

    View Slide

  2. @shelajev

    View Slide

  3. View Slide

  4. Attention Overflow room!
    Room 2 is the best!

    View Slide

  5. View Slide

  6. https://hackernoon.com/how-eve-unifies-your-entire-programming-stack-900ca80c58a7

    View Slide

  7. View Slide

  8. https://github.com/alex/what-happens-when
    684 lines of text

    View Slide

  9. View Slide

  10. View Slide

  11. All non-trivial
    abstractions,
    to some
    degree, are
    leaky.
    https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/

    View Slide

  12. View Slide

  13. View Slide

  14. http://witheve.com/

    View Slide

  15. SYNTAX

    View Slide

  16. View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. View Slide

  22. STANDARD LIBRARY

    View Slide

  23. View Slide

  24. View Slide

  25. Demo!

    View Slide

  26. View Slide

  27. GOOD PARTS

    View Slide

  28. View Slide

  29. View Slide

  30. View Slide

  31. View Slide

  32. PHILOSOPHY
    Small blocks that fit into a broader story
    Programming by composition
    Global correctness
    Visualization of computations
    Simplicity

    View Slide

  33. GRAPHQL-ISH
    Uniform data model + Uniform set of operations

    View Slide

  34. https://hackernoon.com/when-logic-programming-meets-cqrs-1137ab2a5f86
    CQRS

    View Slide

  35. ACTORS
    Modify local state
    Receive messages
    Send messages / Spawn actors

    View Slide

  36. SINGLE VISION
    Declarative programming
    Database data (keys, triggers, etc.)
    Dependency tracking
    Debugging & Watch expressions
    Hot reloading
    Serializable state
    Performance profiling
    Distributed data & computation

    View Slide

  37. View Slide

  38. SOFTWARE TRANSACTIONAL
    MEMORY

    View Slide

  39. STM
    import akka.stm.*;
    final Ref ref = new Ref(0);
    new Atomic() {
    public Object atomically() {
    return ref.set(5);
    }
    }.execute();

    View Slide

  40. STM
    final TransactionalMap users = new
    TransactionalMap();
    // fill users map (in a transaction)
    new Atomic() {
    public Object atomically() {
    users.put("bill", new User("bill"));
    users.put("mary", new User("mary"));
    users.put("john", new User("john"));
    return null;
    }
    }.execute();

    View Slide

  41. View Slide

  42. View Slide

  43. CQRS, KAFKA, KAFKA STREAMS
    https://www.confluent.io/blog/event-sourcing-cqrs-stream-processing-apache-kafka-whats-connection/

    View Slide

  44. CQRS, KAFKA, KAFKA STREAMS
    Find Tim, he’s the best!
    Thursday

    View Slide

  45. IF IT IS TOO HARD

    View Slide

  46. View Slide

  47. MOBX.JS
    https://mobx.js.org/

    View Slide

  48. SPRING 5 & PROJECT REACTOR
    Thursday

    View Slide

  49. STREAM DEBUGGER

    View Slide

  50. View Slide

  51. View Slide

  52. View Slide

  53. View Slide

  54. View Slide

  55. http://blog.takipi.com/oracle-java-mission-control-the-ultimate-guide/#jmc
    -XX:+FLIGHTRECORDER

    View Slide

  56. http://blog.takipi.com/oracle-java-mission-control-the-ultimate-guide/#jmc

    View Slide

  57. View Slide

  58. View Slide

  59. View Slide

  60. [email protected]
    @shelajev
    Drop me a line!

    View Slide