Java


Its been ages since I last posted, I’ve been so busy with our new startup but now its up: http://wg.vprise.com/

We wrote this application is record time and provided features that would just be ridiculously complicated using AJAX such as instant search/filtering, offline support (no need for internet connectivity) etc… The application provides a clean integration with the desktop and allows you to manage projects smoothly and yes we are eating our own dog food, we are managing the project to build this application using the tool itself for the past few months!

Cool stuff. Yes, AJAX has its place: in websites! When you want to get decent functionality from an application AJAX is many years behind Java and isn’t even showing much progress. Just try the application and imagine doing something half as good in AJAX, its ~700kb and packs more functionality than most people would expect in standard 50mb desktop applications, times they are changing 🙂

I was recently at lunch with a friend going over my latest piece of software with him (over Mexican food) when he looked at the IDE running on my laptop. He was very surprised to see Netbeans rather than Eclipse, I was equaly surprised since this is a well informed CTO/consultant who I respect quite a bit. How come a person who is up to date enough to discuss Ruby on Rails with me (and is even familiar with the specifics of the demo) doesn’t know how far Netbeans has come?

While the Netbeans team has come a long way in their marketing and evangelisem since the days of 3.x (all the marketing in the world couldn’t help a piece of crap like 3.x) especially thanks to the new web site and the work of  some great bloggers ( http://cld.blog-city.com/netbeans_and_eclipse_comparison__web_apps__no_contest.htm ) there is still a problem.

This isn’t a big problem though, most of the hard work is already done the product is ready for prime time (especially 5.x I’m working with it right now and it rocks), the web site is informative and there is a strong group of dedicated core users. Now the work is to bring in the masses, arguably this is the easier part it just needs some money and legwork… The elevator music flash demo for Java Studio Creator was great, I was amazed at peoples responses they have never seen this before. The problem is with people like myself is that I assume (unintentionaly) that everyone reads and sees the same things I do, the problem is that people in Sun know how well their tools work and they assume that people are informed of the progress made. Most people out there don’t know this and its time to get the message across and be agressive and my solution is:

Start advertising in Eclipse web sites! Be polite don’t attack, ofer a decent alternative and humor. Better yet advertise in Microsoft developer tools jornals and web sites. Hell MS advertises on Slashdot and those guys know the score when it comes to PR and advertising, borrow a page from their book.

Ok, I just finished watching the two main demo video’s of Ruby on Rails from their web site. I’m shocked that people buy into the whole “ruby beats Java arguments” having watched these demos it seems that Rails really has very little to ofer in terms of serious web applications and would only appeal to PHP hackers that want to get something out the door (and spend the rest of their lives fixing the problems).

Oh where do I start… First there is this stupid mentality that has been in the programming community since forever: “Low line count is good”. This means evaluating the complexity of a system through its line count, everyone agrees this is a stupid metric yet they keep using it. Within this demo the narrator “brags” about writing only 53 (if I’m not mistaken) lines of code to build a weblog, however Rails seems to be bundled with some elaborate templates including one that practically generates the entire thing… The narrator even stopped the presentation several times to regenerate the code of the blog… When code generation is involved with such a metric line count just doesn’t count! The code might be generated but it will need to be maintained and its complexity still exists and burdens the entire application, writing a line of code takes 1 minute but maintaining a generated line of code is much more complex since people tend to stay away from the generated code (due to its complexity). So the whole idea of generating code to hide the complexity of the web application, useless.

But Rails does something far worse, it uses defaults. Unlike a generated line of code that you will eventually track using standard debugging practices, when functionality is determined by default finding that out (without reading every single page of documentation which is just not practical with todays development platforms) is just impossible. I won’t be able to grep the code and find the source of the problem or the area to change and guessing that a default in some anonymous method is responsible for this functionality is just not something I would expect from someone new to this environment.

Some people will chime in claiming that with todays world you need fast prototyping and development, this is true however you also need to support i18n and you will always need extensive customization. In these respects Rails is a step in the wrong direction that will complicate our lives further, I would like to see the same demos and some customization done by someone with limited experience in Rails. In Java I myself can produce the same sort of results in the same amount of time using J2EE even without hibernate but with a decent IDE.

The syntax seemed like a simpler version of JSP with extensive use of scriptlets and no custom tags, the IDE doesn’t seem to have even basic features like completion and the documentation seems monolithic and dissorganized although when delving into a particular feature it seems quite detailed.

Well its a bit too late but people: http://www.eclipsezone.com/eclipse/forums/t54318.html are starting to realize that Java shouldn’t “me too” to the stupidity of C#.

I wrote about this quite a bit in my old blog so I won’t go on too much but the bottom line is clear: People ruined C++. We always blame the “commity” but that commity had people sending them requests for this and that and a commity can’t resist such pressure. Sun (and mister Gosling) did a great job up until people like Joshua Bloch got control of the language and moved it to bad places.

Enough is enough. Bloch is at google now (hurting their business also I’m sure) and there is no reason for this foolishness to continue, after all the great majority of us chose Java because it was small in syntax (not in API) the API is where complexity and features should go. C# is already more complicated and messy than C++ and when you look at a block of C# code you can’t be 100% sure what it does.

Here is what I wrote about this a while back: http://jroller.com/page/vprise/?anchor=joshua_bloch_leaves_sun_good

I downloaded Sun One Studio a while back but only checked it out yesturday after the really cool flash demo started making rounds on the internet. I liked the old version as well although it was fragile and buggy which I hope this version fixes (I haven’t tested it much), but the main problem I have is with the layout. There are two layout types I can see: grid which is the default and is absolute pixel based and flow which is just left to right component layout.

This was excusable for a 1.0 version, for the current version it is just ridiculous and makes the tool useless for anything other than prototyping applications which is a valid use of its own but really not on par with tools such as Delphi and even VB. BTW VB uses absolute positioning but in a different setting than a web browser so it isn’t as bad.

Absolute positioning is bad for many reasons, there are the well known obvious problems of different fonts on different systems. But accessibility and i18n are even bigger problems since people with bad eye sight would want to zoom in (thus breaking the layout) and languages such as German (with very long words) would just break out of the word boundries. Bidi languages like Hebrew, Arabic and Thai would further complicate things by looking “odd” with a layout designed for other languages.

Anyway I still plan to use this tool but I know that its GUI builder will become mostly useless once basic prototyping is done which is a huge limiting factor for me.