Posts Tagged Java
GCJ to Sun Java
Posted by bytingme in Uncategorized on June 6th, 2010
It’s always a problem when you have more than one version of a particular product/package and more so if you have both of them co-existing in your system. I was playing around with Selenium yesterday when I had to execute the selenium server jar. It repeatedly kept giving errors and crashing whenever I tried executing the Selenium tests.
Like how a naive person would think, I thought executing “java -jar selenium.jar” would always invoke sun’s version of java since the open-source version invocation to execute is generally
“gij classname ” and “gcj class-name.java” for compilation.
Apparently, it isn’t so! And it was using Open-source’s version of java to execute the jar because of which so many exceptions were thrown! I always hated setting classpaths, modifying profile information, etc. – most of the cases it has never worked for me! Googling a little got me to a solution where you could easily switch from gcj to sun-java and vice-versa.
sudo update-alternatives – - config java
That’s it! All you need to do is just choose which version you want and it uses that as a default value. Isn’t this simply amazing instead of some nasty classpath changes, exporting SHELL variables, etc..! And yes, if you are a web-developer, I suggest you checkout selenium – amazing tool!
Java versus C++
Posted by bytingme in Uncategorized on January 17th, 2009
Life at Amazon.com has been pretty good except for a few intricately hidden bugs which at times are difficult to swat! Here’s one nice bug, oops! (no pun intended) I wouldn’t call it a bug. Fully geared up for the task given to me this morning, the keyboard had a bad day until I had to do a swap…
Well, what’s there in a swap after all ? Just out of college, you do tend to show a lot of gimmicks, don’t you ? I too, am a faithful follower of the policy and wrote x^=(y^=(x^=y)); where x,y are integers. Now, compile successful, build successful, Yaaaaaaaaay!!! – it’s a 1000 line code, so the celebration kind of justified
. But wrong answer
So, I get down to the debugging stage, I do a
while( 1 ) { debug; }
After spending a lot of time (no way, am going to tell you how much I spent
), I realised, there was a bug in my swap code!!. Can you imagine ? It was such a common question, almost appeared in every single CS written paper. But, this is Java dear
Googling Java specifications lead me to a new finding:
“A compound assignment expression of the form E1 op= E2 is equivalent to E1 = (T)((E1) op (E2)), where T is the type of E1, except that E1 is evaluated only once”
Hence, whatever assignment happens in (x^=y) has almost nil effect w.r.t this statement!!!! This one-liner won’t work To be more precise, C++ rule states
“A compound assignment expression of the form E1 op= E2 is equivalent to E1 = (T)((E1) op (E2)), where T is the type of E1″
Step 1: x = x^y;
Step 2: y = y ^ ( x^y ) = x;
Step 3: x = (‘x’ computed from Step1) ^ (y computed from Step2 ) = = (x ^y)^x =y
PS: I could have definitely explained it better using opcodes, but I want to keep it as simple as possible. As long as the meaning is conveyed, I am happy
Let’s see what Java does
Step 1: x = x^y;
Step 2: y = y ^ ( x^y ) = x;
Step 3: x = (x) ^ (y computed from Step2 ) = = x^x = 0
This result is attributing purely towards the wicked statement at the end
At the EOD, I said “Thank God, there are no #defines in Java, God knows how many gimmicks I would have shown with that and how many screeching bugs would have been inside!!” I want to look at the bytecodes generated, googling how to look at it now:-). My 1st lesson, well learnt


Recent comments