A Tale of Two Languages...

ajt on 2002-08-28T09:03:50

Or why I like Perl but not Java...

I don't like Java, I can't say it's a problem with the language, rather it's a problem with the implementation. A few threads (OO Perl and Shifting Trends) over on PerlMonks made me think about this over the past day or so, especially as it looks like we are going to have Java forced onto us at work by clueless management.

I have no bone to pick with the language, I've never used Java enough to really be in a position to comment on how good it is as a language. I've used Perl for a number of years, but I'm not a computer scientist or engineer by training, so I can't really comment on how good or bad Perl is at the theoretical level.

My problem is with the basics of Java:

  • Why are there so many versions?
  • Why is the numbering scheme so complex?
  • Why are different vendors versions incompatible?
  • Why is it so big, yet has so much missing?
  • Why are there so many arcane and complex dependencies?
  • Why is there no CPAN equivalent?
  • Why is it so slow?

I have at times been forced to use Java, and on each occasion I had to download Java, more than once as the first version I picked wasn't compatible. Install it, only to discover I have dependencies, that were awkward to fill. Then once I had all the right bits, and ran the Java code, I found it to be slow beyond belief, buggy, and if a GUI, ugly and very old fashioned looking.

Compare this with Perl which I downloaded the source and built on Linux and Solaris without a problem and it worked first time. On Windows I downloaded the AS binary, which has always worked okay too. When there have been dependencies, I simple obtain the c code, and build and install - I know no more about c than I do about Java, but I've never had problems building c code. Finally Perl has been fast, especially when using c libraries, compare LibXML/LibXSLT to Saxon, I found LibXSLT to be a lot faster...

I'm sure that Java could be a fine language to use, but until they make it a sensible process I'm sticking with Perl. Perl may be an ugly hack, but it works which is more than can be said about Java in my experience.