From JS to Java: A JavaScript Dev's Journey (Part 1)
I have been programming professionally for a little over 3 years now. In that time, I can't tell you how many decisions I've made "because JavaScript". Familiarity is hard to break. That same familiarity probably led to things like Node.js and Express.js. I never felt the need to branch out into other languages because it seemed like JavaScript could do it all. There is another side to it though. I've spent my whole life feeling as though I've been "Jack of all trades, master of none". I can play guitar, bass, drums, piano, and even a bit of pedal steel. But like JavaScript, I’ve dabbled in each without fully mastering any. I thought focusing solely on JavaScript would be my opportunity to finally master something. Here's a (possible hot) take: The name of the game shouldn't be to master one language but to master programming fundamentals/concepts that transcend languages. Clearly JavaScript can take you far but can you really learn enough from a language that abstracts away so much complexity? Note: Before the low-level folks come for me, I know Java is a "higher-level language". I also know that Java (even before learning it) is not quite as abstract and forgiving as JavaScript. I also want to mention the course I'm using for context. I promise I'm not some sponsored shill but I genuinely do appreciate the content that Frontend Masters cranks out. Course: Java Fundamentals taught by Angie Jones Oh - there is one final note about familiarity that I almost forgot to mention... Visual Studio Code. Outside of some VIM-dabbling (Thanks, ThePrimeagen), VSCode has been my IDE since day one. When this course opened with IntelliJ being recommended, the gif below popped into my head. I almost retreated into old habits and attempted to go at this with VSCode instead. I told myself "If Angie is using IntelliJ, there's probably a good reason for it". IntelliJ it is! If you've stuck with me this far, thank you! I think we are finally prepared for departure. My initial impression after the first hour? This isn't so bad! Many things feel pretty familiar and leave me anticipating what might come next syntactically. With that being said, I'm deferring complexity early on and not getting bogged down by things like: What exactly Maven is Why the project folder structure is what it is (/src/main/java/packages) Public vs. Private Parameters for main being "String[] args" Due to Java being a statically typed language, dang do I feel like I do some typing. The System.out.println Live Template ("sout"-tab) certainly comes in handy. I'm sure there are more defaults offered by IntelliJ and I'm excited to discover those. The topics covered so far have been: Basics (println, Scanner, variables, Strings, concatenation, etc.) If/If-Else Switch Statements/Expressions Operators One of the things that caught my eye was variable typing. Why are things like int, double, and char lowercase while String and Scanner are uppercase? I discovered the answer is that Java has 8 primitive types. Those types are int, char, double, boolean, float, long, short, and byte. These are all part of the Java's core syntax and are not defined as classes. String and Scanner on the other hand, are classes in Java. When you create a variable of one of these types, you're creating a reference to an object. I am curious to see how code (or packages) can be passed around. I'm also wondering how we define something like an "entry" point within Java but I'm sure that's coming. With the introduction out of the way, the parts that should follow should be more Java/code-focused. We are quickly headed towards Loops, Methods, Objects, Arrays, and more!

I have been programming professionally for a little over 3 years now. In that time, I can't tell you how many decisions I've made "because JavaScript". Familiarity is hard to break. That same familiarity probably led to things like Node.js and Express.js. I never felt the need to branch out into other languages because it seemed like JavaScript could do it all.
There is another side to it though. I've spent my whole life feeling as though I've been "Jack of all trades, master of none". I can play guitar, bass, drums, piano, and even a bit of pedal steel. But like JavaScript, I’ve dabbled in each without fully mastering any. I thought focusing solely on JavaScript would be my opportunity to finally master something.
Here's a (possible hot) take: The name of the game shouldn't be to master one language but to master programming fundamentals/concepts that transcend languages. Clearly JavaScript can take you far but can you really learn enough from a language that abstracts away so much complexity?
Note: Before the low-level folks come for me, I know Java is a "higher-level language". I also know that Java (even before learning it) is not quite as abstract and forgiving as JavaScript.
I also want to mention the course I'm using for context. I promise I'm not some sponsored shill but I genuinely do appreciate the content that Frontend Masters cranks out.
Course: Java Fundamentals taught by Angie Jones
Oh - there is one final note about familiarity that I almost forgot to mention... Visual Studio Code. Outside of some VIM-dabbling (Thanks, ThePrimeagen), VSCode has been my IDE since day one. When this course opened with IntelliJ being recommended, the gif below popped into my head.
I almost retreated into old habits and attempted to go at this with VSCode instead. I told myself "If Angie is using IntelliJ, there's probably a good reason for it". IntelliJ it is!
If you've stuck with me this far, thank you! I think we are finally prepared for departure.
My initial impression after the first hour? This isn't so bad!
Many things feel pretty familiar and leave me anticipating what might come next syntactically.
With that being said, I'm deferring complexity early on and not getting bogged down by things like:
- What exactly Maven is
- Why the project folder structure is what it is (/src/main/java/packages)
- Public vs. Private
- Parameters for main being "String[] args"
Due to Java being a statically typed language, dang do I feel like I do some typing. The System.out.println Live Template ("sout"-tab) certainly comes in handy. I'm sure there are more defaults offered by IntelliJ and I'm excited to discover those.
The topics covered so far have been:
- Basics (println, Scanner, variables, Strings, concatenation, etc.)
- If/If-Else
- Switch Statements/Expressions
- Operators
One of the things that caught my eye was variable typing. Why are things like int, double, and char lowercase while String and Scanner are uppercase?
I discovered the answer is that Java has 8 primitive types. Those types are int, char, double, boolean, float, long, short, and byte. These are all part of the Java's core syntax and are not defined as classes.
String and Scanner on the other hand, are classes in Java. When you create a variable of one of these types, you're creating a reference to an object.
I am curious to see how code (or packages) can be passed around. I'm also wondering how we define something like an "entry" point within Java but I'm sure that's coming.
With the introduction out of the way, the parts that should follow should be more Java/code-focused. We are quickly headed towards Loops, Methods, Objects, Arrays, and more!