Posted
by
Zonkon Monday November 13, 2006 @07:13AM
from the it-really-happened dept.

prostoalex writes "The embargo is off, and Associated Press is reporting on Sun releasing Java under GPL. Sun is hoping that this step will attract more developers, as well as extend the lifespan of Java. The article notes that this is 'one of the largest additions of computer code to the open-source community', and that Java is currently being run on something like 3.8 Billion devices worldwide." From the article: "Rich Green, Sun's executive vice president of software, said the company hopes to turn more developers into Java programmers, who may then create additional software to support Sun products. 'The open-sourcing of this really means more — more richness of offerings, more capability, more applications that consumers will get to use,' Green said. 'The platform itself will become a place for innovation.' All the Java source code is expected to be released by March 2007, Green said. The move covers all Java technology, which includes software that runs on handheld devices, personal computers and servers."

I don't think the Mono folks are rejoicing;)
With this step, SUN has became the largest commercial contributor to the free and open source software pool. OpenOffice.org, OpenSolaris, now JAVA - well, kudos!

This will remove, at a stroke, one of the largest issues of licence trouble in the *nix world. Fully Free server offerings can now be broader, and the Free desktop gets access to one of the three major ways of bundling sophisticated apps into web pages(Not that I like the practice much; but if Flash, Java, and ActiveX have to exist, I'd rather that more be Freely supported than less).

Come on, you dont do the same kind of applications with a script language like Python and a lower level, general purpose language such as C, C++ or Java.
Script languages are good for small applications but when it comes to big and/or commercial software you need something else. Java is probably one of the most used language (with C and C++) in commercial applications. So yes it is important.

I think we must thank microsoft and its C# initiative, er... plan for world domination, for convincing Sun to open up. That couldn't be done 10 years ago when Java was the only player, and it being free as in beer was already a step forward compared to other environments.

Why the heck didn't Sun do this 10 years ago? It would have save the world a LOT of grief.

Because 10 years ago, before Java had built up the momentum it has today, a certain company deliberately embraced, extended and corrupted the core libraries with their own OS specific extensions, and shipped this version with their operating system until they were forced by court to stop. Had they succeeded Sun would have lost control of the language to the other company, or it would have been forked to irrelevance. This understandably made Sun a bit paranoid about having total control over Java for quite a while.

I am grateful to Sun and so is everyone who uses free software. Its just heartbreaking to think of the amount of effort that has been made obsolete by this decision been taken now instead of 10 years ago. A huge opportunity was wasted.

Just think if Sun had done this in the 90s. There would never have been a GTK/Qt appliactions split because all software would have been written in Java. Assuming the deveopers allowed open source fixes to the performance, Linux, Mac and Windows users would all be using the same free applications and the desktop OS would simply be a JRE support system. A huge investment of volunteer time in GTK apps, in Qt apps, in Mono apps, in the now obsolete ClassPath project - all that work could have been productively spent developing Java applications..Net would never exist as why would anyone bother? Sun has lost huge amounts of money over the last decade on software and subsidised it with hardware sales. As a GPL project, Java will be considerabley less expensive to them.

Its great that Sun have finally released Java. Its instructive to see that all they achived by 10 years of keeping it under a restrictive license is huge financial losses for themselves, the emergence of.Net as an alternative and the waste of the volunteer labor of developers who should be Sun's greatest allies.

Well, it is not so simple, Java 10 years ago was nothing in comparation with Java today (I wouldn't actually call it usefull). Also, there was all that MS J++ fiasco, then a patent ligitation and deal MS and Sun had two years ago....lots of stuff happened, and it is really hard to tell how would things played out if Sun OSed Java 10 (or even 5) years ago.

I personally think timing is great. Java6 is a great piece of software, lets start from that point and see if we can make it better.

I'm very happy that Sun is going to bring Java -platform to Open Source and under GPL license.

I believe that this move by Sun will increase development speed of Java and more importantly it will make Java more common. By having Java as a GPL, there is no reason left why Linux distributions wouldn't include Java in default installation. By becoming a standard part of Linux installations, it will gather more mind share from developers, both open source and commercial, and make developing of Java based applications more lucrative. It's interesting to see if this move will bring Java over a tipping point in desktop environments and lead to a situation where more and more applications are based on Java, leading to a total commodization of desktop.

When Java will become more standard part of a desktop, I believe that it will change deeply on how we build our applications. I think that the future is for applications that have desktop application component that is integrated to a server application. Already it's quite easy with Java to develop server software that works via multiple interfaces, ie. web and desktop. The only question for now has been, do all clients have Java, maybe in the future there is no need to ask this question.

You make some good points about Java being more widely available than Python, but then tail off.

Python is also compiled and byte interpreted. It is certainly not interpreted in the same fashion as a shell script. Python even keeps the bytecode versions around and wil use them later to save recompilation. Any speed difference betwen the 2 will not be due to interpreation.

It is likely that Java will be a bit faster because there has been more resources thrown at and therefore more people able to do optimisation.

However, the big reason is that Python is a dynamic language (similar to Perl) and the compiler cannot make the same optimisations that a more staic language, such as Java and C can. It also tends to mean an extra layer of pointer redirection (hidden behind the scenes). When you have the ability to tie ('tie' is the Perl-speak way of talking about this - not sure if they use another word in Python) variable to external resources, you can't take any chances even with consecutive reads of the same variable. This all adds time.

As you say, you last shot is a low blow. Just because something is 'leading' does not make it the best - is Windows the best OS or IE the best browser? Maybe, maybe not - but I htink on Slashdot we'd agree there is more to it than just 'leading'. I've not used either client, but maybe Azureus is simply a better program with a better interface, maybe it is more widely available for different platforms? I have no idea - but it says nothing about the relative merits of the 2 languages as such.

Second, it's compiled and then byte-interpreted, giving it a fairly good speed compared to Python's interpretation.

Python is compiled and then byte-interpreted, just like Java. If you have to bring the speed argument to the table, at least bother to verify WHY it's slower before spouting nonsense.

Also, while Python maybe be slower objectively, especially in number crunching, the significantly faster startup times and generally smaller memory usage often make it seem much snappier, which is at least as important for many if not most applications. Java GUI toolkits other than SWT are also universally regarded as slow, and Python is significantly easier to extend with C so you can speed up the parts that really need it.

Also, Java is embeddable as a web applet.

In theory, in practice Java applets never worked well, and have been going the way of dodo pretty much since their inception, you rarely see one these days - fortunately, painful as they were.

That's like saying if you code C++, Bjarne Stroustrup has indirect control over your code. It's a ridiculous argument and the reason it gets any weight here at Slashdot is because it plays into that "Star Wars" mythology of the battle between good (FLOSS) and evil (Microsoft). And I'm sorry to say this but Star Wars isn't real.

I think you misunderstood what I wrote. There are no patent problems with java, simply because SUN chose to license it under the GPL. Java is copyrighted by SUN, and it has a large IP portfolio over java technologies (lots of patents). As soon as they switched over to GPL, they immediately granted free use of these patents to every programmer who builds on java and distributes his code under the GPL. With SUN's choice, there are no longer any patent issues with java. Now contrast this with the deal Novell stuck with Microsoft, that guarantees a 5 year revocable (!) protective covenant for novell customers (and novell customers alone, according to SteveB himself) alone. The difference is HUGE! Of course, the details of the deal are not known - there may or may not be MS IP in Mono. Saying that there are is simply FUD, but than, Microsoft and Novell agreed not to sue each other's customers for patent infringement... which reinforces the perception that there might be patents. And which is the most likely candidate from the software stack distributed by Novell? The Linux kernel? KDE? Apart from perhaps Samba, Mono is the most likely candidate for patent infringement... I think that is why Perens warns against it. But still, I must emphasize, that this is just my speculation. Don't take it too seriously (my original post was sarcastic, but./ removed the evil-comment tags). One thing is certain: since SUN decided to distribute java under the GPL, as far as patents goes, it become safe. This cannot be said of Mono, even though you cannot claim the opposite either with absolute certainty... You see what meant now?

Anytime I startup a Java program I want to run and hide due to fear that the pages being swapped out to make room for it will crush me where I stand.

Maybe as open source software people will be able to look at it and ask *why* does it have to take up so much memory to do such simple jobs? Compare for example Azureus (in Java) to bittorrent (in Python).

Only if C++ is patent encumbered, there are few implementations, and the only useful implementation is owned by a company that is no longer willing to try to work around the patents to produce a truly free implementation, and, in fact, has made a deal with the devil so only their own customers can legally use their implementation.

If by "suitable for Linux" you mean that you can now start hacking the JVM to your heart's content, you may be right. But I interpret "suitable" as referring to stability, performance, security, and reliability, not whether I can personally hack the code.

This is one of those cases where being specific about the language you're using might help. What he probably meant was "suitable for distributions of GNU/Linux". There are no (serious) licensing issues any more with Java and it can be easily integrated with pretty much all standard distributions. Java can also become a base for further development of projects that make a point about not being tied to proprietary technologies. For example, it can be integrated into GNOME and KDE such that critical components can rely upon Java being there in a way that would be legally dubious today.

Aside from that, if people start hacking Java itself, they'll end up with versions that won't pass the compatability tests and break the very commercial apps you mention.

If people "hack" Java in order to add new features that make it incompatible with other versions, then Sun would have every right to enforce the Java trademark against them so they can't offer as "Java" and such confusion is reduced. If one of these forks turns out to be successful, then that's great as it presumably would have reasons for being successful, like, say, being better.

If, on the other hand, people start hacking it to:

- Port to alternative platforms
- Integrate it into frameworks it doesn't "natively" integrate with right now (KDE, GNUstep, etc), IIRC the current GNU/Linux distribution uses GTK, though I'm prepared to be corrected on that
- Play with various features of the system to improve performance and memory usage (there are a million ways you can write a garbage collector)
- Do the latter, but optimized for specific instances (should the same GC model be used on your Sharp Zaurus, Playstation 3, and 100GHz Core8Octomegaseptupal with 8T of RAM*

...then I don't see the problem, and I do see this as a good thing.

Either scenario, even your "People will corrupt the holy Java" instance, seems like it can't work out negatively, and may work out positively. They're good things!

* Note to people reading this a decade from now. Believe it or not, people in 2006 thought dual-core 3GHz CPUs were "Where it's at". I don't know what Octomegaseptupal is either BTW. The point is that's supposed to be a really insanely high end system.

Rubbish. The MS fan boys have been hand waving away legitimate concerns about patent and licensing liability in Mono since day one. Now Novell has made it absolutely clear that Mono has patent and/or licensing liabilities and they still want to dismiss very real issues as FUD.

Not all parts of the.Net environment are covered under ISO/ECMA standards. Even if it were completely covered, the notion that Microsoft won't violate it's own standards or ignore a toothless standards organization if it pleases is just foolish.

You can't "fix" a patent violation. Once it's done, it's done and you're liable. Assuming that there's some work-around you might be able to remove future liability but depending on the nature of the patent there's no guarantee that's practical or even possible.

One of the common excuses for directing OSS mindshare to MicroSoft IP encumbered technology has been that "Java is just as bad." That excuse has now been eliminated. It's time to stop wasting OSS resources helping Microsoft and Novell build elaborate IP traps.

Actually, it does. If Mircosoft didn't want to grant a patent license, they could not distribute it under the GPL. The funny twist is the one Microsoft pulled with Novell - what you need to make sure is the party distributing the code (Novell) isn't the same as the one holding the patent (Microsoft). They can't give Novell a patent license because that'd hold Novell to the GPL - instead they create a covenant saying they won't sue Novell for those patents. It's in essence a patent license without actually giving one. Mircosoft could have pulled exactly the same with a subsidiary "Microsoft Java, Inc." who'd happen to be in a covenant with Microsoft, Inc. to not get sued, but everyone else is.

7. If, as a consequence of a court judgment or allegation of patentinfringement or for any other reason (not limited to patent issues),conditions are imposed on you (whether by court order, agreement orotherwise) that contradict the conditions of this License, they do notexcuse you from the conditions of this License. If you cannotdistribute so as to satisfy simultaneously your obligations under thisLicense and any other pertinent obligations, then as a consequence youmay not distribute the Program at all. For example, if a patentlicense would not permit royalty-free redistribution of the Program byall those who receive copies directly or indirectly through you, thenthe only way you could satisfy both it and this License would be torefrain entirely from distribution of the Program.

This should substantially help GCJ, because last time I checked it uses the standard libraries from Classpath to compile programs. Some things were unimplemented in Classpath, and so you could run into problems compiling non-trivial applications in GCJ.

The *reality* is that the EMCA specification for.NET CLR does not include WinForms. Mono not only implements the CLR of.Net but tries to also implelement the graphical aspects.

With Perl and C/C++ available on just about every system out there I can't see choosig Mono for command line work. If I want to go Mono, it's because I want a common platform for creating a graphical interface. Choosing Mono means that I am hoping that they can keep up as MS continuesly developes and extends those aspects of.Net not covered by the EMCA spec. Whether they do it on purpose or not MS will break the API as time goes on and the Mono project will continuously scramble to keep up.

Now this doesn't even take into account the new deal between MS and Novell which has a number of us Star Wars nerds nervous about patents as well. So cheap shot aside I think your take is overly simplistic and a knee jerk reaction to FOSS zealotry. Just because FOSS fans can sometimes go over the top about "teh evil MS" doesn't change the fact the MS has consistently abused their monopoly influence over the years and screwed over partner after partner.

Bottom line, now that Java is GPL I beleive it will be the safer choice between it and Mono for cross platform development without hidden "IP violations" to worry about.

The nice thing, from my perspective, about Java being GPL'd is that the FreeBSD port can easily be installed. The previous license did not allow distribution of modified versions, so you first needed to download the Java source from Sun (accepting their license), then apply the FreeBSD-specific patches, and then compile (which required a Java VM, which typically meant installing the Linux Java VM binary, and compiling using this).

Now, I can just grab the binary (since the GPL allows binary distribution of derived works, as long as the source is available). The real question is how is the trademark licensed? Will the unofficial ports be allowed to be called Java? Or will I have to run 'KenyanPeaberry, base on Sun Java(TM)?'