A Study List For Java Developers
A Study List For Java Developers
You have 2 free stories left this month. Sign up and get an extra one for free.
I became a Java developer about six years ago. Although I can’t say it’s
every day, but I do enjoy my job a great deal most of the days. What keeps
me motivated is my goal to become better at my job. I think this attitude is
a strong reason for me to make a steady progression thus far in my
career. However, when I look back, I wasted quite some time being
aimless for learning new skills. So, I summarized my learnings from the
past six years or so into a study list below. If it can be of any help to
newcomers, the pleasure is mine.
Among all the merits of clean code, one I personally hold the dearest is
brevity. Besides aesthetic reasons, there is a crucial economic reason
behind this merit: A line may be written once, but it will likely be read
many many times by many many developers. The waste by a needless
line will add up over time and may amount to a big cost. And needless to
say, more lines, more bugs.
No one is born a fabulous coder. Learn the principles and practice. You
will get there before you know it.
Custom Networking,
Generics,
JavaBeans,
JMX,
JAXB,
Reflection, and
Additionally, check out JDK Tools and Utilities. In particular, pay special
attention to the Troubleshooting Tools section! Those tools may get you
out of a serious trouble down the road. Another good reading is Chapter
17 Threads and Locks from the Java Language Specification. It helped
me strengthen my understanding of concurrency in Java once.
Grasp Gradle
Gradle is becoming THE build tool of choice for Java projects. Your team
may not be using it now, but I can almost guarantee you that it will
become your best friend in your career as a Java developer.
Gradle has been rapidly growing for years. So has been the size of the
docs. I think it is so large now that the docs page looks intimidating to
users, myself included. In contrast, the old versions have a single page of
table of content for Gradle User Guide (eg, v2.5 docs) and the learning
experience was amazing to me. So, my recommendation is, when you
start to navigate through the docs of the latest version, have an old doc
open on the side of the screen and follow the order there when reading
the new docs.
After you spend a few days on the user guide, you often need to consult
the Gradle DSL references. I suggest you read through the Project and
Task pages to see what’s available because they are the two most often
used types in a Gradle build script.
Lastly, I recommend you take the Plugin Development Tutorials. You may
never need to write one for your work, but chances are you have to read
the source code of some in-house plugin in your company to
troubleshoot some mysterious issues. Having experience with Gradle
plugin development will pay good dividend then.
Administrate Jetty
Aside from work, the most significant value of Jetty to me is to serve my
side projects. I have made plenty of side projects, most of which are web
apps. Being able to administrate Jetty gives me great convenience for
that. The official Jetty doc is my learning material of choice.
Play Hadoop
We are in a Big Data era now. That means Hadoop is almost inevitable to
Java developers. It has become increasingly unusual now to write vanilla
map-reduce (MR) job in Java. However, knowing how to write a MR job
in Java is still of good value because you may have to do it once in a
while. More importantly, you may stumble across some issues that
require deep understanding of how Hadoop works in order to
troubleshoot them. For that, I recommend the book, Hadoop: The
Definitive Guide (2015), by Tom White.
Additionally, I suggest you make friends with the official Apache Hadoop
docs.
Know Java EE
I spent a lot time going through the official Java EE tutorial in the early
days of my career. Now when I look back, only a small set of technologies
stay quite relevant today based on my limited experience. However,
going through the tutorial gives me an invaluable overview of the use
cases, common considerations, and the state of the art of Java enterprise
applications. Even though I later found out some Java EE reference
implementations were not the most widely used ones (eg, Spring is way
more popular than Weld for dependency injection), I learned the
fundamental concepts from the tutorial.
Part III Chapter 6 Getting Started with Web Applications, especially the Top highlight
Part IV Bean Validation. You may never use the JAVA EE bean
validation technology directly, but the underneath problems it solves
are universal.
Part V Contexts and Dependency Injection for Java EE. Again, you
may never use CDI directly, but it will help you learn the basic
concepts for a dependency injection framework.
Part X Security. I actually haven’t gone through this part yet, but it
looks like an interesting advanced topic.
Use Spring
Like it or not, if you do server-side Java development for the long run,
the Spring framework is almost inevitable. Because I learned CDI first, I
wasn’t fond of Spring initially for some secondary differences (eg, I
preferred CDI interception APIs to Spring AOP APIs). However, because it
was so popular and I had to use it for work, I gradually went through
most parts, if not all, of the Spring framework documentation. However,
since I became good at it, I find it quite friendly to use. Therefore, I
recommend it to you, too.
Aside from the official documentation, there are abundant tutorials for
Spring over the Internet. Ask Google.
Comprehend Zookeeper
Zookeeper is not an obvious skill to learn to most Java developers.
However, it will become extremely important if you need to develop a
distributed system, because Zookeeper solves the critical coordination
problem for you. I can’t express how important Zookeeper is for building
a distributed system in words, but you will appreciate it when you learn
it.
Final Notes
By now you can probably tell a couple of things. First, the list is heavily
biased towards server-side Java developers. This is because I am one of
them. Second, it is not necessarily a list for being a good Java developer. I
totally agree with you. To be a good Java developer requires more than
what’s listed. Noticeably you need to have a strong troubleshooting
ability, which takes time to grow. What I recommend is you start by asking
good questions on Stack Overflow. I signed up even before I became a
Java developer. It turns out it was a greatly rewarding decision. I solved
quite a few intricate problems simply by making a good ask there. And I
am sure it will help you, too, when you cannot google yourself out of an
issue when you learn the things listed above.
WRIT T EN BY
Jim Follow