If you go down the Java route you will probably end up working with enterprise/legacy software. If you are fine with that, do it. But what's wrong with focussing on JavaScript as your main language?
No Stupid Questions (Developer Edition)
This is a place where you can ask any programming / topic related to the instance questions you want!
For a more general version of this concept check out [email protected]
Icon base by Lorc under CC BY 3.0 with modifications to add a gradient
Sorry if I worded it strange. What I meant was that I'm going down the JavaScript path. But that doesn't mean I'll only ever do JS. I've already had to work with some PHP and Ruby. So would Java also be likely to come up eventually?
In my experience, you learn a language and then you apply for a job that requires that language. So, if you don't learn Java, you won't apply for a Java developer position. You can go a whole career without touching Java.
Unlike PHP, which has the tendency to sneak up on you (never met a PHP programmer who chose to become one) Java will most likely not just come up if you don't go looking for it.
The opposite actually happened to me. PHP was my first non-intern position. That company eventually started working with Java, so I made that transition when they did.
Fascinating. It has been a running joke in my bubble that no one ever picks up PHP voluntarily. It's just everywhere.
I wouldn't overthink it. Learn the languages you like. Learning an OOP language in depth is a good idea, but it doesn't have to be Java. C# or even modern PHP also work fine.
I used PHP voluntarily. 22 years ago there wasn't much choice. Java hosting options were expensive, Perl options were more expensive than PHP, C# didn't exist (this was the same year it came out!), Python 2 wasn't commonly installed by default on Linux distributions etc. No cloud, no Node.JS. If you had access to Windows server you could use VBScript - if you targeted Internet Explorer (versions 4 and 5 were dominant, 6 was new, it was the most popular internet browser at the time) you could use VBScript for both server-side and client-side scripting. Java applets were a thing. But if you didn't need that, PHP was the most accessible option. And since many hosting providers gave you similar versions of PHP and its libraries, you knew what could work and what not and that you could move your website from one hosting provider to another.
I was choosing at the start of my career between C# and PHP, and I chose PHP. I love the simplicity of the language, as it does everything I need, and it's very quick to prototype basic funcionality in no time.
It was less voluntary to use Perl, but they pay a lot, and it always ended in PHP anyway.
I'm a full-stack web developer. I mainly focus on frontend TypeScript/Angular at the moment, but we still support older products made with JavaScript/AngularJS. Across different projects I have had backends using php, Python/Django, Java/JSP, C#/asp.net, JavaScript/Express. Some languages have features or frameworks that make them easier for certain use cases, but sometimes I don't have any choice and one type of server is required to interface with external code or applications.
I don't know how likely it is that you will encounter a situation where Java is required, but that situation did arise for me and I am still forced to use it to support one of our products. If I had a choice though I would always pick C# over Java, since C# is pretty similar, but in my opinion every change is an improvement, and I feel like it has a lot of extra features.
Your preferences might be different though so I agree with the other sentiment that you should give everything a try, and see which languages/frameworks appeal to you and you want to learn more about.
In my personal opinion you should try to be a beginner or intermediate in all languages you think you'll need to work on. It makes you more valuable as a teammate and helps people view you as someone who can pitch in with anything. So if you think you'll need to use Java at your current job then I'd learn some!
You say you're familiar with Python, I say I'm intermediate with it, so like I only recently learned Python has multiple returns and tuples separately from each other. To me that's intermediate. Like, I can read python code and be pretty sure I understand what it does but I'll probably be a lot slower especially with niche features and frameworks.
If you do get into Java you'll want to look into Spring Boot. It is the de facto framework of Java the same way Rails is the de facto for Ruby.
you should try to be a beginner or intermediate in all languages you think you’ll need to work on
This is good advice. Don’t be too much of a generalist to the point you know a lot of stuff badly, but also don’t corner into a technology and make it your identity.
Learn mainly the strengths and weaknesses of each language and tech you use, so you’ll know when you should pick something different for a specific project.
You're 20. Learn one new language every other year. Try to build something substantial with the languages you want to work with. Choose your languages by job availability and expected salary. Jobs with rare languages (example COBOL) tend to pay better.
I would say yes, Java can be useful. Look into basics of Spring Boot. My previous job was greenfield development of cloud microservices in Spring Boot and Kafka. We used Azul JVM (the paid version with some cloud goodies) but GraalVM can compile your code AOT so it starts fast (not as fast as C++ but no sloth either). Java might not be only for old legacy systems. Java craze is over but Java didn't go away.
However Java as a language might not be everyone's coup of tea. I like it but you might not.
Depends on industry really. You will find Java everywhere, so having knowledge of it will help you just about anywhere. For example payment industry, Android native development, etc. Mostly older codebases will be in Java, but you can find new projects too. Java tends to be used by bigger corporations, so it's almost always a bloated mess.
Python is heavily used in machine learning, which is the next hot thing, so it's a safe bet too. And it's a very beautiful language, even if it's not the fastest.
I would try to get away from JS, because it has the lowest barrier of entry, and the most developers, so it's very competitive and lower paid than the other languages you mentioned. But it's the gold standard in front-end, so if you like that you can learn React or Vue. You can also incorporate Typescript if you want to.
I wouldn't try to get into C++ either. Rust and Go are gaining traction in the same areas that would have used C++ traditionally, so I think either of those are a good fit if you want to do exclusively backend work.
What kind of industry or area are you interested in?
Current Android native development is C++/Java, with the Java being slowly replaced by Kotlin.
I don't know if I exactly have an interest. I love reverse engineer and hacking work but that's probably better as a hobby due to it being so specific. I'm in uni for Cyber Security so preferebly any language related to that. I mostly work with JavaScript just because I do a lot of Web Dev and server side code. C++ was for game modding stuff. I have been looking at Rust for a while and what I've done I found to be easier than C++. And am planning to do future projects in Rust. Mainly game dev stuff. Which again tends to be better as a hobby over a job. But it translates over to other things.
If you already know C++, you can learn Java in a few days, so it's not worth it unless you are looking for a Java job. Try something new like Kotlin, Rust, TypeScript, etc.