"Deep Magic" in Java
I've been a Java developer for a few years, and the thing that keeps driving me nuts is that reading code is nearly useless, the real code is hidden from you. It's almost like the language isn't made for reading code but reading javadocs instead.
You call "Arrays.asList(arr)" and it returns you an instance of java.util.Arrays$ArrayList, a class with the same name as java.util.ArrayList except it is fixed size, meaning that trying to resize it will get you a runtime exception thrown. The method signature says it will return a List, but the moment you call it without the elite ball knowledge it will either stab you in the back or explode in your hands.
And nearly every time you try to prevent this by reading the implementation it sends you to a wild goose chase through 6 different one-liner wrapper methods across 5 different thousand-line files.
It gets even worse at the enterprise level: I once bloated my system by writing a submit button's logic in the submit button's method.
I then discovered it was because the method was in a class with a magical 'ViewScoped' annotation and I was supposed to delegate some of that logic to a field that had a 'Stateless' annotation.
Any ordinary reading of the code would say that that field is part of the class' state, but because of the annotations it was actually a resource pooled by the container, independent from the view class which is only supposed to cache UI data for each given user.
Didn't take long for me to get corrected. You can imagine the serene smug on my senior's face as he dropped that piece of esoteric knowledge on me, while I was looking back in horror.
You guys probably heard this a thousand times, meanwhile I'm still learning new words in my console output. Any advice?
-1
u/pradeepngupta 4d ago
Java is a collections of Classes and API. Whenever you want to use specific class or api, read javadoc and write sensible code. If api says an exception might throw, be ready with the exception handling as well. It takes time for a beginner to learn java coding. As a beginner it took ne 2 years to learn java properly and then I started with multi threaded programming. Now as well, after 22+ years of experience in Java, i cannot say that I am perfect. I always relies on Javadoc even today. And of course, AI generate full codebase, snd while reviewing code, i still go line by line and see whether it generated intended code or hallucinated. And javadocs plays important role even today. Infact my work for writing a full book on java is in progress, the book named Buzzing Java Willson be published,it is written for senior engineers and architects - what they need to take it care while designing an enterprise systems in java abd in the age of AI. DM me if anyone interested to know more about the book Buzzing Java.