DEV Community

Cover image for Learn Java
Shai Almog
Shai Almog

Posted on • Originally published at

Learn Java

In this post, I have summarized the YouTube playlists series for Java Basics and Modern Java courses on my Debug Agent Youtube channel.

These courses updates weekly. Start as a beginner on your journey to become a Java pro.

Java Basics

All you need to know to learn Java with this course is basic grade school algebra and the ability to install software. We start from the very basic concepts of programming to build simple Java applications. Once completed we will connect this course to the "Modern Java Course" and "Debugging at Scale in Production" course.

Modern Java

Many developers learned JDK 1.4 or 1.6 if they were lucky. Then never touched Java again. Left with a memory of a verbose, language. Heavy with complex abstractions and boilerplate code.

Modern Java isn't like that. It will never be as terse as Python. But it makes up for that in other aspects. Its biggest strength is the years of legacy behind it. But it's also the biggest weakness. Developers don't even know what's possible.

With this course I hope to re-introduce you to Java. To show you a dynamic, modern, performant language for the cloud era. I want to show you why Java is still growing nearly 30 years after its public debut.

Debugging Course

This playlist contains the first module of the course: "Practical Debugging at Scale" based on the Apress book with the same title. In these 9 videos we will cover everything that no one taught you about using a debugger.

Secret features like Marker Objects, Entry Renderers and much more. The full course and the book cover a lot more.

DevOps for Developers

In this series we will learn the concepts of DevOps from a perspective of developers. How can these concepts help us be better developers and managers in our day to day jobs. In a startup you might need to fill the shoes of a DevOps, in a big company you might need to communicate with a DevOps team that has wildly different ideas.

We will gain a different perspective and understanding of the entire process by leaving our comfort zone and focusing on the wider picture. We will learn about different disciplines such as platform engineering and so much more.

Top comments (4)

villelmo profile image
William Torrez

What is the difference between Java and C++?

codenameone profile image
Shai Almog

Java's syntax was inspired by C and C++. So are some of its high level semantics. That made it familiar to most developers when it launched. However, it took a radically different approach to everything.

  • C++ compiles applications to native code. Java runs in a virtual machine with a JIT.
  • Java is more dynamic. It focuses more on runtime behavior. C++ is more static and places more emphasis on the compiler.
  • Java is portable even in the binary form. C++ can be written in a portable manner but it requires some understanding of complex concepts.
  • Java is safe and garbage collected. In C++ memory is managed manually and you can manipulate it directly. C++ is targeted for low level code that values performance and size over ease of development. This also makes it harder to secure C++ code.
  • Java has an extensive portable API and 3rd party extensions. This is its crown jewel, no other language/platform comes close to it. Note that JavaScript has many 3rd party modules but many are trivial, thus inflating the numbers. Its core APIs are minuscule when compared to Java (for better and worse).
  • Java is standardized by a consortium of companies. But effectively Oracle is calling the shots unlike C++ which is driven by committee. This has advantages as Java can evolve fast in a responsible way (like a product). But the downside is that it's not as open as C++. Although there are many 3rd party Java virtual machines and they are open source.
  • Java took the philosophy of removing everything that isn't essential from the language (no operator overloading, no enums when it launched). C++ has many sophisticated language features.

On a personal note I used to code a lot in C++ and have deep dislike of the language in general. I tried to keep this as objective as possible though, but I'm happy for corrections/insights/elaborations.

ashusharmatech profile image
Ashutosh Sharma


  1. Simpler syntax and easier to read
  2. Automatic memory management through garbage collection
  3. Platform independence through the Java Virtual Machine (JVM)
  4. Enforces strict adherence to object-oriented programming principles
  5. Popular for enterprise applications and Android development


  1. More complex syntax
  2. Requires manual memory management
  3. Platform-dependent and needs separate compilation for each platform
  4. Offers more flexibility, including multiple inheritance
  5. Generally considered faster, but Java's performance has improved
  6. Commonly used for system-level programming and performance-critical applications
karim_abdallah profile image
Karim Abdallah

I appreciate your efforts