When I worked in the U.S. federal govt, the same procurement process applied to a $20 technical book and a $200,000 order for 100 barcode printers. It was ludicrous.
The BileBlog has its usual acerbic take...
on
EJB 3.0 in a Nutshell
·
· Score: 0, Troll
Also, is anyone else distraught by the obsessive use of the acronyms POJO/POJI? While it's understandable that a bunch of open sores asshats enjoy indulging in this fappery, I find it highly upsetting that this 'street lingo' has made its way into a supposedly professional serious spec. Is it so hard to say JavaBean/Interface? What's even funnier is that in every case, the POJO/POJI silliness is never used standalone, but always in paranthesis after 'regular java bean' and 'regular interface' respectively.
[...] it is recommended that state departments actively research and evaluate open source code alternatives prior to considering use of the traditional procurement model for software.
That makes a lot of sense, and it provides a good incentive - anything to avoid the crushing burden of the govt procurement process!
Sure! There's certainly a way to do it in Java. But it'll come with lots of casting and type-specific classes and all that. And it's a reasonable tradeoff that Gosling et al made - static typing is cool in many ways.
> when 1.5 is released, 1.3.x > will no longer be supported
That's a darn good idea.
> version-specific coding errors > as a PMD ruleset?
Make that two good ideas. It'd be tricky, because in the example you gave PMD would need to chase down types and such. But it'd be handy even if it would just catch a few cases...
> regex library
Ah, I'd forgotten about that... another 1.4 bonus. Very nice!
Nahhh.... declare the Iterator inside the for statement, it'll go out of scope and get GC'd sooner. Over several centuries, this can save up to a microsecond.:-)
But that aside, jamming the loop body into the optional ForUpdate expression is hardly a standard Java idiom. And the Ruby example I gave is certainly a standard Ruby way of doing things.
> I'd prefer a compiled language, because > watching production crash because of a > typo is not fun.
Touche! Those typos are always in odd places, and they don't show up until a critical moment. Argh...
I usually write tons of unit tests to keep my Ruby code from failing like this, but I know I don't have 100% coverage... ah well.
> You are my new friend, tcopeland
Heh:-)
> data objects whose private members > have no setters?
At a previous job I was instructed to declare all variables at the top of the session bean methods, which were sometimes hundreds of lines long. Thus the first twenty lines or so of a method would often be local variables... many of which were unused. And many of them were declared like this:
Vector v = new Vector(100);// dim to 100 for optimization!
but "v" was never used. Argh!
> it's a spare-time task, and thus > far a manual one
Cool! Of course, you'll still need to be careful not to use any new JDK 1.5 methods... but you're right, that does allow using generics and such-like now. Nifty!
> I'm not sure what you meant by > "dynamic this-and-thats,"
Sure. I mean things like Class.forName, like using the java.lang.reflect packages to see what public members a class has, like putting things in a collection and then casting them once they come out to defeat Java's static typing... stuff like that.
> 462263
That is a large number. Consider running PMD on it to see if it can dig up any unused code. One never knows....
> Don't really see how you can compare > a scripting language with an OO > development language.
Hm. I think the line between the two is getting pretty blurry. I mean... Ruby and Python are both "scripting languages", but folks have done some pretty impressive object-oriented apps with both of them. Also, the larger a Java app gets, the more it seems that it uses Class.forName and dynamic this-and-thats to work around static typing and such.
I think that "scripting" vs "OO development" language may still be a useful distinction, but it might be more clear when comparing, say, AWK to Java, not Ruby to Java.
Thanks very much for posting this - it was interesting not only as a rebuttal but also as a list of examples of logical fallacies - i.e., identifying the various false dichotomies. Very educational.
We do parallel garbage collections. We actually have multiple garbage collectors. On the high-end systems that run on multiprocessors, what we'll tend to do is run these concurrent garbage collectors that allow the garbage collector to run in parallel with active code, and we'll dedicate some number of processors to garbage collection.
Nifty. Garbage collection seems to be one of the few areas where the academic research actually trickles down into real applications.
Sounds like the truth is in the middle. He wasn't arrested simply for "carrying an anti-Bush sign", as the OP suggested. But the police weren't right in ordering him to move, either.
In January 1997, reporter Susan Jeffreys of the (London) Sunday Times informed a colleague that J.R.R. Tolkien's epic fantasy "The Lord of the Rings" had been voted the greatest book of the 20th century in a readers' poll conducted by Britain's Channel 4 and the Waterstone's bookstore chain. Her colleague responded: "Oh hell! Has it? Oh my God. Dear oh dear. Dear oh dear oh dear."
When I worked in the U.S. federal govt, the same procurement process applied to a $20 technical book and a $200,000 order for 100 barcode printers. It was ludicrous.
...I foresee problems. Thus, a mirror.
> collection.visit(doSomethingFunctor);
:-)
Sure! There's certainly a way to do it in Java. But it'll come with lots of casting and type-specific classes and all that. And it's a reasonable tradeoff that Gosling et al made - static typing is cool in many ways.
But I think Ruby is more fun
> when 1.5 is released, 1.3.x
> will no longer be supported
That's a darn good idea.
> version-specific coding errors
> as a PMD ruleset?
Make that two good ideas. It'd be tricky, because in the example you gave PMD would need to chase down types and such. But it'd be handy even if it would just catch a few cases...
> regex library
Ah, I'd forgotten about that... another 1.4 bonus. Very nice!
> The java should be more like:
:-)
Nahhh.... declare the Iterator inside the for statement, it'll go out of scope and get GC'd sooner. Over several centuries, this can save up to a microsecond.
> an equivalent to Python's pychecker?
Hm, good question, I don't think so. Sounds like a good RubyForge project, though...
Doesn't compile; you forgot a closing paren.
But that aside, jamming the loop body into the optional ForUpdate expression is hardly a standard Java idiom. And the Ruby example I gave is certainly a standard Ruby way of doing things.
> hadn't progressed off 1.3.
Yup. I've left PMD with 1.3 compatibility for a while... it'd be nice to move to 1.4 and use String.replace() and such-like.
> watching production crash because of a
> typo is not fun.
Touche! Those typos are always in odd places, and they don't show up until a critical moment. Argh...
I usually write tons of unit tests to keep my Ruby code from failing like this, but I know I don't have 100% coverage... ah well.
> You are my new friend, tcopeland
Heh
> data objects whose private members
> have no setters?
At a previous job I was instructed to declare all variables at the top of the session bean methods, which were sometimes hundreds of lines long. Thus the first twenty lines or so of a method would often be local variables... many of which were unused. And many of them were declared like this:but "v" was never used. Argh!
> it's a spare-time task, and thus
> far a manual one
Believe me, I feel your pain.
> ruby statement?
It's the item in the collection that the iterator is operating on. For example:Good times.
> you can't beat Java WebStart
I'm with you there. JWS rocks. I've used it at a job to download an EJB client... it even loaded up a DLL and opened up Excel. JNLP is good stuff.
> you can use the JDK 1.5 compiler right now
Cool! Of course, you'll still need to be careful not to use any new JDK 1.5 methods... but you're right, that does allow using generics and such-like now. Nifty!
> I'm not sure what you meant by
> "dynamic this-and-thats,"
Sure. I mean things like Class.forName, like using the java.lang.reflect packages to see what public members a class has, like putting things in a collection and then casting them once they come out to defeat Java's static typing... stuff like that.
> 462263
That is a large number. Consider running PMD on it to see if it can dig up any unused code. One never knows....
> for( SomeType s : collection )
:-)
> doSomething( s );
Yup, JDK 1.5 (or 5.0?) will introduce generics, enumerations, and a for-each construct - as soon as it gets out of beta.
But it'll be about four years you'll be able to actually use them because it'll take that long for folks to move off of JDK 1.4
> Don't really see how you can compare
> a scripting language with an OO
> development language.
Hm. I think the line between the two is getting pretty blurry. I mean... Ruby and Python are both "scripting languages", but folks have done some pretty impressive object-oriented apps with both of them. Also, the larger a Java app gets, the more it seems that it uses Class.forName and dynamic this-and-thats to work around static typing and such.
I think that "scripting" vs "OO development" language may still be a useful distinction, but it might be more clear when comparing, say, AWK to Java, not Ruby to Java.
> the steady stream of hate mail
Heh, yup, as characterized by this BileBlog entry.
Thanks very much for posting this - it was interesting not only as a rebuttal but also as a list of examples of logical fallacies - i.e., identifying the various false dichotomies. Very educational.
Thanks much!
...and jump right to the beta announcement message.
Sounds like the truth is in the middle. He wasn't arrested simply for "carrying an anti-Bush sign", as the OP suggested. But the police weren't right in ordering him to move, either.
I call "do over".
> These days people are being arrested
> for carrying anti-Bush signs
From reading the article it sounds like he was arrested for disobeying the police.
...that is, life arriving at earth via DNA sent out from aliens.
More on that theory in Wikipedia. Interesting stuff!