Archive

Archive for the ‘java’ Category

Learning from design mistakes

November 3rd, 2010 4 comments

While coming up with APIs or a framework, design forms a crucial part of the end result. While a solid design does indeed allow for flexible usage of an API, usability goes hand in hand with the design. What better way is there to create an API, than to learn from the mistakes and successes of other developers first ? Lets take a look at some examples in the java API where things could have been better…

Stack and Properties:

A java.util.Stack provides a standard Stack implementation in the java language. But did you know it extend a java.util.Vector ? Why is this wrong ? Because you can do this

package com.design;
 
import java.util.Stack;
import java.util.Vector;
 
public class StackTests
{
 
    public static void main(String... args)
    {
        new StackTests().go();
    }
 
    public void go()
    {
        Vector<String> vector = new Stack<String>();
        vector.add("first");
        Stack <String> stack = (Stack <String>) vector;
        String peek = stack.peek();
        System.out.println(peek);
 
        stack.push("next");
        stack.push("item");
        String remove = vector.remove(2);
        System.out.println("Removed: " + remove);
        peek = stack.peek();
        System.out.println(peek);
    }
}
 
Output:
 
first
Removed: item
next

There are so many things that are going on there that are wrong.

  1. Vector is a slow DS. Its methods are synchronized and there is no way around this right now since this contract has been sealed. It cannot be changed without changing backward compatibility.
Categories: java Tags: , , ,

Will you pay for a JVM on Mac OS X

October 26th, 2010 9 comments

This has been a sad week for java. One of the string of bad things happening to it, is the abandonement by Mac OS X. Among the interesting thoughts that have been thrown out there for a possible rescue plan, this one seemed to stand out.

In a nutshell, the link points to a post by Adam-Bien suggesting that users might pay for a JVM on the Mac, thereby opening up a business opportunity. That might be far fetched considering

  1. Apple wants to be a control freak of sorts. Anything that is not objective-C is a target :D
  2. Folks usually have a very hard time convincing themselves to pay for something that they used to get for free.
  3. It would be pretty difficult to write a JVM targeted for the Mac from scratch, given that many native API calls are secrets.
Categories: java Tags: , ,

Visualizing application errors with Simile timeline

October 2nd, 2010 1 comment

Every developer out there has to troubleshoot a problem in PROD every now and then. The series of steps goes something like this

  1. User notices something fishy
  2. Clicks on a button that reads ‘Do not click here’ :D
  3. Boom !
  4. Developer tries to figure out what happened by fishing through log files.

Now step 4 can be relatively more simple than it needs to be. It is often complicated by bad practices or obstacles like the ones mentioned below

  1. Developers log all application logs into a central server log
  2. Access to logs are restricted by a ‘log viewing’ application.

Instead of fishing around for errors, would it not be cool if you could visualize the errors that occur in your application through some sort of timeline ? After investigating a couple of frameworks that would allow one to do this, I figured ‘Simile Timeline‘ would be a good fit.

Categories: java Tags: , , , ,

Oracle re-brands Sun certification

August 24th, 2010 1 comment

Oracle has decided to re-brand Sun certification under its own brand name. First the sun website redirected to Oracle.com, then the javadoc links began to look more different than ever before. Now the red tinge we are all becoming familiar with has found its way into the certification domain.

So what does it mean for those that are already certified ? The gist of the changes which are effective from Sep 1 2010 are summarized below

  • The change is only to the title of the certification and not its contents / syllabus.
  • Old Sun exam numbers are now mapped to new ones.
  • Anyone taking say a java programmer certification after Sep 1 will earn the title ‘Oracle Certified Professional, Java SE 6 Programmer’ instead of ‘Sun Certified Java Programmer (SCJP) SE 6′.
  • You cannot request a certificate re-branded under Oracle if you already own a Sun certificate. You need to take the exam again or upgrade.
Categories: java Tags: , ,

The 5 minute fix

August 14th, 2010 No comments

It was a normal day. The sun rose, birds were singing and everything seemed to be going fine until Kaboom ! A bug appeared in the live environment. Things turned downhill from there that day. But we are more interested in how things got fixed so lets focus on that.

An investigation of the code revealed that the bug had crept in because of a minor mistake. A variable was referring to the wrong column index on a table. ‘Hmmm… simple fix’ I thought. I told my manager it would not take more than 5 minutes to do. ‘Its a one line fix’. Mistake.

There were loads of other things to do after fixing this bug. This is what I ended up doing over the next 4 hours.

  • Analyze if any other code flow would explode.
  • Code the fix – This only took 5 minutes as expected.
Categories: java Tags: , , ,