I'm glad you added that last line, because that's basically the whole story. Java is /very/ backwards compatible, and it's got round the...errr...quirks of the early versions by having a massive ecosystem of alternative implementations. Some of these (like Joda-Time) are good enough to get widely accepted as the 'correct' implementation.
I don't think anyone will argue when you say that that throws up some barriers to entry, but they're not massive barriers, the standard library does still work. Not having to rewrite your code every six months is much more important.
Is there any major language out there that actively removes old/bad parts of it's standard library?
Re:JDK 8 Release Notes
by peterashford on Tuesday March 18, 2014 @06:58PM
(#7425642)
None that have been successful, and this is the nub of the problem.
It's like Soupstrain said: there are only two kinds of languages: the ones people complain about and the ones nobody uses.
A side effect of success is having a large body of existing code to consider when making changes.
Scala? It's still a very young language, though.
Re:JDK 8 Release Notes
by acjohnson55 on Tuesday March 18, 2014 @09:04PM
(#7426193)
Oh, but it's introduced plenty of quirks of its own, which will have to be painfully removed down the line. Odersky himself is trying to redo and simplify the type system with his Dotty project.
What have they removed from the standard library? Just curious.
Re:JDK 8 Release Notes
by frowaway001 on Wednesday March 19, 2014 @12:12PM
(#7429653)
Just compare the ScalaDoc of different Scala versions.
Things which come to mind (comparing roughly 2.8 (released 2010-07) to 2.11 (released 2013-03)):
Classes (just from the top-level scala.* package):
- Application
- Cell
- cloneable
- CountedIterator
- NotDefinedError
- NotNull
- Responder
- serializable
Complete packages: - scala.actors and subpackages
- scala.collection.interfaces
- scala.concurrent (still exists, but its contents have been replaced completely)
- scala.dbc and subpackages
- scala.mobile
- scala.reflect.generic
- scala.swing and subpackages
- scala.testing
- scala.text
- scala.util.automata
- scala.util.continuations
- scala.util.grammar
- scala.util.logging
- scala.util.parsing and subpackages (includes parser combinators and JSON)
- scala.util.regexp
- scala.xml
(This of course doesn't include things which were demoted from scala to other namespaces like scala.util, scala.runtime, scala.annotations ...)The list is certainly incomplete anyway...
Re:JDK 8 Release Notes
by thescrewdriver on Wednesday March 19, 2014 @07:52AM
(#7427982)
It's more a case of replace than remove...
For example, you'd go directly to Joda-Time or JSR-310. Date and Calendar wouldn't be present at all.
Whether Java should break compatibility to remove all the old cruft I'm not sure. The benefits of the cleaner design might not be worth the costs/inconvenience.