Save 37% off PRO during our Black Friday Sale! »

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 :)

5d01eb7205b787b5991db85a11ee5e68?s=128

Oleg Šelajev

September 13, 2017
Tweet

Transcript

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

  2. @shelajev

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

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

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

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

  12. None
  13. None
  14. http://witheve.com/

  15. SYNTAX

  16. None
  17. None
  18. None
  19. None
  20. None
  21. None
  22. STANDARD LIBRARY

  23. None
  24. None
  25. Demo!

  26. None
  27. GOOD PARTS

  28. None
  29. None
  30. None
  31. None
  32. PHILOSOPHY Small blocks that fit into a broader story Programming

    by composition Global correctness Visualization of computations Simplicity
  33. GRAPHQL-ISH Uniform data model + Uniform set of operations

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

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

    actors
  36. SINGLE VISION Declarative programming Database data (keys, triggers, etc.) Dependency

    tracking Debugging & Watch expressions Hot reloading Serializable state Performance profiling Distributed data & computation
  37. None
  38. SOFTWARE TRANSACTIONAL MEMORY

  39. STM import akka.stm.*; final Ref<Integer> ref = new Ref<Integer>(0); new

    Atomic() { public Object atomically() { return ref.set(5); } }.execute();
  40. STM final TransactionalMap<String, User> users = new TransactionalMap<String, User>(); //

    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();
  41. None
  42. None
  43. CQRS, KAFKA, KAFKA STREAMS https://www.confluent.io/blog/event-sourcing-cqrs-stream-processing-apache-kafka-whats-connection/

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

  45. IF IT IS TOO HARD

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

  48. SPRING 5 & PROJECT REACTOR Thursday

  49. STREAM DEBUGGER

  50. None
  51. None
  52. None
  53. None
  54. None
  55. http://blog.takipi.com/oracle-java-mission-control-the-ultimate-guide/#jmc -XX:+FLIGHTRECORDER

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

  57. None
  58. None
  59. None
  60. oleg@zeroturnaround.com @shelajev Drop me a line!