LWN.net Logo

IBM urges Sun to make Java open source (News.com)

News.com reports that IBM has sent an open letter to Sun Microsystems urging the company to make Java technology open source. "IBM is proposing that Sun, IBM and others choose which portions of the Java technology -- such as the Java Runtime environment, code libraries or even server software -- should be submitted to open source. Optimally, an official open-source version of Java would emerge to replace a "hodgepodge" of open-source Java technologies and efforts, Mr. Sutor said."
(Log in to post comments)

IBM urges Sun to make Java open source (News.com)

Posted Feb 26, 2004 19:36 UTC (Thu) by ncm (subscriber, #165) [Link]

First, Sun is not interested in sharing success with Free Software, even if not sharing might mean failure. All the value for Sun in Java lies in its possible use against perceived competitors; to give that up would be to eliminate all its value, because it has no monetary value. As we will see, it wouldn't matter if they were willing, but it degrades Free Software to be seen begging for scraps when it is, in fact, in the position of strength in the real world outside of the Java fence.

Second, Free Software would not benefit from any influx of Java usage; it is to our credit that Java usage is substantially confined to those already obliged to use it for various more-or-less proprietary reasons, and that JVMs are only very spottily deployed on Linux and BSD hosts. Java's design was meant to attack problems that Free Software just doesn't have, and its means of solving those problems actually interferes with addressing the problems we do have. Every problem solved without Java is to our credit, and every problem solved with it creates further problems.

Third, any merit that might be found in Java inheres necessarily to a greater degree in C#, which is already substantially Free (as an ECMA standard) and which corrects many (but not most) of Java's fundamental design flaws. While C# has the same fundamental problems alluded to in the second point above, it bypasses the legal and proprietary problems Sun has imposed, even though it still reserves a rapacious corporation's ability to stab Free Software in the back at any opportune future moment.

Therefore, if Java were the answer to anything, C# would be a better answer, and any attention devoted to begging Sun for Java bones would be better spent on implementing the ECMA C# standard. In any case, that would be pointless, because Free Software doesn't need Java or C#. Their only value is to the proprietary software industry. Any Free Software attention to them delivers value to the Free Software community only insofar as it helps lead proprietary software users over the fence to freedom.

IBM urges Sun to make Java open source (News.com)

Posted Feb 26, 2004 19:55 UTC (Thu) by danielpf (subscriber, #4723) [Link]

> C# ...though it still reserves a rapacious corporation's ability to stab
> Free Software in the back at any opportune future moment.

Isn't this sufficiently important in view of the sad records of the alluded rapacious corporation to promote Java just as a way to prevent this corporation to embrace and extend further? The long term effect of containing a monopoly may be more important that the short term technical and finally secondary advantages of C# over Java, or of none of them.

IBM urges Sun to make Java open source (News.com)

Posted Feb 26, 2004 20:13 UTC (Thu) by ncm (subscriber, #165) [Link]

MS won't be a monopoly for much longer, and in any case neither rapacious corporation is a better friend to Free Software, in the long term, than the other. In the short term, only competition for attention between C# and Java prevents either from exercising its (statutorally-mandated) malice to the degree it might prefer.

IBM urges Sun to make Java open source (News.com)

Posted Feb 26, 2004 22:02 UTC (Thu) by biehl (subscriber, #14636) [Link]

Sorry, but you speak non-sense.

1st - There are a lot of different opinions on sharing Java within Sun. Also, there is no shame in giving well founded advice to Sun on the benefits to them, and everybody of a Free Java.

2nd - Why would Free Software not benefit from a Free Java? Java usage is in no way confined to some special group.

http://sourceforge.net/softwaremap/trove_list.php?form_cat=160

Java addresses problems that face every programmer, by having a large standard library, managede memory handling and good programming tools.

3rd - Yes, C# is nice, but some of us, somehow don't trust Microsoft to leave free implementations of C# alone.

A free java, would be a huge boon to Free Software.

IBM urges Sun to make Java open source (News.com)

Posted Feb 27, 2004 14:33 UTC (Fri) by ncm (subscriber, #165) [Link]

...there is no shame in giving well founded advice to Sun on the benefits to them, and everybody of a Free Java.

The word used in the title of ESR's letter was "plea". An unbiased observer would reasonably take that as begging. Free Software has no need to beg, and to be seen doing it leaves an impression of weakness.

Why would Free Software not benefit from a Free Java

It diverts resources from production of more robust tools and applications. Java programs are unavoidably crippled by language-design choices meant to serve proprietary companies' need to distribute closed binaries. Free Software has no such need, yet suffers as much or more from the crippling.

C# is nice, but [we] don't trust Microsoft...

No, C# is not nice. It's just slightly less awful than Java. Any reasons you might have to distrust Microsoft apply equally to Sun. The current state of C# is more or less a snapshot of what is being asked of Sun for Java. The point is not that Free Software should take up C#; rather, the point is that if it seems to you unwise to commit to C#, then it is equally unwise to commit to Java.

A free java, would be a huge boon to Free Software.

It would be a boon to individuals who have invested heavily in the proprietary Java world, to the expense of Free Software at large. Begging largesse from Sun is triply selfish: it makes Free Software look weak, it asks special favors from a corporation in violation of its public charter, and (assuming the begging succeeds) it diverts development attention to a language ill-adapted to the needs of Free Software. All this for what? Practically all Free Software in Java is used only by those already obliged to use Java.

Java is a fenced camp, and Free Software needs no way in.

IBM urges Sun to make Java open source (News.com)

Posted Mar 2, 2004 12:45 UTC (Tue) by lmartelli (subscriber, #11755) [Link]

It diverts resources from production of more robust tools and applications. Java programs are unavoidably crippled by language-design choices meant to serve proprietary companies' need to distribute closed binaries. Free Software has no such need, yet suffers as much or more from the crippling.

Could you elaborate more in the subject, please ? I've been programming in Java for a few years, and although I agree it has many flaws, I never had the feeling that my programs were crippled for the reason you say.

Disgraceful Tradeoffs

Posted Mar 4, 2004 5:10 UTC (Thu) by ncm (subscriber, #165) [Link]

Execution of Java programs on Free Software systems has long suffered from the inadequacy of the JVMs available. Some of these inadequacies are incidental, and might someday be fixed. Others arise directly from the language definition, making it impossible to optimize as fully as if source code were available. The language itself interferes with optimization, as well, so that Gcj (which compiles to native code) cannot optimize as well as a good (e.g.) C++ compiler can.

Surely you've noticed that your programs run much more slowly than the equivalent C++ program? Doesn't running half as fast, achieving half as many transactions-per-second, taking twice as long to finish, costing twice as much, or needing twice the processing power, count as crippled?

But there's more. The language's cargo-cult design makes any program written in Java substantially longer and more full of "noise" text than in a more thoughtfully-designed language. Its exception apparatus adds enormously to the textual overhead needed to handle errors, without making programs correspondingly more robust or simple to maintain. Its enforced garbage collection means that you have little control over the memory management, and general resource management, needed to tune performance and compensate for the poor low-level performance of the JVM. The garbage collection interferes with cache locality, so that programs often run from main memory instead of from cache, at an enormous speed penalty.

How closely are these flaws tied to the requirement to deliver machine independent binaries? How much is just bad design, how much immature implementation, and how much is fundamental to the goal? It doesn't matter much: absent the requirement, the flaws do not arise.

Disgraceful Tradeoffs

Posted Mar 4, 2004 12:47 UTC (Thu) by lmartelli (subscriber, #11755) [Link]

Others arise directly from the language definition, making it impossible to optimize as fully as if source code were available. The language itself interferes with optimization, as well, so that Gcj (which compiles to native code) cannot optimize as well as a good (e.g.) C++ compiler can.

Do you have any pointers explaining precisely why Java cannot be optimized as well as C/C++?

Surely you've noticed that your programs run much more slowly than the equivalent C++ program? Doesn't running half as fast, achieving half as many transactions-per-second, taking twice as long to finish, costing twice as much, or needing twice the processing power, count as crippled?

Should I understand that any program written in a "scripting" language (Perl, Python, PHP, Tcl,...) is equally crippled? Java implementations are currently slower than C/C++ ones. But it gets better every day. And in many situations, being twice as slow to execute is not a problem, as long as its fast enough. Especially if I can cut down developpement time by half by avoiding memory mangement debbuging issues. And not have to care about a whole range of security issues caused by buffer overflows. And in application involving a database, the database can often be the bottleneck, so I'd rather spend a little time optimising the DB rather than a lot more time copping with C/C++'s problems.

Its exception apparatus adds enormously to the textual overhead needed to handle errors, without making programs correspondingly more robust or simple to maintain.

I'm not a bug fan of Java's exception handling and would prefer that almost all exceptions are runtime exceptions so that you don't have to declate them in your interfaces.

Its enforced garbage collection means that you have little control over the memory management, and general resource management, needed to tune performance and compensate for the poor low-level performance of the JVM. The garbage collection interferes with cache locality, so that programs often run from main memory instead of from cache, at an enormous speed penalty.

The analysis also suggests that, as locality becomes ever more important to program performance, programs written in garbage-collected languages may turn out to have significant performance advantage over programs written in more conventional languages.

As implementation techniques improve, the overhead has been reduced substantially, a 10 percent overhead of the overall execution time is reasonable for an well-implemented system [Wilson, 1994]

Surely C/C++/Asm give you more control, but how much do you win and at what cost ? Most programmers are not competent enough to properly and efficiently manage memory in a complex application, so a GC is the best way of doing things for the great majority of programs. Giving the programmer too much low level controls is the best way to obtain a program which cannot be optimized properly by a compiler/VM because it won't be able to know which low level instructions are just an optimization attempt by the programmer and which are a functionnal requirement. Asm gives you even more control than C++, yet is not used anymore. Because we found it was better to let a compiler optimize register allocation rather than have human beings obscuring source code trying to do it by hand. We'd have better programs if all the talented programers who spent some time crafting custom memory allocation schemes for thousands of programs, and debugging them, had dedicated some time improving GC algorithms and implementations.

I do not see how a GC interfers with general resource management.

And what is an enormous speed penalty exactly ?

You still haven't convinced me that Java programs are unavoidably crippled by language-design choices meant to serve proprietary companies' need to distribute closed binaries.

IBM urges Sun to make Java open source (News.com)

Posted Feb 27, 2004 16:33 UTC (Fri) by angdraug (subscriber, #7487) [Link]

Java's design was meant to attack problems that Free Software just doesn't have
It may be true about Java the language, but what about J2EE? If tasked with platform selection for a large business application, what Free Software would you select?

IBM urges Sun to make Java open source (News.com)

Posted Feb 27, 2004 21:29 UTC (Fri) by ncm (subscriber, #165) [Link]

I would select Linux or one of the BSDs (or even eCos or RTEMS), choose a selection of languages appropriate to the task, perhaps C++ and/or Python, and appropriate corresponding Free Software libraries.

In other words, I would use the same tools and materials that we use to build the phenomenally successful Free Software suites. As a matter of fact, not only "would" I do these things; I actually do them. And so might you.

STANDARD JVM and set of LIBS is all thats needed...

Posted Feb 26, 2004 20:10 UTC (Thu) by johnjones (guest, #5462) [Link]

Ok everyone

all that is needed is the a Virtual machine STANDARD that could be the JVM of course the virtual
machine Libs are also important hence the SWING vs SWT

if you have a standard VM then other langs not just "java" could target it and running that VM
could mean that running Python or Java or TCL

most of all is get the Virtual Machine spec !

Microsoft is trying to make all their apps run on the .NET Virtual machine (even when you
compile C++)

IBM and SUN could WIN big here people are looking at this and want to run multiple Langs so
they chouse MS rather than JVM

STANDARD JVM and set of LIBS is all thats needed...

Posted Feb 26, 2004 23:05 UTC (Thu) by piman (subscriber, #8957) [Link]

Trying to standardize on a single virtual machine is a futile effort. Future research will obselete it, and tradeoffs will invariably be made in its design that favor some uses over another. Obviously we want to keep the number of VMs to a minimum, but compiling non-Java for the JVM is a terribly complicated task (though possible).

The .Net virtual machine might support C, C++, C#, and Java, but those languages are all closely related. Throw some Python, Common Lisp, Smalltalk, Ruby, ML, and Haskell into the mix, and you have a much more difficult problem.

STANDARD JVM and set of LIBS is all thats needed...

Posted Feb 27, 2004 3:26 UTC (Fri) by jamesh (subscriber, #1159) [Link]

To be fair, Microsoft have done a "JScript.NET" compiler for Javascript. Whether you like Javascript or not, it is actually quite similar to languages like Python (a lot closer than it is to ones like Java or C#).

STANDARD JVM and set of LIBS is all thats needed...

Posted Feb 27, 2004 19:20 UTC (Fri) by jtc (guest, #6246) [Link]

"The .Net virtual machine might support C, C++, C#, and Java, but those languages are all closely related. Throw some Python, Common Lisp, Smalltalk, Ruby, ML, and Haskell into the mix, and you have a much more difficult problem."

Pardon me if I'm mis-interpreting what you said above, but .net supports more than just C, C++, C#, and Java. (See, for example,
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsent7/html/vxconProgrammingLanguages.asp
http://www.jasonbock.net/dotnetlanguages.html
.) Note that implementations are available for Python, Smalltalk, Ruby, and Haskell, along with several other modern and not-so-modern languages.

It may not be wise for the OS community to adopt .net (or, more precisely, CLS) as a VM for open-source software (although the mono project appears to be doing that); but I think it would be wise to choose (or design) a VM that provides this kind of flexibility (as opposed to the JVM, which was not designed with language independence in mind).

STANDARD JVM and set of LIBS is all thats needed...

Posted Feb 28, 2004 10:12 UTC (Sat) by dvdeug (subscriber, #10998) [Link]

Does .net actually support C or C++? I was under the impression that .net didn't and couldn't support a ISO C/C++ implementation beyond the toy level because of unrestricted pointers.

STANDARD JVM and set of LIBS is all thats needed...

Posted Feb 28, 2004 18:52 UTC (Sat) by piman (subscriber, #8957) [Link]

I've seen statements that Haskell, Scheme, and so on can be compiled to .NET, but when I look at the work that's actually been done, I find out that key features of the languages end up having been left out to fit into the VM.

Looking at ActiveState's Python for .NET whitepaper, for instance, I see that string formatting, long integers, complex number, and some built-in methods have been left out, as has the Python standard library. Hotdog Scheme (for .NET) doesn't have first class continuations. The Ruby support listed is not really Ruby compiled to .NET, but rather Ruby implemented in C#. And so on.

So, while "non-standard" languages for .NET are interesting research projects, they're not really the original languages, but rather that language shoehorned into .NET in some manner or another. Given enough time, perhaps some of them will prove to be complete enough to use, but by then we'll probably have some new "universal VM" that everyone will be busy porting languages to.

IBM urges Sun to make Java open source (News.com)

Posted Feb 26, 2004 21:43 UTC (Thu) by simon_kitching (guest, #4874) [Link]

I'm puzzled by the references to "open sourcing" java.

Do they mean submitting the current java specs to a *standards body*?

I believe that IBM's JVM is a complete "clean-room" implementation, and therefore that they could publish the source to this at any time, under GPL, LGPL, BSD or any other license. So why are they waiting for Sun's permission?

I believe that IBM uses Sun's implementation of the standard java libraries, though. Can anyone confirm this?

IBM urges Sun to make Java open source (News.com)

Posted Feb 26, 2004 23:08 UTC (Thu) by mjr (subscriber, #6979) [Link]

I do believe that the class libraries are essentially the same, and they are also the crux of the issue. There are quite adequately performing free JVMs (not to mention GCJ) out there and have been for quite a while, it's the class libraries that are lagging behind.

Also we have no idea about the terms of IBM's licensing agreement (or do we?), so it might well contain some language that'd limit IBM's options in freeing the JVM itself too. But as said, this is really secondary. (Don't get me wrong, it would be nice if IBM's JVM were also free, since it is, I believe, somewhat more efficient than the competition, free or otherwise :)

IBM urges Sun to make Java open source (News.com)

Posted Feb 26, 2004 23:19 UTC (Thu) by josh (guest, #17465) [Link]

By "Open Sourcing" Java, they mean releasing the source under terms that give everyone the right to use, copy, modify, and distribute it. A more detailed explanation of the rights this implies is given here by Debian, and one full list of requirements is the Debian Free Software Guidelines, which were used to form the basis of the Open Source Definition.

I don't know about IBM's JVM, but there are plenty of free JVMs with all the necessary capabilities to replace Sun's JVM, and many additional features Sun doesn't have, such as GCJ's ability to compile Java to native code. The problem has always been the class libraries, and IBM, like many others, uses Sun's proprietary class libraries. The Free Software implementations of Java have class libraries that replace most of the functionality of Sun's, but not all of it.

The big problem is that in freer languages like C/C++, the various implementations add useful extensions, and the best ones become part of the next standard. With Java, Sun doesn't make "extensions", since by definition, if they implement it, it is part of the standard. (Yes, I know there is supposedly a "community process", but Sun is powerful enough in that process that they can put anything in that they want.) In addition, the licenses on Sun's implementation and even some of their documenation are such that agreeing to them can prevent you from ever working on a Free implementation.

Just the Java J2ME,J2SE,J2EE Libraries

Posted Feb 26, 2004 21:54 UTC (Thu) by NZheretic (guest, #409) [Link]

See Just the Java J2ME,J2SE,J2EE Libraries

IBM urges Sun to make Java open source (News.com)

Posted Feb 27, 2004 0:43 UTC (Fri) by pto (guest, #5753) [Link]

The real threat to Sun on Java is IBM. Imagine an open source world where you can choose the
Sun Java with Swing and a crippled generics implementation, or the IBM Java with SWT and a
boatload of C#-killer features. IBM would quickly take over Java.

So I don't expect Java to be open source, though I certainly would love for it to happen.

IBM and Sun at it again + World domination

Posted Feb 27, 2004 7:09 UTC (Fri) by bojan (subscriber, #14302) [Link]

It seems that IBM has many things to say to Sun and Sun has many things to say to IBM these days. First there was the thingy around Linux and Java Desktop System counter-offer from Sun, now this. It looks as if Sun and IBM are competing in who can be a better friend to free and open source software. From my point of view, this can only be good.

Personally, I don't particularly care if Java becomes open source or not. I used to care at one point, not any more. But, from the community point of view, it might be cool to have all Java stuff as free software simply because there is so much good code in it that it wouldn't have to be reinvented. And, all different free Java projects like GCJ and Kaffe would not have to code it themselves. Meaning, more people would focus on yet unsolved, less boring problems. Which is kinda the point of free and open source software.

Which brings me to another important point. It seems that the amount of free software and the problems solved by it (bar patents) is growning at an astonishing rate. Where are we going to be 10 years from now with all the corporate backing and people being paid to cut free software? It's just unbelievable, in a good way, of course. After reading the trancript of Moglen's speech from Harvard on Groklaw, it all looks like a true GRAND PLAN. Gotta hand it to RMS - the man has a vision - there can be no doubt about that at all.

Copyright © 2004, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds