Sign up ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

What are the things that Java (the language and platform) got categorically right? In other words, what things are more recent programming languages preserving and carrying forward?

Some easy answer are: garbage collection, a VM, lack of pointers, classloaders, reflection(?)

What about language based answers?

Please don't list the things Java did wrong, just right.


locked by World Engineer May 7 '13 at 21:56

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

closed as not constructive by World Engineer May 7 '13 at 21:56

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

41 Answers 41

Ease of debugging!!

Checked exceptions: because they force me to write more-exception-safe code.


Ease of modularizing code (JARs).

Garbage collection.


The API is something that is unmatched in my opinion. The fact that it tells you (because the language makes you define...) which Exceptions are thrown and things like that. It really makes development easier.

Also, the libraries are open source.

Edit: I just read the explanation of why forced Exception handling wasn't implemented in C# and I still think that I like them to be forced.

Checked exceptions are unpopular because they remind you constantly that you need to write exception-safe code, something people like to forget about. –  quant_dev Feb 26 '09 at 0:20
  1. Platform independence
  2. A sane versioning system- basically 6 well documented and relatively backwards-compatible iterations (1.0 - 1.6).
  3. A Pretty decent command line interface



Good harmony with IDE tools such as Eclipse, NetBeans, or IntelliJ.

  • platform-independency (yeah, it matters)
  • clean and safe OO approach (except for primitive types)
  • the concept of interfaces (nice architectural paradigm, though mixins/traits are missing)
  • type-safe enums
  • convenient GC

Being both open source and allowed in almost all large corporate environments is no small feat.

Dean, initially Java was not open source. It was until version 1.6 when it became Open Source. By then Java had already taken over the world. –  OscarRyz May 5 '10 at 18:12

Dynamic dispatch, aka virtual functions, are the default.

This is one of the key pieces to implementing polymorphism in an object-oriented language. And if you're used to duck-typed languages like Python, you might not believe that a language claiming to be OO could get away without it. But C++ did: it will dispatch based on the static type of the variable, unless the method is explicitly marked as virtual (and yes, I understand the reasons for that choice).


wide acceptance, huge and active community and open source frameworks for almost every possible thing


The most important thing after GC is reflection. It isn't new, but sould be everywhere from now on.

  • Reflection
  • Application Deployment/Packaging
  • Documentation & the documentation system