Gosling on Opening Java 453
An anonymous reader writes "It sounds like James Gosling's nudging Sun closer and closer toward open-sourcing Java, as requested variously by IBM,
Eric S. Raymond, and Richard Stallman, though not by JBoss's Marc Fleury. 'Developers value Java's cross platform interoperability and reliability,' Gosling writes, adding 'If we do something to make Java even more open-source than it is already, having safeguards to protect the developer community will be something we pay a lot of attention to.' Surprisingly, 'the creator of the Java programming language,' as Sun usually calls him, seems to be at odds on this issue with his own CEO, Scott McNealy. So, who should have custody of the child, the father...or the boss?"
Re:Well, legally... (Score:3, Informative)
Re:Well, legally... (Score:5, Informative)
Most of the employee contracts are supplemental to this definition. Many companies claim all rights to works created by employees without the explicit request of the company, as well.
Re:Please Mister the Boss... (Score:5, Informative)
There is a very good free java implementaiton. GCJ (GNU Compiler for Java) [gnu.org]. The library lacks a few things (e.g. AWT/Swing), though, but other than that it is a great implementation. And it is not based on a JVM, but is a traditional ahead of time compiler, so the related disadvantages (as well as the advantages, if any) dissapear. It uses the same (or at least a very similar) object model as C++, so interoperation with it is much easier.
Think about how it can be easy to include Java in a Linux Distro.
Sun's Java JVM can be included in linux distributions without problems. Knoppix, SuSE and SoL include it. Don't know about others. The reason some distributions don't include Sun's Java implementation is because they don't want to include it.
If Java becomes free, I can imagine a lot of thing. Why not bindings with GTK for example They already exist. Check Java-GNOME [sourceforge.net]. It includes GTK and GNOME bindings for Java.
There are also bindings for Qt and KDE. [kde.org]
You can also use GTK via the SWT toolkit [eclipse.org].
Java is NOT a proprietary language (despite some ignorant people who say so), you can find many open source libraries for it, and there is at least a high quality free (as in speech) implementation of it.
Re:Not such a big deal? (Score:2, Informative)
I know that since switching to Mozilla Firefox and the latest version of Sun Java, I've had some minor issues with web-based applications (mostly games) which refuse to work with anything but MS Java VM. So I suppose there's at least one forked (or b0rked, depending on your view of MS Java VM) version of Java out there in widespread use.
Anyone else wants to throw their 2c into the ring on this?
Re:Not such a big deal? (Score:2, Informative)
Open Source [opensource.org] software is based on a development process. You are asking for a distinction between Free Software [gnu.org] and Open Source software witch does exist, but is often confused.
Re:How can a language be open-source? (Score:2, Informative)
They are talking about open-sourcing Sun's compiler and runtime. The Java language specification is very open. It literally says:
"Sun Microsystems, Inc. (SUN) hereby grants you a fully-paid, nonexclusive, nontransferable, perpetual, worldwide limited license (without the right to sublicense) under SUN's intellectual property rights that are essential to practice this specification. This license allows and is limited to the creation and distribution of clean room implementations of this specification...".
Re:How can a language be open-source? (Score:3, Informative)
Don't forget that there's a whole run-time library associated with Java. You have the language specifications, of course, but there's also all the classes that are coming with the JRE already. These are available in source code within the Java SDK, but under a more restrictive license. And then there's also, of course, the compiler itself, the virtual machine, and tools like javadoc. OK, there's kaffe [kaffe.org], for instance, but they're not completely there yet (read their What is Kaffe not? section on the title page). There's also GNU classpath [gnu.org] to replace Java's core class libraries, but they're not quite there yet either [kaffe.org].
Re:"Even more open-source than it is already"... (Score:5, Informative)
Actually, the source code you get is for the standard library, not the JVM source code. That one is a separate download.
Re:"Even more open-source than it is already"... (Score:3, Informative)
The list of licenses that make something Open Source is here. [opensource.org]
While there are some Sun licenses on the list, the Sun Community Source License (which Java source is provided under) is NOT.
This is not an opinion question. This is a fact. Java is NOT Open Source. It is not a little Open Source, or almost Open Source. Open Source is a binary state. It is, or it isnt. Java IS NOT.
Re:Closed for your own protection (Score:1, Informative)
Re:Possible solution: exclude Microsoft et. al. (Score:3, Informative)
Besides, Microsoft doesn't need Sun's source code to fork Java. They have enough people to write a VM from scratch. Or they could use Kaffe.
Re:Why open Java? (Score:5, Informative)
Consider this: if Java were Free, it could easily be the world's most used piece of Free software (before you say Apache or something, let's say 'most used by private persons')
You might be a troll and I did bite, but it was just too good an opportunity to point out what Freeing Java could mean.
last time I checked, java was already open source (Score:0, Informative)
Re:kudos to gosling... (Score:2, Informative)
So, the Java language does not support goto. Trying to use a goto will result in a compiler error.
Tim
Re:What's important is; Shareholder lawsuit (Score:3, Informative)
Re:kudos to gosling... (Score:5, Informative)
mainLoop : for(int i=0; i n; i++) {
for(int j=0; j m; j++) {
if (blah[i][j] == 1) break mainLoop;
}
}
Is also how you can break out of nested loops in Java. More restrictive then goto's so it keeps the code neat.
Re:"Even more open-source than it is already"... (Score:2, Informative)
this just shows you don't know java (Score:3, Informative)
outer: for
for
break outer;
for the latter, "cleaning up properly afterwards" is a textbook case of where you want to use the finally clause of a try/catch block.
Re:GPL fits the description. (Score:2, Informative)
Yes I have. It's basically: "The GPL sucks because it prevents us from making money."
Here it is, from an article on Microsoft's website [microsoft.com], titled "Microsoft's View of the GPL":
"Microsoft's concern is the resulting degradation of the software ecosystem that would be triggered by widespread acceptance of the GPL"..."Microsoft further contends that the combined forces of a well-funded research community and a robust commercial software industry will continue to drive global economic expansion."
Re:Well, legally... (Score:5, Informative)
This means you can be fired at any time or quit at any time. It also permits switching between headhunters whose contracts explicitly prohibit such switching. State law trumps the letter of any contract. But maintaining the spirit of fair employment contracts is in the interest of all parties.
Re:Well, legally... (Score:5, Informative)
* (1) a work prepared by an employee within the scope of his or her employment;
Re:Is the right to implement the spec perpetual? (Score:2, Informative)
For a perfect example of seeing this happening in real life, have a look at the Wabi project. This was a Java-clone in all but name for small footprint devices, long before J2ME started. Basically it was Java - you could compile the code with a normal Java compiler and run it on the Wabi VM and it would work (except for the odd bug here and there). They never called it Java as they didn't want to pay for the TCK.
Re:Why open Java? (Score:4, Informative)
Re:Well, legally... (Score:3, Informative)
there != their [slashdot.org]
Re:What are we talking about here? (Score:2, Informative)
GUI on Linux is slow for one reason: the linux implementations of Java pre-2.6 linux kernel has avoided the POSIX threading (because it had to) and used processes communicating through shared memory instead of operating from the same address space. This is most significant for GUI apps because in Java each Listener runs in its own Thread.
IF Sun releases a true thread-using implementation for linux you'll see a BIG performance gain on the GUI and maybe some gain elsewhere as well, but in the meantime I have to request (again) that folks not dump on Java unless they've used it within the previous year.
My $.005
GCJ performance and capabilities (Score:2, Informative)
1. Performance? My experimentation 6 months ago with compute/object-intensive code showed a fully-optimized GCJ only getting 30% the speed of the latest Sun JVM.
GCJ isn't perfect (yet), but for the most part it produces pretty good code that matches or exceeds JRE performance on most large applications. If you are seeing such a large performance discrepency then most likely there is some bottleneck in the libgcj runtime/class libraries that your code is tripping over. We are fixing such problems regularly, but can't do so if we don't know about them. If your code runs poorly on GCJ then *please* send a message to java@gcc.gnu.org describing what you are doing or, better, with a test case/sample code. We'll do our best to help.
2. Popular applications? Can Jakarta Tomcat with JSP, etc., a common open source Java-based web server be run on it? If not, there is a clear list of what it is missing.
Tomcat runs great on GCJ. The issue today is not so much what GCJ can run, but making it easier for folks to build & run large scale applications like Tomcat and J2EE servers. The "native compiler" compilation and execution paradigm is substantially different from that of the traditional JVM, and this means it can be a lot of work to convert everything from an ant/javac build system to a native one. Solutions to this issue are a big focus for the GCJ development community right now.
3. Web applications sandbox? How about loading untrusted applications over the internet and running them in a security sandbox?
Infrastructure for the java security model is largely in place in libgcj already. There are a few bits remaining to be sorted out, but we should have a completely functional java.security AccessController/SecurityManager within the next few weeks. This will allow you to securely run a) untrusted bytecode, and b) untrusted bytecode compiled to native in a trusted compliation environment.
4. Is GTK or QT really ready to be the free cross-platform Java standard for UI?
Absolutely. Just look at java-gnome. The day will soon come when many of your native linux desktop applications are written in Java, and you won't even notice the difference.
Is there licensing preventing bundling of IBM's Eclipse UI toolkit with GCJ?
Unfortunately, it appears so. IBM's CPL, although a certified free software license, has been decreed incompatible with the GPL. This doesn't stop you writing SWT applications with GCJ, of course - many do. But the SWT itself will need to be distributed with your application or at least in a separate shared library.
Is relicensing under GPL possible?
Better ask IBM. I certainly hope a solution can be found to this problem.