<a href="https://www.manning.com/books/data-oriented-programming-in-java" rel="nofollow">https://www.manning.com/books/data-oriented-programming-in-j...</a><p>This book is a distillation of everything I’ve learned about what effective development looks like in Java (so far!). It's about how to organize programs around data "as plain data" and the surprisingly benefits that emerge when we do. Programs that are built around the data they manage tend to be simpler, smaller, and significantly easier understand.<p>Java has changed radically over the last several years. It has picked up all kinds of new language features which support data oriented programming (records, pattern matching, `with` expressions, sum and product types). However, this is not a book about tools. No amount of studying a screw-driver will teach you how to build a house. This book focuses on house building. We'll pick out a plot of land, lay a foundation, and build upon it house that can weather any storm.<p>DoP is based around a very simple idea, and one people have been rediscovering since the dawn of computing, "representation is the essence of programming." When we do a really good job of capturing the data in our domain, the rest of the system tends to fall into place in a way which can feel like it’s writing itself.<p>That's my elevator pitch! The book is currently in early access. I hope you check it out. I'd love to hear your feedback.<p>You can get 50% off (thru October 9th) with code `mlkiehl`
<a href="https://www.manning.com/books/data-oriented-programming-in-java" rel="nofollow">https://www.manning.com/books/data-oriented-programming-in-j...</a>
Let me start by saying (as someone who has written a few technical books of his own)—Congratulations!<p>I am sure you (assuming this is your first book) are learning that this is a labor of love, and I wish you the very best in this endeavor. You should be proud!<p>I was exposed to "data oriented programming" thanks to Clojure—wherein maps/sets are the constructs used to pass data (as plain data) around, with simple functions that work with the data, as opposed to the traditional OO (hello ORM) that mangles data to fit some weird hierarchy.<p>Java's recent innovations certainly make this a lot easier, and I am glad someone is looking at propagating a much needed message.<p>I will take a look at the book, but I wish you the very best.
How have you dealt with the current situation in Java where several new and important language features are still "preview" and are subject to being withdrawn? The possibility that these features might ultimately disappear is not theoretical: String Templates has been removed[1] from 23 as what would have been the "third preview," for example.<p>The (likely debatable) list of features in 23 that a.) remain preview/incubator and b.) appear relevant to a work on data oriented Java programming are:<p><pre><code> Primitive Types in Patterns, instanceof, and switch (Preview) – JEP 455
Implicitly Declared Classes and Instance Main Methods (Third Preview) – JEP 477
Flexible Constructor Bodies (Second Preview) – JEP 482
Vector API (Eighth Incubator) - JEP 469
Scoped Values (Third Preview) – JEP 481
</code></pre>
[1] <a href="https://mail.openjdk.org/pipermail/amber-spec-experts/2024-April/004106.html" rel="nofollow">https://mail.openjdk.org/pipermail/amber-spec-experts/2024-A...</a>
"So, to be clear: there will be no string template feature, even with --enable-preview, in JDK 23." - Gavin Bierman
Congrats on your accomplishments!<p>I had two friends who both wrote separate books on JS. One early book on Angular and the other was about jQuery. Both had a hard time with the critical reviews they received on Amazon and it really dissuaded them from doing any more technical writing.<p>I love your approach and hope you keep writing and don't let the trolls get to you! Our industry needs more people who have this "soup to nuts" approach and take into account how nearly every language has changed dramatically over time.<p>Again, congrats and keep writing.
Congratulations!
consider posting about in <a href="https://www.reddit.com/r/java/" rel="nofollow">https://www.reddit.com/r/java/</a> it is a very active java community.
Congrats on writing and completing a book! I was involved in a few myself long ago, when I had the time available to contribute to those endeavors. In a world that often measures "the juice being worth the squeeze", I'm not sure authoring technical manuals would ever meet the criteria.<p>One of my personal photos I keep around was taken long ago in what was the biggest bricks/mortar bookseller. I was looking at the selection of books on Java available at the time. O'Reilly was the dominant publisher, and thus had several offerings on the wall. Most of the books were at least 2 inches thick. (If you were ever involved with writing a technical book in the early 2000s, you'll understand the publisher metrics at the time were based on the width of the spine on the shelf.)<p>Among the many Java manuals of significant girth was a small, THIN book with the title "Java -- the Good Parts". :-{}
Congratulations! In case people are looking for other modern Java books, here's one I'm working for building modern web apps in Java:<p><a href="https://frequal.com/Flavour/book.html" rel="nofollow">https://frequal.com/Flavour/book.html</a><p>It describes how to make single-page apps in Java, using the Flavour framework. No plugins, no extensions, and 99.9% pure Java. Plenty of sample code and links to relevant podcast episodes and demos.
First up, congrats on getting over the hump — I struggle to complete a blog post, so I very much appreciate the effort it takes to do this!<p>A confusing sentence I noticed in the first chapter:<p>> ...then the only thing cost was some time, if they do it wrong, the cost is usually a bug.<p>I am guessing you mean "only cost was some time" (without the "thing")?<p>As for the topic, my hypothesis is slightly different — adopting functional approach to programming — even in imperative languages — leads you to the best patterns (or as you put it, "makes it inevitable") when combined with "evolutionary" architecture, and DoP is certainly one of them.<p>However, for a majority of software, in my experience, data "attributes" are really "leaf nodes", only to be consumed for display, and types do not really matter much there (eg. I don't mind `firstName` being a simple string). What we want to get right is types we do operations on, and most critically, relations between different data models. Accepting "evolutionary" principles in architecture also means that you welcome change and build for it, so getting any definition of data right from start is not an imperative.<p>But the topic certainly seems intriguing, so I look forward to learning more from your book and seeing how you apply it in a more imperative/OO way and what language features you found critical to success there.<p>Congrats again and good luck!
Congratulations!<p>I see that the book is incomplete. I didn't know that early access for books was a thing, very neat. It might be pertinent to note in your post that it's still being written, with an estimated release window of Spring 2025.<p>I'm very much a "consume it when it's ready" person, so I'll keep this on my watch list.
As someone who loves Typescript, the first chapter of your book deeply resonated with me. Good data representations and data types that encode meaning can eliminate entire classes of bugs by making invalid states unrepresentable, and I wish more languages emphasized and supported these principles.
Congrats on launching the early access! I'm familiar with data-oriented programming from Clojure and F#, and I'm interested in seeing how you approach it in Java, so I just picked up a copy (ebook). Wish you all the best on completing the book!
Can't wait to read this.<p>There's another book by a similar title<p><a href="https://www.manning.com/books/data-oriented-programming" rel="nofollow">https://www.manning.com/books/data-oriented-programming</a><p>Care to elaborate how yours is different?
Congratulations! I bought it and looking forward to the completed book.<p>The first chapter is pretty nice. Record types, switch statements and other new features will hopefully push Java programmers to think in terms of types more often.
I've read the first chapter and I like it a lot. I find myself way to often hiding business logic as in your first example. Also, showing how to use Java for DoP and combining it with other concepts like OOP encapsulation is very helpful IMO.<p>Now I'm waiting for two things:<p>1. Manning allowing me to grab it (forgot password email notifications seems to hang)<p>2. More chapters :-) ... no, really, just let it roll. Don't rush.
Congrats and keep going! I ultimately failed at mine because I didn't keep disciplined focus on it when life got in the way. It was many lessons learnt.<p><a href="https://www.amazon.com/Hands-Django-Beyond-Brandon-2016-03-25/dp/B01HC1MU98/" rel="nofollow">https://www.amazon.com/Hands-Django-Beyond-Brandon-2016-03-2...</a>
Is java still popular? Though I'm not a big fan of it I wouldn't mind using, but I'm after somewhat recent changes in licensing I'm not even sure I can. I don't fully understand the changes and I'm afraid of oracle coming after me :).<p>Can anyone explain current caveats and/or limitations with current licensing?
Purchased! I know very little about programming still, but Java is a language I have dealt with and will likely continue to have to deal with for the rest of my career, so here we go!
Congratulations! I bought a copy. If I like it I might recommend it as further reading for the university java course I teach. :)<p>PS. All the best with the yacht! xD
I now see these threads with a language in the title as kind of a digital (literally) version of a voluntary committal. Those herein are, of their own volition, taking their thoughts and feelings about technology X out of the Internet at large and into a safe place where they can do no harm. No one in threads such as these are going to change their mind. It's a beautiful thing.
Lots of people are sleeping on modern Java, and it has had a lot of really nice changes, that, when put together, make it wholly different from what came before.<p>One question: a lot of the Java enterprise ecosystem is based around entities (Hibernate and the like). Do you give guidance for how to work within that context? Can I use data oriented programming there?
congrats. Data Oriented Programming is cool, but you can easily get lost in the complexity of certain things.<p>there's another related book from one person active in the Clojure ecosystem. Though the book examples are in JS.<p>also, thank you for taking the step forward on doing your own small part in changing the 'AbstractFactory' thinking that's pervasive in the Java world.
Very nice! I gave you my money just for the consideration of people stuck in old Java versions like myself. Looking forward to getting the new chapters as they come!
Bought and read 32% of the available content and I’m disappointed. Yet another book that full of lingo bingo, a lot of text around a concept of what use more functional coding style with Java 17 features. Pretty sure there is some good information in there but it could be brought down to 3 or 4 slides instead of this extrapolation…
Not gonna lie, came here to see if "wrote a book on Java" was Java the language or Java the island. Congrats on your book, and I'll see myself out.
Congratulations! It's so interesting to witness how "techniques of the past" make a grand return in "new" programming languages that "gained" features from 4 to 7 decades ago to support this programming style.
"records, pattern matching, `with` expressions, sum and product types" - in my upbringing, this stuff is decidedly "old-school FP". People going through their learning curve 30 years later than I have will see what I had learned as "dead, possibly failed-forever FP ideas" as the "we tried a lot of stuff but this seemed to be the best way to do it after all" of their time.