Client Side *What* Now?

chromatic on 2008-01-18T02:40:19

Whenever I use a non-Java language, I always have this nagging feeling in the back of my head that something is going to hold this piece of code from ever becoming mainstream or used by a lot of people. It can be because the language is slow, or that it needs an interpreter. Or that it will be hard to deploy my program on a user's machine.

— Cedric Beust, I'm not tired of Java yet

I won't argue that Perl apps (Perl 5 apps) are easy to deploy, but Java? Really?


Write Once, Run Everwhere

Stevan on 2008-01-18T15:40:50

I think maybe the Sun marketing chip in your head is loose, don't you remember, Java is "Write Once, Run Everywhere". I mean it's not like it requires a virtual machine (*cough* JVM version incompatabilities *cough*), or that virtual machine is so notoriously slow that is would require lots of investment into some kind of JIT compiler or something.

Next thing you know you will be complaining that Ruby is not an ideal language for writing DSLs in. *sigh*

- Stevan

Re:Write Once, Run Everwhere

chromatic on 2008-01-18T16:14:39

My problem is that I remember trying to run Java applications on multiple platforms for which there was no (or in some cases, no recent) JVM. These were not exotic platforms, either. Perhaps you've heard of GNU/Linux?

Re:Write Once, Run Everwhere

Stevan on 2008-01-18T21:25:56

Clearly you are some type of subversive {commun,terror}ist and should be banned from writing software no matter what language. Don't you know that nothing in life is free!?!?!

Re:Write Once, Run Everwhere

Ovid on 2008-01-19T13:52:30

Reminds me of a complaint a colleague has. He recently bought some hardware that lets you do all sorts of fancy reconfigurations. Unfortunately, you can only do this with Windows, not Linux. Apparently a developer at the company told him "we only support mainstream operating systems."

Re:Write Once, Run Everwhere

slanning on 2008-01-27T15:07:14

It's true that Linux isn't a mainstream OS. Go into Staples and look for Linux -- I found only Windows and a little MacOSX. Go into Waldenbooks (or whatever crappy bookstore there is in your local mall) and try to find a Linux-related magazine (after filtering out magazines without boobs, plants, balls, or guns on the cover). Can you find something in Walmart? I'm wanting to install Ubuntu on my mom's computer while I'm at home, and I forgot to bring a CD with me and she's on dialup, so I've been looking around for it in local stores (ok, my home being in rural Ohio doesn't help) and can't find it anywhere..

Ironic?

stu42j on 2008-01-18T16:20:59

That's funny. Whenever I see an application is written in Java, my first thought is that it will be a hassle to install and slow to run. Then I generally move on and keep looking for something else. My bias may be totally wrong but there it is.

Perl GUI Apps

stu42j on 2008-01-18T16:58:58

BTW, I usually think the same thing about Perl GUI apps but I just tried out Kephra on Windows. It was one-click easy to run and seems pretty fast.

http://kephra.sourceforge.net/

Hmm, not news, when you think about it

jdavidb on 2008-01-18T19:16:05

"Perl programmers know how to efficiently deploy Perl apps, but not Java apps, while Java programmers know how to efficiently deploy Java apps, but not Perl apps. Film at 11."

When I think about it, deploying's a nightmare in every single language I know. Perl? It's not everywhere. It'll run everywhere, but if I want to write something for my Dad to use, getting Perl to him is not going to be easy. Java? Same story, only I've got less experience and less ideas how to go about it. What's left? C/C++? What do I use for that, autoconf? While I feel competent enough to make that work, it's still not something I can describe as anything other than a nightmare. And if I'm using Windows' versions of C/C++, I can pack it all up with a Winstaller or whatever they use, and I'm sure that's no picnic, either.

When I think about it, it's a wonder any software runs at all.

Re:Hmm, not news, when you think about it

jplindstrom on 2008-01-18T21:57:30

If you're gonna put stuff on your dad's desktop, PAR/PerlApp + InnoSetup makes things just as easy to install as any other Windows program.

It's not a problem. Really.

Deployment is hard

Dom2 on 2008-01-18T20:11:56

Really. And whilst the Java deployment story isn't great, I do prefer the bundling of Jars to installing CPAN modules. It's much more manageable.

Re:Deployment is hard

chromatic on 2008-01-18T21:34:31

The CLASSPATH environment variable. The horror.

Re:Deployment is hard

Dom2 on 2008-01-19T13:48:23

Compared to installing XS modules on Windows? I know which I'd rather have to do.

BTW, this is no affront to the fantastic nature of CPAN. Just my ability to deploy it simply.

Re:Deployment is hard

chromatic on 2008-01-19T18:10:30

I had forgotten that particular hate. Good point. At least I can get away from that by not using Windows though.

Re:Deployment is hard

djberg96 on 2008-01-20T13:11:39

I have VC++ 6.0. No problemo. :)

Re:Deployment is hard

jplindstrom on 2008-01-21T00:06:20

Have you tried Strawberry Perl?

I've been pleasantly surprised again and again installing stuff on Windows with cpan recently, to the point where I have almost started expecting things to just work.

And it does.

I attribute this mostly to the tremendous work of a) Adam Kennedy and b) the Catalyst team which really started taking ease-of-installation seriously a while back. And it paid off.

Actually, if you still have problems installing things on production boxes, you can get things working in your dev environment and then create PPMs yourself, to be installed where there is no compiler available.

See PPM::Make.

Re:Deployment is hard

Dom2 on 2008-01-21T08:50:42

Strawberry Perl is great – I used it to ensure I could get XML::Genx to compile under windows.

But when it comes to application deployment, I still think Perl is a pain compared to Java. Part of that pain is XS modules.

  • You can't bundle them with your project – they need to be compiled on the target environment (or a near facsimile).
  • There's no mechanism for specifying any 3rd party libraries that they depend upon. At least with jar files, you can just include the dependencies directly most of the time.

I know that there are solutions to some of these things, like PAR, but to be quite frank, I don't see them being heavily used at present. And none of them matches the simplicity of “drop a file in the lib directory”. It's a similar situation to why PHP is so popular on the server – drop in your files and away you go.

Re:Deployment is hard

Aristotle on 2008-01-21T12:27:06

Well, as long as that PHP code doesn’t rely on a C (or other foreign language) library…

Typo Alert!

Ron Savage on 2008-01-19T00:11:48

Where the quoted text said 'non-Java language', that should obviously have been 'Java-type language'.