4 ms·
I'm a Java programmer who's been at it for 20 years. Its really difficult to find a definitive modern Java guide right now because there are multiple paradigms
by rr808 2y ago
I'm a Java programmer who's been at it for 20 years. Its really difficult to find a definitive modern Java guide right now because there are multiple paradigms that are popular.
There is the old school - everything has an interface, with a concrete implementation and test implementation. OOM ORMs probably Hibernate. Lots of long winded naming.
Add some functional features in Java 8, streams, lambdas but still kind of a hybrid. Scala & Kotlin distracted much of the purely functional people but has influenced Java a lot to complicate what normal Java looks like.
Spring has a huge influence and probably is still the defacto framework to build in.
Sprinkle in some Clean code culture - (4 line functions) which got really popular but has died off.
Add reactive programming. You need async in single threaded languages like JS and Python, and you need async in high performance applications. Its toxic for most projects but has nonetheless been enthusiastically adopted and corrupted many a code base.
I like Vertx because its a complete break from Spring and much simpler with less magic, but it hasn't really gained enough popularity.
Java 17/21 added a bunch of new concepts like Records which some people have adopted Java into DDD style that is completely new.
So "Java" can mean so many different styles now its impossible to have one recommended textbook. Bloch you can't go wrong but is kinda basic construction rather than higher level guidance. I like "Vert.x in Action" but in general its not a good standard Java text. I'm kinda curious what others will suggest.
- barrenko 2y agoAs a Java newbie once upon a time (never mastered it, just switched langs), I never really grokked how one would pick up Spring without a dedicated mentor, especially if it's a bit more of a legacy project.
- rr808 2y agoAgreed, if you're coming from a different environment, Spring is a huge learning curve. Spring Boot I think makes it worse, too much magic.
- smokel 2y agoA very nice summary of the current state of affairs! Depending on the codebase one will be working on, it is probably beneficial to have lived through this entire history, so that one can discern which paradigm is hype or here to stay. I wonder what approach in teaching students is most useful to become a decent software engineer. Is "history of software engineering" a mandatory course in most universities now?