Friday, May 7, 2010

Old Programming Habits and Productivity

I remember the good old dayz of of running javac TestApp.java at the cmdline. It was fun actually. For me then, the joy of having my programs run far out way the knowledge of IDEs. Never actually knew there was anything like that. The only IDE i knew was Integrated Device Electronics i learnt while studying for A+. I can remember how excited i was solving some java programming exercises in comprehensive java (i hope i got the title correct). Having spent some hours trying to figure out why my program wasn’t running correctly, i decided to take some time out, putting the daemon threads of my subconscious mind to work, while i tried taking a nap. In between the nap, came a revelation of the solution to the problem i was trying to solve. I felt like i had discovered the cure to a chronic disease. Actually, not exactly, but i was pretty excited about the solution. As time passed, IDEs, frameworks, toolkits and what have you came to my awareness. I spent more time with JDeveloper initially, never really liked it. But was certainly way better than running cmdline. I later discovered Sun forte 1 IDE. I kinda liked it, because it looked different and i guess because it was from Sun. Sad thing was that it was kinda resource intensive, didn’t just run smoothly on my dev machine. I guess my machine wasn’t up to it. I later jumped on Netbeans. I loved it until i discovered what Eclipsed my love for NetBeans. I tried IntelliJ , as much as some folks think it was the best in Java world, i never really liked it. It was the first Java IDE i used and i just felt i needed a tutorial to get around it.

Above is just my personal experience in the world of Java programming. But my point has to do with some unproductive habits i was just too use to. I was aware of the fact that most of the IDEs i had/was using had support for debugging, but, since my early days started with “System.out.print("Val of : "+paper.getName())” , i just felt i was better off doing this than having my program run in debug mode. I was too use to it to spend a little bit of time to understand the benefits and how much productivity boost i would get by just having my program run in debug mode when there were issues to be fixed. I can only assume there are folks like me out there, who would rather terminate a program, type out your "System.out.println()" and run again. Having to do this in web projects certainly doesn’t help and same applies to Standone/Desktop apps. While ones code quality might have of a truth improved, some of these old habits just wouldn’t allow us experience a better life. As it is pretty had for me to go back to programming at the cmdline, it has been the same with debugging apps. It's just way better than exit->type-> rerun cycle. Setting break points at runtime is just too fantastic than the boring code I had to type. Now, think about some tiny improvements in your platform of choice that you have blindly not investigated, but would rather keep to the good old ways. Programming could certainly be better by acquiring more knowledge and this could be in form of version control systems, build tools, applying best practices etc. Have you got any programming habit(s) you got so use to, only to figure out there was a better life?

Thursday, July 10, 2008

The Future of Apache Harmony Java

Ever since the Apache Harmony Java project was announced, I felt the future of Java lied within it. While there appears to have been a change in attitude of Sun, in the last three years, it’s debatable to associate the change to Harmony or the seemly aggressive and responsive CEO (Jonathan schwartz) . Quite a lot has happened, with Redhat’s icetea project passing Java’s JCK recently, there is no doubt a hive of activities within opensource Java. My interest rest is in the future of Harmony Java. Stefan Krause recently posted a performance benchmark of different Java implementations and c, and the results were kinda interesting. I constantly check the performance page of Harmony and it appears the page hasn’t been updated in the last six months. Openjdk, from which icetea is derived, got about 94% of its code from Sun’s donation and it has taken about 18 months to have a release. Harmony which is a clean room implementation, with a few code donations has been able to achieve over 97% completion of its Java implementation in about 3 three years. This is certainly impressive. With the recent announcement of the icetea project, the Linux community is most likely to rally around that implementation, with derivatives as the default Java on most Linux distros.

Now back to the benchmark. It was surprising that not much difference was seen between IBM’s Java implementation and Harmony. Commentaries about IBM’s JDK and Application server offerings around the blogosphere haven’t been too encouraging. But, hey IBM is still a great company. I simply wonder why they wouldn’t just open up their implementation to the prying eyes of the opensource community, that would drive innovation or better performance implementation. Some would argue that performance lies more in reliability/stability than in speed. But speed is certainly a concern. Even Sun’s openjdk is beginning to benefit from Harmony. David Dagastine has encouraged the harmony team to keep the optimizations coming. There are already efforts to port LLVM, which appears to have the very good performance, to openjdk/icetea. With no particular Big company backing Harmony, where does its future lie? Will Harmony remain a research project where the Big ones can feed on? Or are there chances corporations like Google might pick it up and deliver some incredible products with it. Yeah, I know about Android, but am looking at not just the mobile platform, but desktops, Servers and web in general. Or probably demi money gods like Microsoft? But I ask, how much revenue could such an investment generate or disruption in targeted competitor’s model and at what cost? Would such investments deliver most of the yearnings of Java enthusiasts? What is Harmony’s targeted market? I doubt if it’s Linux. I think Sun’s implementation would continue to dominate the Windows platform. Probably after seeing the first release of Harmony, some of these questions would be easier to answer.

I believe Nature has given few the ability to see the future, so I hope a few of these few would read this and share what the future holds. I pray long live Apache Harmony!