The Java Platform

Yikes, my last blog entry on Open Source Java stirred some discussion. First, I would like to thank those of you, agree or disagree on the topic, for the comments. It's worth the discussion.

The more I think about this, the more I see two over-arching themes of Open Source Java. The themes are centered around Java as a Platform versus Java as "something else". There were a couple comments on the blog entry criticizing WORA. Fair enough, but I'm (obviously) on the other side of the fence. I see customers regularly develop on Windows and deploy on Solaris, including both JSE and JEE applications. I have no idea how many developers develop on Solaris and deploy on Solaris. It's a small (but growing) minority. I see this portability not only on Sun's JVM, but also on implementations from IBM, BEA and Apple, covering \*many\* hardware/OS combinations. Java's concept of WORA doesn't always get you all the way there. Hence JNI for native code, debuggers for potential behavioral differences, profilers for potential performance differences, etc. However, it no longer takes an army of developers to port a product.

To take that point even further, Sun had an over-documented tough time post-bubble. Want to know why? Because it was easy for customers to take their Java code elsewhere. Java's WORA lowered the barrier to exit from Sun's platform, thanks to WORA. Note that it also lowers the barrier to entry, which is a contributor to why we grew revenue double-digits last quarter. Java's WORA makes it relatively easy for them to come back.

Those that see Java as a platform want to keep it together. Yes, we have 3 primary target (highly-abstract) markets filled by JME, JSE and JEE. IMHO, pragmatism and opportunity for everyone in the industry, Sun included, drove the move to JME, JSE and JEE. Then there is also the fact that JSE and JEE won't fit on a cell phone. I think developers and businesses grok this. And, IMHO, we see the success of those decisions. JME is on some insanely huge number of devices today and JEE is, and continues to be, a huge success. JSE and JEE have been a foundation for open source innovations. JSE for desktop development is under-hyped IMHO. Plus, it's not easy to de-throne a monopoly. Most of my Java work is JSE, by the way. The code I write works on my SPARC box, Solaris X86 laptop, my wife's Windows laptop and our home MAC. I did have to tweak a few things to get it to work on the MAC, which is much better than what had to be done in the pre-Java days.

For those that want to pull out deprecated APIs or create a specific server version that does't have Swing & AWT, etc, I don't get it. The very thing that makes Java the huge success that it is - WORA - would be gone. Having 3 editions of the Java Platform seems to be an appropriate level of courseness that the market bears very well. In fact, the market not only bears 3 editions, it embraces them.


Disclaimer: I'm firmly entrenched on the debian camp. That said, a couple of observations:

"Write once run anywhere" implies absolute control of the platform, as you pointed out. It also means that all components must be available in the platform, since you don't know what application is going to be run on it next.

Let's take a step back. I love Debian because I can do a bare install, one that has just enough to get things going. It doesn't have apache, mysql, php, or even ssh. But it boots, and lands me at a command prompt. So the platform is established, and the platform is stable.

Then, I use apt-get install ssh, and magically, the platform goes out and automatically downloads, finds dependencies, installs and configures ssh. Same with all the other packages. And because it's command-line, it can be scripted. What's my point? Java should have a minimal platform, one that sits comfortably on a floppy, that also knows how to connect to the internet, get the libraries it needs to run, as demand requires.

Just like apt, the source could also be a local directory, or a networked drive, or an ftp server on the WAN.

The only other thing I would add is that this should be entirely transparent to the application. In the case of mozilla, imagine a 600Kb java base platform that could download on-the-fly the libs it needs. That would be great! Remember, you're using mozilla, you're on the net already.

If The Network Is The Computer, then you should not have to make machines stand-alone. They are part of the network, they rely on the network. One should not be afraid to trust the network. Here's a good slogan: Don't Fear the Network... Or, how about "Trust the Network"?

Personally, if my machine is not on-the-network, I'm not using it. It's useless to me.

Which leads me to my second point:

I do development for solaris (python mostly) and I use windows 2k for my workstation. But I don't dev on windows. I use a text editor in windows that sftps into solaris, and then I run the files on solaris throught putty.

Note. I have java on my cell phone. Yet, I use my phone strictly to make phone calls. I wonder just how many people are in my situation. So don't follow the sun's hype about "A billion Java Installs". I personally use java as little as possible. Python runs great everywhere I need it to.

The market embraces 3 editions? What makes you think the market would not embrace 5, 8, 14 editions? There are hundreds of different types of cars and trucks out there, because "the market" is only a whole lot of people who use the "best tool for the job". I wonder whether the java people realize how many people in the market out there would use java if it was changed just enough to meet their need.

That's the beauty of Linux. There are linux distros of every shape and color. From running mission-critical systems to National Security to home computers to set-top boxes from Time Warner, to hand helds, to laptops, to \* servers, to firewalls to routers and switches... to cell phones. See and

Make the java we want to use and we'll use it. If you don't want to do that, either let us tinker with it (and I mean tinker with a Komatsu PC8000) or build it according to our specs. Remember, we the developers are your customers.

Posted by Christopher Mahan on May 08, 2006 at 04:49 AM PDT #

Christopher, Disclaimer: I earn my living doing Java and my house is happily windows free, all my family uses opensuse 10. I firt want to let you know that you almost got me, you give an excellent point of view on the beautiful enviroment that linux and debian particulary, gives to us, the proud geeks of the world. In the years that my fellow linux friends have been trying to convince me on the wrongdoings that Sun does by no open sourcing Java, no one have come not even closer as you on convincing me of it. However, I was rescued by remembering that the nuns on my Buddhist center were able to install a Java Virtual Machine by following Instant Messaging instructions, but I had to remove opensuse and let them buy Mac's because they couldn't use synaptic or apt. I think that in that sense, reducing choices has benefited the usefulness to end user, who in my point of view, are also Sun customers. If Java by whatever reason, loses this easy of use for end users, its appeal as a Technology Platform would be severy diminished. Thanks for you inspiring comments, Emilio

Posted by Emilio Osorio on May 08, 2006 at 07:41 AM PDT #

Emilio, wouldn't it be so much better if the jvm was already installed as part of the base install of the machine? What I mean is that if the 600KB JVM was already installed, and if it knew all by itself how to self-install the rest of itself from a well-defined source, and if the user just could "use it as-is" would that not be better?

I don't mean to convince people not to use java. I think it's a fine tool for fine uses. I just think that there is a philosophical difference that bears addressing: Java and Linux are trying on the same shoes.

Java as a software platform with its own language (Java), a huge and polished set of libraries, abstraction of the hardware and interfaces, portability, and support for other, embedded languages (jython, groovy, beanshell, etc).

Linux, and by that I mean distros, like Debian in my case but replace at will, provide a software platform with it's own language (C), a huge and polished set of libraries (GNU tools and utilities accessible via the Pipe and other ASCII command-line ways), abstraction of the hardware and interface (everything is a file), and support for other embedded languages, like python, perl, ruby, php, but also C++, java, ada, lisp, smalltalk, factor, the list goes on.

As far as I am concerned, philosophically, java tries to be equivalent to gnu/linux. But if you can run linux (and linux runs on a crapload of hardware), then you don't need java.

But this assumes you can reformat the machine and put whatever you like on it. Java gives you the abstraction layer inside of a controlled environment, inside of a safe program, which, hopefully, the administrator of the machine is allowing the user to use. Lunix does not give you that.

So to me it all comes down to the end user: if the user is a geek, a student of The Art of UNIX programming, a do-it-yourselfer who doesn't mind springing real dollars for his own real server (or virtualserver somewhere), then the user might just as well go with Linux. If, however, the user is a Buddhist nun with a Mac, then java is definitely the way to go.

The thing is that Sun is courting the geeks with java, and the geek says: you want to take us to dinner on Friday night and maybe get lucky? Ok, but these are the ground rules: It has to be Open Source, and it has to be redistributable. And if you want to get to third base, it's gonna have to do what we want.

Realistically, though, the student of the Unix way will use solaris as a unix, and not really need java either. This is where I am. I like what I see with OpenSolaris, and I like the way Sun is moving in that direction. But to be honest, if I have root on a machine and I can write php, python, perl, and C, using tried-and true programs like grep, I don't really need java. The machine itself is my platform.

PS: I strictly do server-side. Nothing is pushed to clients. Everything is xml ((x)html or rpc) over http.

PPS: Quiz of the day: Name my text editor of choice

Posted by Christopher Mahan on May 08, 2006 at 09:34 AM PDT #

chris, I have a issue with your first comment. The Developers aren't Sun's customers. Customers are Sun customers. there are several customers who are also Developers, there are several who aren't. Now, I'll let you in on a little secret, ... I hate Java. Like anything that runs on a VM, every time problems happen, your usual methods of debuging don't work (just try to truss a java program trying to figure what is causing the exception). With that said, I'm loving the oportunities Java is opening for me. You're using your App. Server on HP-UX? I can replace your infrastructure with SPARC/Solaris, sometimes whithout downtime, kids are turning more and more to Linux and, the Java games are helping that migration. If you can play your favorite game on Linux, the single biggest argument to have an Windows goes away. As anyone may understand, I don't really care about Opensourced Java. It's not a discussion where I feel I have anything to say but, my worries is that every guy I see defending the OSJava is doing it in the wrong way. Most developers I came across have no respect whatsoever for the system, the idea of simply removing things of Java, regardless of the consequences is a clear sign of that. I could understand puting stuff in deprecated and, after a few years, removing them but, a few years simply isn't an option for those keyboard cowboys. Chris (back to your first comment) I liked your idea of the core Java for Mozilla but, like I would disdain any sysadmin who would run apt-get on a critical server, you HAVE TO give the option to users to download everything at once. I say again your idea looks great but, when Sun talks about the digital divide, they are also talking about an huge number of people who don't really have high speed internet access. Java is critical to the sucess of a way to approach computers supported by most of us - non windows users|developers|admins so, Opensourcing it would be, IMHO, a good idea to bring on board a lot of people that only look to opensourced stuff but, assuring continuity and compatibility is, IMHO, even more important. If there is a way to have both, go for it, if the cost of Opensourcing Java is to make it useless, don't bother.

Posted by Jaime Cardoso on May 08, 2006 at 08:35 PM PDT #

Jaime, Thanks for the thoughtful comment.

First, java being a programming language, the customers for a programming language are programmers. Second, the customers for the applications written in a programming language are the end users. Just wanted to make that distinction.

What java platform integrity means is offering a uniform runtime environment for applications that developers can rely on to be consistent from development to deployment. That goal is still not 100%, because of the need by the end user to go download the JVM.

That's the real issue behind OpenSourcing the JVM. There are enough sysadmins out there who have been burned in the bubble, who have been burned by MS, and by a myriad proprietary solutions. To them, and I include myself, going with a single vendor, with a proprieary solution, is no longer acceptable.

Note: these are not the java people. The java people implicitly trust Sun to manage java the Platform well.

As far as cowboys, I'll have you know I run debian stable, it's more ancient than solaris 10.

On a more personal note: Congratulations on your kid. Children are blast.

Posted by Christopher Mahan on May 09, 2006 at 02:24 AM PDT #

Thanks for the personal note and, just to make it clear, I wasn't acusing anyone of being an cowboy but, we've all seen the horror stories of all systems crashing due to poor testing and overconfident upgrades. Those are the kind of people that think in the short term and have no respect for the installed base and for the legacy. Like I said, Opensource Java isn't that really important for me, the WORA is, even if I like the idea of the JCP. HAving the WORA and having it Opensource would be the best of both worlds IMHO. Food for thought, the permlink of this post is "java_as_a_platform_vs" I wonder was the original post was titled "Java as a Platform vs. Java as a programing language"? Sub Question, is Java today simply targeted at Developers? Or is it really a platform?

Posted by Jaime Cardoso on May 09, 2006 at 02:41 AM PDT #

On your subquestion: java as a programming language is targeted at programmers, clearly, but those that work on projects owned by companies. These companies believe in java-as-a-platform because they are in the business of selling applications to end users.

In reality, no, java as a language is not targeted at programmers. It's targeted clearly to those companies that need the platform. Those companies then look for programmers that are going to program in java.

The result is that programmers program in java to make money, but many admit not liking the language at all.

So there: the platform is what gets the companies to pay for the developers to use the java programming language.

At least that's the way I see it.

Posted by Christopher Mahan on May 09, 2006 at 03:11 AM PDT #

Post a Comment:
Comments are closed for this entry.

John Clingan-Oracle


« July 2016