JVM
Your Must-Read: Java
- Core Java, Volume I: Fundamentals, 12th Edition, Cay S. Horstmann, Oracle, 2021 (the newest edition of The Java Bible, Java 8 and higher)
- Core Java, Volume II: Advanced Features, 12th Edition, Cay S. Horstmann, Oracle, 2022
- Thinking in Java 4th Edition, Bruce Eckel, Pearson, 2006 (old-school but still important for understanding the deeper fondamentals of Java 5/6)
- Effective Java, 3rd Edition, Joshua Bloch, 2018
- The Well-Grounded Java Developer, Benjamin J. Evans, Martijn Verburg, Manning, 2010 (overview of Java 7 and JVM languages)
- Spock Up and Running. Writing Expressive Tests in Java and Groovy, Rob Fletcher, O’Reilly, 2017
- Java Testing With Spock, Konstantinos Kapelonis, Manning, 2016
- Java in a Nutshell. A Desktop Quick Reference 7th Edition, Ben Evans, David Flanagan, O’Reilly, 2018
Still-To-Read List: Java
I think I read a lot: some 5-6 books monthly, including an average 1,5 of IT book per month. But this to-read list grows even faster that I can manage. Most of them - old school, but still worth reading.
- Java Generics and Collection, Maurice Naftalin, Philip Wadler, O’Reilly, 2006
- Java Concurrency in Practice, Brian Goetz (It’s often said that you think you’re good at Java until you open this book.)
- Java Performance, Charlie Hunt, Binu John, Financial Times Prentice Hall, 2011 (On Java internals, good opinions.)
- Java Performance Companion, Charlie Hunt, Addison-Wesley Professional, 2016
- Java Performance, The Definitive Guide, Scott Oaks, O’Reilly, 2014
- Java Puzzlers: Traps, Pitfalls, and Corner Cases, Joshua Bloch, Neal Gafter, Pearson, 2005
- Java By Comparison: Become a Java Craftsman in 70 Examples, Simon Harrer, Jörg Lenhard, Linus Dietz, Pragmatic Bookshelf, 2018
- Java Performance and Scalability: A Quantitative Approach, Henry H. Liu, CreateSpace, 2013
- System Performance: Enterprise and the Cloud, 2nd Edition, Brendan Gregg, Pearson, 2020
- High-Performance Java Persistence, Vlad Mihalcea, 2016
- The Optimizing Java: Practical Techniques for Improving JVM Application Performance, Ben Evans, James Gough, Chris Newland, O’Reilly, 2018
- The Java Virtual Machine Specification or any book on the topic
- Java 9 Modularity: Patterns And Practices For Developing Maintainable Applications Sander Mak, Paul Bakker, O’Reilly, 2023
- Best Books to Become Better Java Developer at Shepherd.com
Computer science
- Grokking Algorithms. An illustrated guide for programmers and other curious people, Aditya Y. Bhargava, Manning, 2016
- Informatyka. Wirtualna podróż w świat systemów i sieci komputerowych, Mirosław Hajder, Heorhii Loutski, Wiesław Stręciwilk, 2002 (It is still an up-to-date knowledge source for computer programmers. Some chapters are very easy, some others contain a lot of mathematics, formulas and computer science theory. Overall, a nice introduction into several areas of computer science.)
- Goalkicker’s Algorithms Book
Resources
- dev.java: The Destination for Java Developers
- Oracle Learning Explorer - Free Training & Accreditation, including Java, SQL and Oracle Database
- Design patterns repo: contribute or learn
- Algorithms & data structures project
- Contribute to ZeptoN - simple JVM language by William Gilreath
- Yong Mook Kim’s website - mkyong.com (Java and Spring)
- Cay Horstmann’s home page + blog + more
- Goalkicker’s Java Notes for Professionals
- Gregor Ulm
- The Code Cop
Videos
- IntelliJ IDEA based IDEs Tips & Tricks by Hadi Hariri
- GeeCON Prague 2018: Andrzej Grzesik - 9, 10, Java 11!
- GeeCON Prague 2018: Jarosław Ratajski - Another year, another language
- GeeCON Prague 2018: Vladimir Dejanovic - GraphQL vs Traditional Rest API
- GeeCON Prague 2018: Andrey Adamovich - Serverless Java Journey
- Fantastic Performance and where to find it by Richard Warburton
- java.util.concurrent for Distributed Coordination (Ensar Basri Kahveci)
- Toruń JUG #52 - “Quarkus - a next generation Java runtime” - Michał Szynkiewicz
- Micronaut, Dragon-Slayer (Spring/boot) or just another framework (V. Dejanovic)
- Java, Today and Tomorrow by Mark Reinhold
- GeeCON Prague 2018: Tomer Gabel - How shit works: Time
- Is writing performant code too expensive? (Tomasz Kowalczewski)
- Modularity and hexagonal architecture in real life: Jakub Nabrdalik
- Jakub Nabrdalik - Common mistakes when moving to microservices & cloud
- Niepokalany kod (pure code), Jarek Ratajski
- Jacek Milewski - Testy automatyczne: Czego kursy Cię nie nauczą
- Jaroslaw Ratajski - Spring, Jakarta EE, CDI i inne patologie
- A Complete Waste of Time - Chet Haase
- GeeCON Prague 2018: Michael Nygard - Uncoupling
- GeeCON Prague 2018: Miro Cupak - Pushing boundaries of types with modern Java
- Project Loom: Fibers and Continuations for Java by Alan Bateman
- GeeCON Prague 2018: Edson Yanaga - Revisiting Effective Java in 2018
- GeeCON Prague 2018: Nitsan Wakart - Allocation - Mechanics, Profiling & Optimization
- Unit Testing like a Pro: The Circle of Purity (Victor Rentea)
- Spring Cloud, Docker & Kubernetes - Lessons Learned (M. Salatino)
- Ten Things You Can Do With GraalVM - Oleg Šelajev
- Reactive Microservices on the JVM with Vert.x by Burr Sutter
- Voxxed Zurich: Not Your Father’s Complexity: Performance in a New Machine Age (Maurice Naftalin)
- Dmytro Vyazelenko — Using Java Microbenchmark Harness (JMH) in a real world project
Tools
- Technical English: Microsoft Style Guide + Glossary
- Recaf (bytecode & hex editor): website and repo
Dojo
- Practice Java & Python kata at CodingBat - oldschool project by Nick Parlante (Stanford)
- HackerRank
- Codewars
Other JVM languages, functional languages, Kafka
Scala
- Grokking Functional Programming, Michał Płachta, Manning, 2022
- Functional Programming in Scala, Michael Pilquist, Rúnar Bjarnason, and Paul Chiusano, Second Edition, Manning, 2021
- Scala (including Haskell and math): https://niqdev.github.io/scala-fp/docs/book.html
- Scala et consortes: http://writeonly.pl/
- Alvin Alexander’s page, author of books on Scala and functional programming
- RockTheJVM utorials (including free basics)
- Li Haoyi’s blog and his book Hands-on Scala Programming
- Intro to Apache Spark for Java and Scala Developers - Ted Malaska (Cloudera)
- @inline and @specialized: What do they do? Should I be using them? - by Chris Birchall
- Drawbacks in Scala environment: Scala Resurrection by John A. De Goes
- How to set up a new Scala project - checklist
- Demystifying Scala • Kelley Robinson • GOTO 2017
Kafka
- Jacek Laskowski - Apache Kafka i Kafka Streams praktycznie
- J. Laskowski online book: The Internals of Apache Kafka 2.4.0
- Apache Kafka
- Apache Kafka and KSQL in Action : Let’s Build a Streaming Data Pipeline! by Robin Moffatt
- “EoS in Kafka: Listen up, I will only say this once!” by Jason Gustafson
- Everything You Always Wanted to Know About Kafka’s Rebalance Protocol but Were Afraid to Ask (Matthias J. Sax)
- Building Streaming Microservices with Apache Kafka - Tim Berglund
- Martin Kleppmann Kafka Summit London 2019 Keynote Is Kafka a Database?
- Event Sourcing You are doing it wrong by David Schmitz
- Beyond the DSL—Unlocking the power of Kafka Streams with the Processor API by Antony Stubbs
Clojure
- Clojure and security researcher Randomseed blog & Clojure manual
- Rozmowa Kontrolowana - Odcinek 53 - Paweł Wilk
- Another blog on Clojure
- Clojure dialect Babashka (Clojure scripting): book, repo
Functional Java
- Functional Programming in Java Course
- 4Developers 2018: Monady dla zwykłego Javowca (Jarek Ratajski)
- Devoxx - Functional Programming Patterns with Java8 with Victor Rentea
- Jarek Ratajski - Lambda Core – HardCore
- Clean Lambdas - by Victor Rentea at JBCNConf’17
- The Power and Practicality of Immutability by Venkat Subramaniam
- Jarek Ratajski - Dysfunctional DDD Lambda Days 2019
- Functional Programming with Java 8 by Venkat Subramaniam
- Streams in Java 8: Reduce vs. Collect
- Angelika Langer’s page - lambdas & generics
- Redis Streams, Functions and Data Structures - IMC Summit North America 2018
- A Hitchhiker’s Guide to the Functional Exception Handling in Java (Grzegorz Piwowarek)
- Functional Programming Patterns with Java8 with Victor Rentea
- Make Your CPU Cores Sweat with Parallel Streams