A Study List for Java Developers

A Study List for Java Developers

In this article, I summarized my learnings from the past six years or so into a study list below for Java Developers

In this article, I summarized my learnings from the past six years or so into a study list below for Java Developers

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.

Write clean code

What do we do most as a Java developer? Right, code. What’s not so obvious, though, is that you are practicing a craft that is based on certain principles. Luckily, those principles can be learned. You can find numerous posts on clean code over the Internet, but I like good old books. Below are a couple recommendations.

  • Clean Code (2008), by Robert C. Martin
  • Effective Java (2017), third edition, by Joshua Bloch

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.

I developed a practice that helped me greatly to produce clean code. Basically, pick 100 easy problems from leetcode, try to solve them on your own, and compare your solution to the best one. In the beginning you will likely find the best solution only takes one or two lines but yours takes way more. In that case, study the best solution, understand why yours differs (or sucks), internalize your learnings, and pass the online judge for the same problem for 5 times. Gradually you will produce more and more concise code. I promise.

No one is born a fabulous coder. Learn the principles and practice. You will get there before you know it.

Master the language and JDK

I am sure all Java developers have gone through a language tutorial of some sort. But if you have not taken trails from the official Java tutorials, you are missing out. I recommend all the basic trails except the last two (deployment and Java certificate), and the following specialized trails:

  • Clean Code (2008), by Robert C. Martin
  • Effective Java (2017), third edition, by Joshua Bloch

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.

If you are still interested, I recommend these parts and chapters.

  • Clean Code (2008), by Robert C. Martin
  • Effective Java (2017), third edition, by Joshua Bloch
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.

From my own learning experience, I find these resources quite useful:

  • Clean Code (2008), by Robert C. Martin
  • Effective Java (2017), third edition, by Joshua Bloch
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.

Thank you for reading!

Mobile App Development Company India | Ecommerce Web Development Company India

Mobile App Development Company India | Ecommerce Web Development Company India

Best Mobile App Development Company India, WebClues Global is one of the leading web and mobile app development company. Our team offers complete IT solutions including Cross-Platform App Development, CMS & E-Commerce, and UI/UX Design.

We are custom eCommerce Development Company working with all types of industry verticals and providing them end-to-end solutions for their eCommerce store development.

Know more about Top E-Commerce Web Development Company

.NET or Java for Web Development

.NET or Java for Web Development

Developers are often in a dilemma when trying to choose between technologies for their projects. Comparing two or more is quite daunting and confusing at times. In this article, we will focus on comparing .NET and Java.

Thinking of adopting one of these technologies for your next web development project? Read on for a basic overview.

Developers are often in a dilemma when trying to choose between technologies for their projects. Comparing two or more is quite daunting and confusing at times. In this article, we will focus on comparing .NET and Java.

The two are quite different in structure but are predisposed to comparison because of their demand when there is a call for complex and large-scale applications.

While .NET is a framework that can use several languages, Java, on the other hand, is a programming language itself.

A debate is often sparked during comparison among business owners and developers when it comes to choosing between the two. In fact, it is common for people to switch between the two periodically.

.NET, under the auspices of its framework, encompasses C#, which is basically Java, and here lies the challenge in contrasting between the better of the two. This article describes how the two are different while showing their similarity.

What Is Common to Both Java and .NET?

They Are Developed for Heavy Applications

Heavy execution, complex architecture, systems with high loads, and applications with big data specifications are some of the things that can be executed by both Java and C# in the .NET framework. This accords them the high adoption rates in technologies in the enterprise level which proves their scalability and reliability.

They Are Multipurpose

Ranging from subtle to overt, both Java and the .NET framework can be run on desktops, mobile applications, and servers. They are both widely used in the enterprise market. Both Java and C# are 'write one run anywhere' type languages.

They Are Similar in Their Syntax

C# in the .NET framework is derived from the Java language. This proves that the syntaxes of Java and C# are the same except for some basic modifications that were made. A basic syntax is common between the two since Java uses syntax from C++ and C# uses a variety of C languages and style including C, C++, and Java.

Both Are Object-Oriented

A common standard, object-oriented programming, is a basic principle of software development. Having their structure in modules, both Java and .NET are flexible and allow for code reuse while having good troubleshooting expansions.

Garbage Collection

Common to low-level languages, recalling is necessary if you have to free up space during memory administration which makes it a repetitive process. However, in .NET and Java there are no memory spills since objects that are not in use are evacuated.

Single Inheritance

Both C# and Java reinforce single inheritance. This means that a single path is always available from a base class to an inferred class.

Interfaces

Whenever methods are unique in an interface for a dynamic class, it defines an interface. A dynamic method on the other and is one that does not encompass its usage point of interest. Any interface characterization, in terms of the property, has code overseeing it, which is provided for actualization based on a specified class for its actualization.

Some of the Differences

Both Are Portable but One Exceeds the Other

Migrating between Java platforms is easy compared to the .NET framework, which is time-consuming and difficult.

Both Have Fundamental Data Types but One Exceeds the Other

.NET incorporates more fundamental data types than Java. It also allows for more extension of these value types.

They Interact Well With Different Languages

Both Java and .NET have their own languages, which they can easily integrate and work with. Examples for Java include Clojure and Groovy while .NET includes visual basic, F# and C#, among others.

Choosing .NET Core or Java for your web development project is really dependent on the type of project, the resources you have, and many other factors.

Happy web developing!