Sun To Give StarOffice Java Flavor
ilovestuff writes "Sun Microsystems is building a Java-based development kit for its StarOffice software to help corporate programmers customise desktop applications, a move that better pits it against Microsoft's dominant Office. The software development kit will be available in the middle of next year as part of a minor upgrade to the business version of Sun's StarOffice 6.0, said Joerg Heilig, director of engineering for StarOffice at Sun."
I don't think it is. Perl, Python, and TCL all run under UNIX and Windows. Hell, they're even compiled at runtime. And somehow they still use much less CPU and memory.
I have 128M of memory. If that's not enough, then that's ridiculous. XNap, a Java napster client, takes ~20 seconds to start up. Java applets in Netscape take 15-30 seconds to start. Oh, and Sun's java plugin likes to crash Mozilla constantly, so I don't even bother enabling it in the first place.
And they're all boring enterprise level applications. While you may consider that a success, Java didn't change anything. Had it never been invented, though would have been written just the same, in C++.
Most of those apps are likely written so poorly they only run on Windows anyway. I've heard Java's cross platformness is mostly a myth.
Java has done nothing to make consumer apps cross platform.
It was invented before Flash. It has Netscape's backing. And it still has less market penetration.
Great, let's call it Javascript.
.NET debacle at Microsoft. Every single marketing manager decided that his own projects needed to be part of the .NET initiative. They all hopped on it and diluted its meaning. For all practical purposes ".NET" is basically the name that Microsoft is now associating with every latest version of most of its products, so it means nothing. (Yes, there is a very nice JVM ripoff in there somewhere, if you can find it without getting lost in the slick glossy .NET bullshit.)
JavaScript was horribly named by inept marketers at Netscape back in 1995. Its real name was "LiveScript" but they changed it at the last minute so they could coast on Java hype. It has nothing to do with Java and the name has been confusing people ever since. And "JavaScript" was a good name, too. It would be nice if BeanShell, for example, could be called "JavaScript" because that's actually what BeanShell is.
It's like the
IMHO if it's obvious that a programming language has been named by a marketer, that's a red flag. Java and C# were named by marketers. But at least nobody will confuse Java with coffee; that would be silly. But "C#" is as bad a name as "JavaScript". It's going to cause confusion with C and C++ (which are already confused for one another, and with Objective C, especially when HR managers scan people's resumes looking for keywords). And C# is nothing like C, or C++, or Objective C. I have to admit "C++" was a clever way to name a programming language that aspires to be (almost) a superset of C. But in that case the new name was a legal expression in the old one, it was a short, extremely descriptive name, and it made sense. C# fails on all three counts. They should have just named it "Me Too C".
My other thought is this particular example plays right into the strength of Java's JIT. Since the same code is run over and over, it can be compiled once at runtime. The code is very short, so the just-in-time compilation doesn't take much time. And it can fully exploit Java's key performance advantage: the ability to incorporate runtime profiling information into the optimization process.
Static compilers make "eduated" guesses as how to best optimize code. When it comes to a fork in the road it, since they don't have actual run-time information, they have to do the best they can and move on. Java can leverage run-time information against the statically compiled bytecode and utilize dynamic optimization. Granted completely linear code will always run better when statically compiled to machine code, but if at any point in the compilation process the compiler has to make an "educated" guess, a better decision can be made at run-time through dynamic optimization. General information on dynamic optimization can be found here.
(and similar in Java), I get times of 0.004 seconds for C and 0.567 seconds for Java -- most of which is the time to load the JVM (ie the difference between 'time java fastfib 40' and 'time java fastfib 0' is lost in the noise).Rewriting fib(int n) along the lines of
Proving that choice of algorithm can make far more difference than choice of programming language.
-- Alastair