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."
First, let me point out a few things (in numbered list format since you're into that kind of thing):
1) Applets are not Java. Indeed, Applets are written in Java, but they are just one method (arguably the silliest method) of executing Java code. You've got to think that if you wrote a bloated GUI C program (and most Java Applets are bloated GUI code), downloaded it over the internet each time you wrote it and then had to wait for a (usually out of date) runtime environment to run the code, its going to be slow.
So we agree that Applets are a bad idea. Fine, most impartial Java developers will concede that fact. But like I said, Applets are just an execution model, and one that most Java developer don't ever think about using.
2) Have you tried a well designed Java based application running in a modern Java Runtime Environment (something like Eclipse on one of IBMs JREs would be a good test). Have you done any profiling on server side Java code (i.e. a Servlet based web application?).
Guess what, it's not so slow! Sure, it's typically not as fast as native C code, but C code isn't typically as fast as optimized Assembly either, and I don't see everyone programming in that anymore. In a web application (Java's real strength) where the the run time environment is already loaded into memory and so is the Java code, request are actually downright snappy!
3) There are good Java applications, there a bad Java applications. There are good C programs, there are bad C programs. Most people seem to see one bad example of a Java app and get the "Java sucks" tunnel vision. I wish I had the kind of job where I could afford to be so ignorant. Then I'd only need to browse SourceForge for an hour before deciding that every single language sucks at everything.
You want a little cheese with your whine?
That's like me saying "Whah whah! I don't know what C++ STL is!" without bothering to pick up a book or doing a Google search. Do some reading you lazy bastard! Not everything in life is going to be spoonfead to you! If acronyms are too hard for you, bookmark one of the many Java glossaries that are out there.
The "Java Platform" is simply a set of classes (APIs, Frameworks, whatever you want to call them) and an environment to run programs which use these classes. These provided classes do things as simple as type conversion and data structures, and as complex as network I/O and cryptography, and as useful as parsing HTTP requests and working with relational databases. Lots of good stuff in there.
So Java programming involves writing code which uses these built in classes, using the classes you wrote yourself, classes other people wrote, etc. (just like any other language).
So for example you could write code that responds to an HTTP request (such classes are known as Servlets) and stores some information in a database. You then just set up this Servlet to run in a J2EE Server (like Apache Tomcat) and point your browser to the appropriate URL and voila, it responds to the HTTP request and it can just as easily return and HTTP/HTML response back to the browser (did you notice there aren't any Applets involved here?).
"What's the point, I can do that in C?" you say? Well, aside from the general utility of all the built in classes (they really are quite rich) the advantage is that you can write your Java code on whatever machine you like (say that NT box you're forced to use at work, or your Linux box at home) and when you're done you can deploy it to whatever machine type you want (say that big Solaris server your company has laying around, or your buddies Windows 98 machine, whatever) and it works. No porting, no messing around.
That may not sound like a big deal to the average home user, but to a company with a sea of developers who are already on Windows machines and they want ot target a UNIX production environment, it's a big advantage. Is it possible to do this in C/C++? Of course it is? It's not neary as easy though, and if you give developers the chance to screw something up, you know what happens next.
Long story short, Java is a tool, and tools are always good at some things and bad at others. I wouldn't want my Kernel written in Java just like I wouldn't want a web application I have to maintain written in Assembly. Learn about the tools objectively and apply them where it makes sense.
Of course this is the price for writing code that work on windows, linux, mac, and random unix, so it is a tradeoff many accept.
I don't think it is. Perl, Python, and TCL all run under UNIX and Windows.
Yes, but all fo the cross-platform Perl, Python or TCL projects are very small. While these languages run on multiple platforms, they are still harder to port the Java. As a result, most cross-platform Perl, Python or TCL projects are much simpler then many of the Cross platform Java applications.
It was invented before Flash. It has Netscape's backing. And it still has less market penetration.
Er... apples and oranges. Flash is for fancy windows that run in your web browser, and it has Microsofts backing. Not much more to Flash.
Java is a whole universe of applications. You can have a flash-like applet, but that is only a very, very small part of the Java world; and you're right, most java applets suck (In large part because all versions Internet Explorer until 5.5 only supported Java 1.1, which was released five years ago). But nobody is defending Java applets.
The big part of Java is in the server market, where Java app servers like Weblogic, Websphere, Oracle 11i, Tomcat, or Dynamo have become the defacto standard in enterprise-level applications.
"Can of worms? The can is open... the worms are everywhere."
Open/Star Office to my mind already has a "Java flavor". You can write add-on components and macros in Java, as well as embedding running applets in your documents.
OpenOffice actually includes a specification for extensibility in arbitrary scripting languages (provides someone bothers to write the support). Currently, C,C++, Python, Java and are supported to some degree. No real reason for Perl, Python, Ruby, Common Lisp not to be, if anyone can be bothered.
See UNO UDKon the OpenOffice Site.
SWT is more like AWT in that, rather than use actual JAVA code to draw things like windows, buttons, pulldown-menus, text fields, and the like, SWT (like AWT) will make a call to a native OS function that renders that widget for it.
SWT is different from AWT in that it does not try to adhere to the least-common-denominator principle -- is like Swing in that regard because it has more GUI widgets that can be added to the program.
SWT is unlike Swing, however, in that rather than using Java to draw the widget and listen for inputs, SWT merely tells the OS to do it for the program and handles anything the OS reports back. Because the code for handling that widget is optimized compiled code for the operating system, there is a massive net speedup in GUI interactivity.
SWT would probably be unnecessary if Sun would just put out a VM that handles the "power" of Java threads in a much better way.
"Times have not become more violent. They have just become more televised."
-Marilyn Manson
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...)
This JVM-inspired environment is called .NET Framework. Look for the word "Framework" in Microsoft .NET product literature to find references to what most Slashdot users seem to associate with ".NET".
C# fails
Some critics have described the Java language as "C++ done right". The C# language is Microsoft's re-hash of the Java language. Now if you stick two ++'s on top of each other, you get something that looks like a hash sign; thus, (C++)++ is C#.
Will I retire or break 10K?