Barf wrote:LibraryLoader.java needs to be rewritten to take the "bit" into account also on Windows (and Mac?). Also taking the
standard library path into account would be a good idea here
It could very easily be changed to check whether it is running 32-bit or 64-bit and pick the appropriate one. I'd already have that done if we had 64-bit builds of the DLLs. I've also already changed it to try the standard library path if it can't find it in the hard-coded path.
Barf wrote:Obviously I did not get by point across. Next try: I have respect for the problem of parallel versions, as a general principle. In this very situation, however, no active development appears to take place. (Theoretically, it can change, but I do not consider it likely): Therefore, just here, that argument does not appear to have much practical weight; is "abstract".
Oh no. You got your point across quite clearly. I just disagree with it. Just because IR has no "active development" does not change that it is the gold standard of how things work. The mere fact that it is still being used actively and extensively without regular bug releases only reinforces the quality of the product. Just because something is old or not being actively developed does not mean it is bad or should be replaced.
Barf wrote:If that is your opinion (I personally differ) it is a riddle to me why you refuse to use the Java ExchangeIR. It does what you want. Quite contradictory, really.
It does what I want? So you're saying that you can guarantee me 100% that it will do exactly what the ExchangeIR.dll does in every single situation for every single call of every single function? You even admitted it that your Java version was only a partial translation, so I doubt that's true... Even if so, we're already using JNI for several other libraries...why jump through hoops to change? Are you going to translate DecodeIR to Java as well? Are you going to maintain those versions up-to-date as the original authors update their C++ versions?
Even if you are going to do all those in some valiant effort to save us from JNI, it still won't be complete. We'll still have to use JNI for the hardware interfaces, and so we're still stuck with the problem of having to distribute and load DLLs... If we have to solve the DLL+JNI problem anyway, why not leverage that solution for these other libraries? The only reason NOT to is just some philosophical notion of "correctness".
Barf wrote:
There's no reason to reimplement a bunch of stuff that's not really broken (in fact, it's a generally accepted bad idea).
You find one(!) twelve year (!) old blog entry, and conclude "generally accepted"?!
If you don't recognize and agree that Netscape's decision to rewrite was one of the worst software development business decisions in the last 20 years, then I don't know what to say. It's a canonical example for a reason, and the lesson to be learned from their mistake rings just as true today as it did then.
Barf wrote:Possibly more interesting: The blog article does not support your standpoint at all! It says that complete new implementation from scratch is evil, refactoring is good. However, translating C++ to Java is not new implementation, it is rather to be compared to refactoring!
Translating to a new language is refactoring? That's just laughable and also completely erroneous. Changing to another programming language is definitely "rewriting" and not "refactoring". It's almost like you are just making stuff up at this point to create a reality in which everything you say makes sense and is correct. All you seem to care about is stuff being shiny and new. You seem to think anything old should be just because it's old. Do you really think any of the users care what language the app is written in? They just want it to work. Rob's situation doesn't "illustrate your point" in the slightest. All it does is highlight problems in the current implementation. If the logging were properly done to indicate the problem, then Rob never would have had a problem. If the user were given good clues in the app (disable the tab, tooltip/popup indicating the problem, instructions to resolve), then there wouldn't even be a problem. However, instead of adding a few small UI features to detect the problem and tell the user about how to fix it, you'd rather rewrite everything in Java. That's like demolishing your house and building a new one instead of replacing a light bulb.