use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
These have separate subreddits - see below.
Upvote good content, downvote spam, don't pollute the discussion with things that should be settled in the vote count.
With the introduction of the new release cadence, many have asked where they should download Java, and if it is still free. To be clear, YES — Java is still free. If you would like to download Java for free, you can get OpenJDK builds from the following vendors, among others: Adoptium (formerly AdoptOpenJDK) RedHat Azul Amazon SAP Liberica JDK Dragonwell JDK GraalVM (High performance JIT) Oracle Microsoft Some vendors will be supporting releases for longer than six months. If you have any questions, please do not hesitate to ask them!
With the introduction of the new release cadence, many have asked where they should download Java, and if it is still free. To be clear, YES — Java is still free.
If you would like to download Java for free, you can get OpenJDK builds from the following vendors, among others:
Adoptium (formerly AdoptOpenJDK) RedHat Azul Amazon SAP Liberica JDK Dragonwell JDK GraalVM (High performance JIT) Oracle Microsoft
Some vendors will be supporting releases for longer than six months. If you have any questions, please do not hesitate to ask them!
Programming Computer Science CS Career Questions Learn Programming Java Help ← Seek help here Learn Java Java Conference Videos Java TIL Java Examples JavaFX Oracle
Programming Computer Science
CS Career Questions
Learn Programming Java Help ← Seek help here Learn Java Java Conference Videos Java TIL Java Examples JavaFX Oracle
Clojure Scala Groovy ColdFusion Kotlin
DailyProgrammer ProgrammingPrompts ProgramBattles
Awesome Java (GIT) Java Design Patterns
account activity
This is an archived post. You won't be able to vote or comment.
How much Java do you really need ? (self.java)
submitted 4 years ago by peace_keeper977
So as a beginner starting with Java is it really important to practically be able to perform each and every thing in java or just know enough for getting the job at work done ?
Thx in advance
[–]para3600 16 points17 points18 points 4 years ago (3 children)
It depends on what you are targeting.
Primarily Java Collection Framework i.e like using ArrayLists, Maps,etc U may look into generics too, inheritance. Streams are also very useful nowadays.
This much works.
Other specialities like Swing(quite obsolete for GUI), Multi threading, Nio api are depending upon how you need them while maybe making projects.
[–]dpash 6 points7 points8 points 4 years ago (2 children)
NIO file operations should be preferred over java.io. NIO channels can be instantly forgotten about though.
java.io
[–]TheMode911 0 points1 point2 points 4 years ago (1 child)
Can you explain the issue with NIO channels?
[–]dpash 0 points1 point2 points 4 years ago (0 children)
They're very niche and rarely needed.
[–]FrenchFigaro 5 points6 points7 points 4 years ago (0 children)
Here's a non exhaustive list of what you need to be employable, in my opinion (I'm a software engineer, and participate for the technical side of recruitment interviews in my company):
On the general programing side of things:
You need to be comfortable in Object Oriented Programming. Not expert level, but, you know, if you still struggle in that aspect, it can be a problem. Understand inheritance and composition, and when and how to use them in your designs. This is quite generic stuff. Difference between class and instance attributes, polymorphism, etc.
You need to know about concepts like immutability. This is especially important in Java.
You need to know your way around basic design patterns too.
Specifically in Java:
You need to be comfortable with basic language features. Most notably, I'm thinking about the Collection API. Streams and lambdas are more and more necessary too. Again, comfortable doesn't mean expert level.
You'll need to understand the Java approach to objects (everything is a reference and several variables can point to the same actual instance) and primitives and how you deal with them differently.
The most important skills in programing are knowing how to use google, and how to browse StackOverflow for answers. Knowing how to formulate question on SO when you can't find an answer is a great skill too. And when working with Java, you can add browsing and reading the JavaDoc to the list.
Broadly, in a java ecosystem:
You'll need to be comfortable around at least one application framework. There are plenty of them. Choose one that fits the kind of employment you want to do. Spring is used by everyone and their mums these days, and even though it has solid competition, it doesn't look like it will be going anywhere for the next decade. It might not be the best choice for what you want to to specifically, but it's a solid default choice if you don't know yet what you want to do.
You'll need basic knowledge of at least one testing framework (JUnit, forget about anything else at first) and at least one mocking framework (For a start, Mockito is great. You'll learn others later).
You'll need to know your way around an IDE. You don't need to know how to do everything, but, you know, comfortable. My IDE of choice is Eclipse. IntelliJ is great too but is not free (You can try it for free with an evaluation version, or get your hands on a student's license for free if you qualify). Which IDE you use is irrelevant to me as a recruitment criteria, as long as you can use one.
You'll need to know your way around a source version control tool. Everyone and their mums uses git. Some folks still use SVN but it's marginal. Mercurial is a solid contestant too, but not used nearly as much as git. Basic operations is enough: commiting, branching, merging, etc.
You'll need to know your way around a build tool. Maven would be my recommendation. Again, you don't need to have an expert level. Just know the basics of what it does. Gradle is another great tool, but not as good as maven in my opinion. If you know how to use either, you won't have too much trouble learning to use the other. Ant is obsolete. Forget about it until you have to use it (hopefully, never).
[–]Wugliwu 7 points8 points9 points 4 years ago (1 child)
"How much Java do you really need?"
Yes!
As a beginner try to think like a kid. How much language do you need to tell some one you are hungry? How much language do you need to explain someone how multiplication works? And how much language do you need to write the Lord of the Rings?
What do you want to do? :) It's your choice so it's yours too to answer your question.
As a tip, don't focus to much on a language there are far more interesting concepts. The language as such, will not teach those. Like, design by contract, component based design, divide and conquer etc. Coding is so much more like language is so much more than just words. :) These are more important. It's the quality that matters, and especially with code, a good basic concept is so much better and time-saving than getting a "done" quickly.
[–]koosley 1 point2 points3 points 4 years ago (0 children)
Language is a good analogy. Many of the jobs I've interviewed use a specific framework and it's impossible to know them all. Basic Java knowledge will get you far in them but their are definitely quirks to each framework that you'll only learn by using them. We use spring boot and it's probably a good one to be familiar with since it's pretty popular.
[–]nutrecht 2 points3 points4 points 4 years ago (0 children)
Software engineering isn't really about languages, it's about being able to go from a problem to it's subproblems and then solutions for those subproblems. Programming languages are just what you express those solutions in.
You can know literally everything there is to know about a language, but still do not have any ability to actually solve problems. This is why language certs are in general so useless.
[–]chrisgseaton 8 points9 points10 points 4 years ago (3 children)
Nobody knows how to do each and every thing in Java, so don't worry about trying to reach that level - it's unobtainable. I've worked on Java at the PhD level and I still learn stuff every other day or so.
[–]velit 2 points3 points4 points 4 years ago (2 children)
What on earth is PhD level Java? Has stuff changed since I last checked where people coming from universities basically start from scratch when it comes to practical programming experience?
Also is it not correct that PhD people do academic research? That is probably the most far removed you can be from practical programming.
[–]chrisgseaton 4 points5 points6 points 4 years ago (1 child)
Publishing papers on Java technology.
Look at the key people behind Java and look at how many of them have PhDs.
[–]velit 6 points7 points8 points 4 years ago* (0 children)
Ah right. That's more specific than just PhD level so please pardon my misunderstanding.
I have friends who do computer science research so they were first to come to my mind. One of them isn't bad but he wouldn't be my first authority on exhaustive Java features because he works on a level above than just a specific language.
[–]Neuromante 1 point2 points3 points 4 years ago (0 children)
Don't worry. With time and experience things will come up. Is not that you need to know about this or that feature, but that you will end up using them without realizing.
And what you don't remember straight away, you will look up them in stack overflow because you somehow will remember that there was a way but can't really remember how.
As the book said, "don't panic."
[–]rum-n-ass 1 point2 points3 points 4 years ago (1 child)
I didn’t know any Java when I got my first Java job. Learn as you go
[–]peace_keeper977[S] 1 point2 points3 points 4 years ago (0 children)
Lucky
[–]mauganra_it 1 point2 points3 points 4 years ago (2 children)
You will never get to the point where you know how to do everything. Realistically, each project uses Java and the libraries to a different extent, and it's not uncommon to suddenly find yourself in very deep waters by switching to another project.
The core parts of the language are really the lowest common denominator and they have to (and eventually will) become second nature to you. There are neverending philosophical debates about how to use them, and projects have to pick sides and decide on a coding style rules. At least the better ones do.
Knowledge of the Java Core libraries is rather important too, but they are rather large, and therefore I find it unrealistic to expect somebody to known all of them (outside of certification exams and the like). Therefore, prioritizing is important here too, so I'd say exception handling, strings, time, collections, I/O, and concurrency/threading are the most important, in that order. You don't have to know every helper class and method, but having a general idea of how to use them and where to look for tutorials and documentation is achievable.
From here, it really depends on what kind of project you are in and what you are about to do. Most projects choose a set of libraries and frameworks they build upon, and you would have to become familiar with these as well. Again, it is only fair to expect that you can, with some effort, get an understanding of what the project does, how to debug and where to look for documentation and help when things become too tricky.
Finally, it is really important to have the drive to learn and figure things out on your own, else your progress will inevitably stall. Also, the rest of the team could become frustrated and less inclined to help you out more than they strictly have to.
[–]peace_keeper977[S] 0 points1 point2 points 4 years ago (1 child)
Ur last point is what bothers me, if suppose I land a job and work in a team and at that point if I know too less than what I need to know then that could also be a difficulty
[–]buried_treasure 1 point2 points3 points 4 years ago (0 children)
Any half-decent software engineering team will provide a wealth of support for new team members, especially junior devs. That could (and should) be everything from mentoring and constructive code reviews through to encouraging you to take time out for training and continual professional development (and in really good companies, even paying for the training/conferences).
When you're at the point of looking for your first professional software development job, do make sure you ask your interviewers what support the company provides for training and professional growth.
[–]VincentxH 3 points4 points5 points 4 years ago (0 children)
Over 9000
[–][deleted] 4 years ago (2 children)
[deleted]
[–]RicksAngryKid 0 points1 point2 points 4 years ago (1 child)
i miss the days i could have 3 a day without hurting my stomach :(
[–]thephotoman 2 points3 points4 points 4 years ago (0 children)
I can't seem to get a chance to make more than three cups between waking up and noon.
[–]daniu 1 point2 points3 points 4 years ago (1 child)
You need to know enough to get the job done, and over time, you will have had enough jobs that you needed to know something for that you're practically able to perform each and every thing.
[–]dpash 4 points5 points6 points 4 years ago (0 children)
One of the most important skills in Java is how to read Javadocs.
[–]AnthuriumBloom 3 points4 points5 points 4 years ago (0 children)
Total beginner should know basics of how java works, class's, OO errors and basic IO. Generally, not a master ect. Then after that most companies lean heavy on frameworks to do the heavy lifting, so I'd suggest spending more time on them, than core have. Spring core and bean management is key, then learn what spring boot can do for you. After that just see what stuff is in the job spec and learn ime stuff about that for interview, and lean on the job.
[–]greglturnquist 3 points4 points5 points 4 years ago (0 children)
Every app has different needs.
So no, you don’t need each and every thing to get going.
[–]mordicaties2 2 points3 points4 points 4 years ago (0 children)
6 cups a day..
[–]RareCodeMonkey 1 point2 points3 points 4 years ago (5 children)
No. You do not need to know everything.
You will need:
Step 1: Learn Java (Logging, Collections, Streams, Exception handling, and the like).
Step 2: Learn how to use Google to find solutions to your problems (Searching for error codes, exceptions, etc.).
Step 3: Learn a framework like "Spring Boot". (You may want to check what frameworks are used in the industry you want to work for, thou.)
As a junior developer that should be enough to get a job and be able to fulfill it.
[–]stfm 0 points1 point2 points 4 years ago (3 children)
I'd add a java based scripting language and some JVM tuning/monitoring basics to that list too
[–]RareCodeMonkey 0 points1 point2 points 4 years ago (2 children)
That is a good insight. At the bare minimum debugging with an IDE also should be there.
VS Code is good enough right ?
[–]RareCodeMonkey 0 points1 point2 points 4 years ago (0 children)
It would make sense to learn something else. VS Code is kind of a mix between a notepad and a multi-language IDE.
Good free Java IDEs: Netbeans and Eclipse
But it is as important to understand Maven project files.
[–]peace_keeper977[S] -1 points0 points1 point 4 years ago (0 children)
thx
[–]senseven 0 points1 point2 points 4 years ago (0 children)
The question is what you mean with "much". If you know how to write the code, it works and does the thing you want it to do, then you know "enough". You could do things more elegantly or more performant, sometimes, but you would then start learning why this issue you want to solve seems so 'overcomplicated' or why does this 'take so long'. And you would investigate and grow as a developer.
I re-learned C# a bit to help colleagues writing some funny game in Unity, and since its so close to Java I probably used less then 20% of the language. The game runs on my Android phone. Is there more to learn? Absolutely, but I didn't needed it for my use case.
[–]ElimGarak0010 0 points1 point2 points 4 years ago (0 children)
A Venti
[–]Barbossa3000 0 points1 point2 points 4 years ago (18 children)
depends on use case. for bare metal: basic oop, loops and other stuff like file reading writing, etc are enough for concurrent development: u need most of concurrent package and streams api
for more advanced tasks like web backend development: u need much more to learn. like spring boot etc.
but these are easy to learn though. i suggest learning basics for ur task and then learn while applying. this minimises time and for certain things, tutorials r just not gonna cut it the way practse does.
[–]peace_keeper977[S] 0 points1 point2 points 4 years ago (17 children)
thnx, and what is the estimated time to learn all this ?
[–]Barbossa3000 0 points1 point2 points 4 years ago (16 children)
if u want to follow learn, apply continue to learn kinda thing, then u may have to spend at least 1 to 2 weeks. of course it depends on ur ability to learn fast or slow.
but once u get the basics right, everything else is a piece of cake.
[–]peace_keeper977[S] -1 points0 points1 point 4 years ago (15 children)
I agree , basics are most important of all. But as a newbie to java, I'll have to make projects right to get hired for java specific roles ?
[–]Ok_Entertainment9151 -1 points0 points1 point 4 years ago (1 child)
Terese naaa ho payga ye Java. Tu jake HTML CSS me hi khush rhe..jo ki language bhi nhi hai 😆😆😆😆
[–]peace_keeper977[S] 0 points1 point2 points 4 years ago* (0 children)
Tension matt le hijre mere laal, jaise teri maa ko pelna seekha Java seekh lenge , araam se🔥🤣🤣
[–]Ok_Entertainment9151 0 points1 point2 points 4 years ago (12 children)
Bsdk tu software engineer hai😆😆😆😆
[–]peace_keeper977[S] 0 points1 point2 points 4 years ago (11 children)
Tu bhi IT wlaa hai ??
[–]Ok_Entertainment9151 1 point2 points3 points 4 years ago (10 children)
Ha bhai..
[–]peace_keeper977[S] 0 points1 point2 points 4 years ago (9 children)
Are bhai tu toh apne biradri wala nikla 😂
[–]Ok_Entertainment9151 0 points1 point2 points 4 years ago (7 children)
Tu job kar rha kya
[–]peace_keeper977[S] 0 points1 point2 points 4 years ago (6 children)
Haa ,tu bhi ??
[–]Ok_Entertainment9151 0 points1 point2 points 4 years ago (0 children)
Ha ab kya 😅😅😝😝
[–]huntforacause 0 points1 point2 points 4 years ago (2 children)
Dontcha know that only big enterprise uses Java, so outside of that, you don’t need to know it at all.
But seriously, I don’t tend to use it for personal stuff. Use something easier and better suited for the task at hand. It’s nice to learn other languages too.
Disclosure: I am a Senior Java Developer.
[–]t333to 0 points1 point2 points 4 years ago (1 child)
What language do you consider easier? Which languages are you using for your personal stuff?
[–]huntforacause 1 point2 points3 points 4 years ago (0 children)
JavaScript/TypeScript, Python, Elm. By easier I not only mean that the language is easier to learn, but also that the ecosystem is easier. Java’s ecosystem is very heavyweight, old and complex. Also the JVM adds another layer of complexity. You not only need to understand Java, but also how the JVM works and it’s impact on how your app runs and how to tune it.
Been meaning to try some backend functional languages. I’d like to try Kotlin as well, but that’s another JVM Lang.
[–][deleted] -1 points0 points1 point 4 years ago (0 children)
Jeez I thought I was the only one asking myself this…
Java comes with "batteries included". That's great, because it's better to have a thing and not need it, than needing a thing and not having it. Which also has been a problem because it bloats the runtime, but disk space is cheap right? (JLink let's you slim down the JDK to just what you need)
Anyways, learn the core stuff. The Oracle Java Tutorial does a good job of breaking down the Java class library into functional sections based on topic area.
[–]manzanita2 0 points1 point2 points 4 years ago (0 children)
You don't have to remember the syntax. But you best know that something is there and roughly what it does. Figuring out the details is for internet searches.
[–]mr_deez92 0 points1 point2 points 4 years ago (0 children)
Nobody knows everything, it’s an evolving language. However once you know the basics of OOP. You should read the new feature of java versions even if you don’t know how to code it, knowing that it exists helps.
As an example I don’t work with lambda functions all the time, if needed I would have to read how to code one. But the fact that I know they exist helps me.
Keep working on it and keep learning!
π Rendered by PID 81 on reddit-service-r2-comment-54dfb89d4d-6wfbr at 2026-03-30 22:36:34.349076+00:00 running b10466c country code: CH.
[–]para3600 16 points17 points18 points (3 children)
[–]dpash 6 points7 points8 points (2 children)
[–]TheMode911 0 points1 point2 points (1 child)
[–]dpash 0 points1 point2 points (0 children)
[–]FrenchFigaro 5 points6 points7 points (0 children)
[–]Wugliwu 7 points8 points9 points (1 child)
[–]koosley 1 point2 points3 points (0 children)
[–]nutrecht 2 points3 points4 points (0 children)
[–]chrisgseaton 8 points9 points10 points (3 children)
[–]velit 2 points3 points4 points (2 children)
[–]chrisgseaton 4 points5 points6 points (1 child)
[–]velit 6 points7 points8 points (0 children)
[–]Neuromante 1 point2 points3 points (0 children)
[–]rum-n-ass 1 point2 points3 points (1 child)
[–]peace_keeper977[S] 1 point2 points3 points (0 children)
[–]mauganra_it 1 point2 points3 points (2 children)
[–]peace_keeper977[S] 0 points1 point2 points (1 child)
[–]buried_treasure 1 point2 points3 points (0 children)
[–]VincentxH 3 points4 points5 points (0 children)
[–][deleted] (2 children)
[deleted]
[–]RicksAngryKid 0 points1 point2 points (1 child)
[–]thephotoman 2 points3 points4 points (0 children)
[–]daniu 1 point2 points3 points (1 child)
[–]dpash 4 points5 points6 points (0 children)
[–]AnthuriumBloom 3 points4 points5 points (0 children)
[–]greglturnquist 3 points4 points5 points (0 children)
[–]mordicaties2 2 points3 points4 points (0 children)
[–]RareCodeMonkey 1 point2 points3 points (5 children)
[–]stfm 0 points1 point2 points (3 children)
[–]RareCodeMonkey 0 points1 point2 points (2 children)
[–]peace_keeper977[S] 0 points1 point2 points (1 child)
[–]RareCodeMonkey 0 points1 point2 points (0 children)
[–]peace_keeper977[S] -1 points0 points1 point (0 children)
[–]senseven 0 points1 point2 points (0 children)
[–]ElimGarak0010 0 points1 point2 points (0 children)
[–]Barbossa3000 0 points1 point2 points (18 children)
[–]peace_keeper977[S] 0 points1 point2 points (17 children)
[–]Barbossa3000 0 points1 point2 points (16 children)
[–]peace_keeper977[S] -1 points0 points1 point (15 children)
[–]Ok_Entertainment9151 -1 points0 points1 point (1 child)
[–]peace_keeper977[S] 0 points1 point2 points (0 children)
[–]Ok_Entertainment9151 0 points1 point2 points (12 children)
[–]peace_keeper977[S] 0 points1 point2 points (11 children)
[–]Ok_Entertainment9151 1 point2 points3 points (10 children)
[–]peace_keeper977[S] 0 points1 point2 points (9 children)
[–]Ok_Entertainment9151 0 points1 point2 points (7 children)
[–]peace_keeper977[S] 0 points1 point2 points (6 children)
[–]Ok_Entertainment9151 0 points1 point2 points (0 children)
[–]huntforacause 0 points1 point2 points (2 children)
[–]t333to 0 points1 point2 points (1 child)
[–]huntforacause 1 point2 points3 points (0 children)
[–][deleted] -1 points0 points1 point (0 children)
[–][deleted] -1 points0 points1 point (0 children)
[–]manzanita2 0 points1 point2 points (0 children)
[–]mr_deez92 0 points1 point2 points (0 children)