Commons Collections 3.0 ha ha ha!
It’s hard to describe the glee I feel at the release of commons-collections 3.0. The sheer suffering and pain that this release will hopefully cause a lot of people is making me giggle like a little girl. It’s hard finding words to fully capture my gratitude to the commons monkeys for thoroughly screwing their users and showing themselves to be the evil bunch of spastics I’ve always insisted they are.
So, what’s so bad about it? Well, the fine Jakarta folks decided with one mighty menu click in IDEA to refactor. Classes have moved packages with impunity! API methods have been changed! Someone went wild with the deprecated tag!
As if that wasn’t hilarious enough, they decided to split it even further into more jars! It’s like a bad comedy sketch at this point. I mean, previously I suppose one could have argued up to a point, then conceded that what they’ve done so far is not explicitly harmful, and merely violates all that is beautiful, clean, and wholesome about Java. No longer! Now it should be plain to see to even the medically braindead amongst you that depending on such shite is a very, very foolish idea.
The real fun starts of course when the more enlightened OSS users amongst you decide you’d like to upgrade. Like a good little OSS monkey, you use a whole bunch of other OSS crap. Most of which, needless to say, casually uses commons-collections like a cheap whore in a time of need. Sorry kids, you can’t upgrade. You have to upgrade every single thing to use this shiny new API, or upgrade none. Woe unto you as some of the libs move on to collections-3.0 and refuse to support your current version, with that standard OSS battle cry of ‘just upgrade, it’s fixed in the current version!’. You could always of course go for deploying both versions, although I don’t know how you’d be able to sleep at night knowing you had done such an evil thing.
Astoundingly enough, there doesn’t even seem to be a guide anywhere as to what classes moved or why, or a clear description of the API changes on the pile of crap that maven shat out onto jakarta.apache.org. I’m sure one exists, but is buried somewhere deep in that rotting pile (or go through the shame of actually downloading the release). After all, it’s not nearly as important as being able to see TODO list for the project and all the shiny project metrics.
The saddest part about this is all the people who will still advocate this idiocy, and dig deep to try and find some justification for the madness. For these people, enough is never enough, they will cling to their false prophets in the face of all adversity, resolutely refusing to ever learn or evolve beyond the drooling simpletons they are.
Aren’t you glad now that there’s no spec mandating future behaviour or contracts?
January 26th, 2004 at 3:40 pm
FIRST POST
January 26th, 2004 at 3:40 pm
SECOND POST
January 26th, 2004 at 3:40 pm
THIRD POST
January 26th, 2004 at 4:14 pm
FOURTH POST
January 26th, 2004 at 4:14 pm
When you are right you are right.
January 26th, 2004 at 4:21 pm
I am an asshat, short and stout,
this is my jimmy and this is my spout,
when I get all steamed up I just shout,
“bend me over and pine-apple me out!”
January 26th, 2004 at 4:24 pm
This is #java Haiku.
I am a flaming homo.
Please pineapple me.
January 26th, 2004 at 4:49 pm
Best. Bile. Ever.
Hats off, Hani!
January 26th, 2004 at 5:05 pm
Okay Hani, so now you must have a big smile on your face.
I’m using commons-collections. I mean, I use half a dozen of third-party jars that use commons-collections, and I use it also directly myself.
And I’m using JBoss, with its wonderful Universal Class Loader (one classloader to rule them all…).
This really sucks. You were right.
January 26th, 2004 at 6:01 pm
I see your “self contained” blog is spamming javablogs again, Hani. Liar.
January 26th, 2004 at 6:17 pm
your “irrelevant arguments list against Maven” starts always with the site that it generates, which is: optional and customizable…is that all what you’ve got?…next!
January 26th, 2004 at 6:26 pm
What you morons are all missing is that this is th precursor to commons-collections-4, the missing link, which has a set of delegates with the old packaging structure that, you know, delegate to the NEW packaging structure.
January 26th, 2004 at 6:51 pm
I have never used commons-collection.jar, but I remeber it contained (and perhaps still does) collection classes for primitives. Someone expained to Hani, that the Axion database neeeded this collections to conserve memory (and I am sure other projects need optimized collections too). Now ,if you just look at the interview: “Generics in C#, Java, and C++ - A Conversation with Anders Hejlsberg” you will noticed the extra efforts Anders put in the C# generics design to address exactly the same issue…
January 26th, 2004 at 7:01 pm
]
]which has a set of delegates with the old
]packaging structure that, you know, delegate to
]the NEW packaging structure.
]
Ahh, you mean like a compatibility.jar?
January 26th, 2004 at 8:51 pm
Fuck, I mean how many times can you release a set of collections. Do these people suffer from OCD? are they compelled to spend the rest of their lives writing more and more collection API’s????
January 26th, 2004 at 11:19 pm
About time a rearrangement was done. Collections has lots of useful classes in and the lack of a clear structure made it hard to see things.
Someday I am going to find myself with ‘3rd-party-lib A’ and ‘3rd-party-lib B’, one of which needs Collections 2.1, and one of which uses Collections 4.0, neither of which will work with each other.
Of course, I also have a PDA which is stuck on JDK 1.1.8, so I’m not too impressed at all this Java-2 nonsense, and I’m a bit pissed that JBoss 3.x does not use the same configuration as my JBoss 2.x system, and all my code that uses the special bits in JBoss no longer compiles under JBoss 3.x.
The sad thing is the number of people who think Hani believes his words for more than the 5 seconds it takes to write them :)
There is one good point in there [and thus why I bother to read the blog]. A JavaDiff needs generating to show the difference between 2.1 and 3.0.
http://www.apache.org/~bayard/commons-collections/Commons-Collections-2.1-to-3.0/changes.html is one, but it’s a week or so before release and might have some very tiny differences.
January 27th, 2004 at 12:27 am
Ash jar durbatulûk, ash jar gimbatul,
ash jar thrakatulûk agh burzum-ishi krimpatul.
January 27th, 2004 at 1:47 am
We’ve already started implementeding Commons-4 which will address most if not all of the issues Hani complains about here. It will be much better API and we will do many performance improvements. Plus we will add some coool new features. This will require some small API changes but we believe the end result is worth it.
January 27th, 2004 at 4:02 am
But I’m assuming a new version will introduce even more API incompatibilities? Why not do it all at once and at least document the changes…
January 27th, 2004 at 9:41 am
Docs are for losers. Real programmers can read the source and figure out the changes.
January 27th, 2004 at 1:01 pm
Well surely, the new packages have been renamed, so that 2.1 and 3.0 can co-exist?
Why not org.apache.commons.collections
and
org.apache.commons.collections3 ?
We don’t want collisions in our namepsace do we?
January 27th, 2004 at 1:51 pm
hehe.. you wish
January 27th, 2004 at 3:42 pm
I particularly like this:
“Note that this interface violates the Collection contract. The behavior specified in many of these methods is not the same as the behavior specified by Collection. The noncompliant methods are clearly marked with “(Violation)”. A future version of this class will specify the same behavior as Collection, which unfortunately will break backwards compatibility with this version.”
Isn’t that lovely.
January 27th, 2004 at 5:55 pm
I’m in the process of updating commons-logging to serve not only as a wrapper for logging implementations but also as a wrapper for versions of commons-collections, so different versions can be used transparently. As long as you make sure to put commons-properties.xml in your home directory on the machine, you can use as follows:
Collection collection = Collections.getCollection(”mypackage.myclass”)
Sorter sorter = Collections.getSorter(”mypackage.myclass”)
collection.add(a); collection.add(b); sorter.sort(collection).
January 28th, 2004 at 2:30 am
Hey I like that idea! It would be so cool if we could have common interfaces that everyone can use to call their commons library.
We should really find all the abstractions in the current jakarta-*.jar packages and turn them into interfaces and package that. Then everyone would use our interfaces for everything.
We could perhaps name it jakarta-bestsolution.jar … or maybe jakarta-bs.jar would be better, shorter name.
I think most people would want to have jakarta-bs.jar in their classpath. Maybe we would be able to get even Sun to distribute it as part of lib/ext so it’s always there…
January 28th, 2004 at 11:53 pm
“Docs are for losers. Real programmers can read the source and figure out the changes.”
I just love to have my company relying on such intelligent people to provide frameworks.
January 29th, 2004 at 10:11 am
Sorry Hani, you got it wrong. I used Eclipse to refactor collections not IDEA ;-)
January 29th, 2004 at 11:50 am
When dialogues change
Between ice and fire
And wind comes
Spilling sperm over your eyelids
Like mayonnaise
And sand eviscerates
Your intestines, you watch
The skeletons crawl and dance
And wonder why
You’re reading this.
January 29th, 2004 at 3:13 pm
I’m back
January 29th, 2004 at 3:13 pm
I’m rampant. Don’t even try to punch ME!
January 30th, 2004 at 9:44 am
Is fate upset with web services too? He’s gotta have a bone to pick with that one ;)
February 2nd, 2004 at 9:05 am
>
> “Docs are for losers. Real programmers can read > the source and figure out the changes.”
>
> I just love to have my company relying on such > intelligent people to provide frameworks.
>
Huh? Somebody who’s enough of a fucktard to take that comment seriously runs a company? Has a job? Truly frightening!
February 5th, 2004 at 2:45 am
Hani You Fuck Head stop bitching about common-* it’s getting Old you retard !