programming, internetJanuary 5, 2007 6:20 pm

Google Web Toolkit: A Free Software AJAX framework from Google

On December 12th, Google made their "Google Web Toolkit" (GWT), version 1.3 Release Candidate, Free Software. It’s released under the Apache 2.0 license.

I haven’t yet used GWT, but it looks very clever. You write code in Java, against the GWT API, and then GWT compiles it into a JavaScript AJAX application.

AJAX

AJAX is the next step in the evolution of several existing technologies. Its predecessor is DHTML, which is the combination of HTML, CSS, and JavaScript.

From Wikipedia:

Ajax, shorthand for Asynchronous JavaScript and XML, is a web development technique for creating interactive web applications. The intent is to make web pages feel more responsive by exchanging small amounts of data with the server behind the scenes, so that the entire web page does not have to be reloaded each time the user requests a change. This is meant to increase the web page’s interactivity, speed, and usability.

The Ajax technique uses a combination of:

  • XHTML (or HTML) and CSS, for marking up and styling information.
  • The DOM accessed with a client-side scripting language, especially ECMAScript implementations such as JavaScript and JScript, to dynamically display and interact with the information presented.
  • The XMLHttpRequest object is used to exchange data asynchronously with the web server. In some Ajax frameworks and in certain situations, an IFrame object is used instead of the XMLHttpRequest object to exchange data with the web server, and in other implementations, dynamically added <script> tags may be used.
  • XML is sometimes used as the format for transferring data between the server and client, although any format will work, including preformatted HTML, plain text, JSON and even EBML. These files may be created dynamically by some form of server-side scripting.

Java

The fact that you can code in Java may well make the process much more pleasant, and give a greater sense of power.

Interoperability

One of the really clever things about GWT is that it should take care of browser incompatiblities for you. JavaScript programming is notoriously difficult, because of the differences in browser implementations. Trade-offs are often made in deciding which browsers to support, and to what extent.

If GWT lives up to its promise, and deals with that worry, then it’s worth using for that reason alone.

Capabilities

I’ve been pretty impressed by the samples I’ve seen, and the extra libraries people have made available. Check out some of the links at the end of this post.

On the GWT site itself, there’s a sample that emulates a desktop email application. It’s pretty impressive. Also have a look at the GWT Wiki & gwtpowered for some other nice examples, and additional components.

There seems to be a rich set of components available from third parties. Even better, most seem to be Free Software.

*** 

I hope to use GWT, in the not too distant future, to help create an AJAX interface for SquirrelMail and, in turn, ippimail. Given what I’ve seen, I’m really looking forward to it. The practice should also be useful in building some Java skills.


Related posts:

Links: 


GNU Free Documentation License

Copyright (c) 2006-2007 Michael J Kaye.

Permission is granted to copy, distribute and/or modify the content of this blog post under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
gnu/linux, programmingDecember 4, 2006 12:37 pm

Three-ing Java: Sun looking at GPL3 Java?

Sun’s Simon Phipps talks about their decision to release Java under "’GPL v2 only’ rather than ‘GPLv2 or any later version’", and the possiblity of moving to GPL3 (once it’s finalised), over at his blog.

…My personal view is that the GPL v3 process has been extraordinary and effective so far in taking a somewhat partisan initial draft and evolving it into a solid license…

…The reason we did not choose to use the GPL v3 for the Java platform yet is because the GPL v3 is not ready to be used…

…Sun could not in good faith commit to using a license sight-unseen for such an important code-base…

…We are certainly not opposed to it, and it would be a huge mistake to read our use of the GPL v2 that way….

It makes for interesting reading, and Simon makes his point eloquently.

The patent and DRM aspects of GPL3 seem more relevant than ever, given the recent deal between Novell and Microsoft. Time will tell whether the expertise being used to shape it will pay off. These issues are important enough to hope that it does.

Related posts:

Links:
GNU Free Documentation License

Copyright (c) 2006-2007 Michael J Kaye.

Permission is granted to copy, distribute and/or modify the content of this blog post under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
gnu/linux, programming, interviewsNovember 27, 2006 1:09 pm

GPL Java: An interview with lead Kaffe developer Dalibor Topic

Dalibor Topic, lead Kaffe developer and Classpath contributor, kindly agreed to take part in an interview, conducted by email. He uses his insight and expertise to give us the inside on Sun’s GPL’d Java.

He talks about OpenJDK’s effect on Kaffe, Classpath, etc., his views on Mono, his opinion of the Sun code, and more…

Could you describe your involvement with the Kaffe and Classpath projects?

DT: I contributed my first few patches to Kaffe back in 2000, after hearing about a free VM.

I really joined the project in earnest in early 2002, helping Jim Pick bring back a slightly dormant Kaffe project back into action, and stayed around since, taking over the duties of a co-maintainer.

Since Kaffe users wanted to use it to run current versions of applications like XML processors, and Kaffe’s class library had not seen much maintenance work for a while, I looked at GNU Classpath as a class library implementation provider with interesting parts to integrate into Kaffe’s own class library to make such applications work.

Thanks to the Classpath team working quickly on implementing more and more of the standard class libraries, soon there was a strong incentive for Kaffe to start merging its own class library with Classpath’s, and that’s how I really got involved with Classpath. We migrated Kaffe gradually over to Classpath’s class library. In the course of that work, several Kaffe developers started working on Classpath directly, and the rest is history.

I’ve got to particularly point out the work done by Mark Wielaard, the GNU Classpath maintainer, and Tom Tromey, the gcj maintainer, that made it so straightforward for Kaffe to become a part of the GNU Classpath community.

Could you describe any other Free Software projects with which you are involved?

DT: In general, I’ve tried to make sure that whatever patches came up in the context of Kaffe porting and development went upstream to the projects we use code from, so you can probably find my name on bug reports and the occasional patch going into GNU Libtool, GNU Gettext, etc.

In my other life, I work on a Free Software theorem prover, SPASS, from the Max Planck Institute for Computer Science in Germany.

What was your first reaction when you heard about Sun releasing Java under the GPL?

DT: I was very happy, and excited that the rumors turned out to be true.

We have won the "struggle to liberate Java" in the finest possible way: with Sun deciding to come with flying colors in support of setting Java free, and taking the leading position in that movement that they deserve, as the creators of the platform.

I’m very pleased with Sun’s execution of it all so far. For example, they’ve been very responsive to resolve questions about the licensing model from Java community members, who may not be familiar with the way the GPL or the Classpath exception works. They’ve done a great job on the FAQ for the OpenJDK project.

Now that there has been some time to think about things, and look at the detail, how has that reaction changed, if at all?

DT: The reaction has not changed, I’m still very happy and excited!

Have you had a look at any of the released code?

DT: Yes, I’ve played around with building HotSpot and javac.

I’ve found a handfull of small compiler warnings to fix, and ran pscan on the code to look for the simpler issues to fix. I’ll fax in my contributor agreement to get my first patches applied upstream.

What did you think of it, and how does it compare with the Kaffe/Classpath code?

DT: I looked at the small C portion of the HotSpot code, where I found the warnings I wanted to fix, and I like it. It’s reasonably easy to find one’s way around it, in particular using the new OpenGrok interface to the code at http://opengrok.neojava.org/hotspot

I’m pretty impressed by how warning-free the code builds on my system. There is a bunch of nice batches of code I’ll have to look at reusing inside Kaffe eventually, though since Kaffe is written in C and HotSpot is written in C++ that’s not necessarily going to be trivial.

It’s hard to compare HotSpot or javac code with Classpath, since they implement different things. On the other hand, compared to Kaffe, HotSpot code shows a lot more maintenance and implementation work going into it, and looks better documented. It is without doubt a great, unique contribution to Free Software.

If Sun hadn’t done this, how long do you think it would have taken the Free Software community to create a full Java implementation and VM?

DT: I think we would have been able to finish implementing 1.5 support in GNU Classpath next year, and many VMs using GNU Classpath already support the features introduced in 1.5.

But by then Sun would have released 1.6 already, and we’d have had to play catch up with the reference implementation of Java again. So, I’m happy the way things turned out, that we can work on Java 1.7 together.

In addition, there are many other interesting problems in the Java space, like deployment and modularity where being able to work together on Free Software solutions should help get the kind of input that helps improve the results for everyone.

Which of the Free Software implementations do you think held the most promise?

DT: It’s hard to pick a single one, since Cacao, gcj, IKVM, JamVM and JikesRVM, for example, all have a lot of good work going into them, partly because some of them are very promising research platforms, and partly since they have a very dedicated community behind them.

Kaffe is noticeably absent on this list, not since I don’t think it has a lot of promise, but since I think it’s more important to bring the projects we work together and share code with into the limelight. A lot of people have heard about Kaffe, and I think they should know about all these other nice Free Software runtimes as well. No single runtime can fit all sizes, and I regularly recommend that people check out those other projects as well. They may find a better solution for their specific problems.

As a Kaffe co-maintainer, I’ve been more focused on encouraging innovation to happen outside the Kaffe project, and bringing code from other projects into Kaffe, rather than trying to position the Kaffe project as the place where things need to happen.

My idea has always been that a diverse community of free VMs is the healthiest one, so I’m glad we’ve achieved that around GNU Classpath.

What is the most valuable aspect of Java for the Free Software community?

DT: There is a huge amount of Free Software written in Java that’s now going to be more readily accessible to users and Free Software developers. That means being able to package more software written in the Java programming language into GNU/Linux distributions, for example.

Do you think that we are more likely to see all Free Java development now focused on Sun’s version; or will we see Kaffe, GCJ, and others thriving because of the released code?

DT: I think we’ll see a bit of both. I hope that Sun will see some good contributions coming from this step, and will continue to build up an enthusiastic and passionate community around the code, like they’ve started with project Peabody, which encouraged community contributions.

I expect that Sun will see most contributions starting to pour in once the class library code is released, as most Java developers will be more familiar with Java, than with C++, or C.

Nevertheless, the way Sun is doing it, starting with the VM and the compiler, allows them to establish the necessary structures, and make sure everything is in place when the rush begins. ;)

I also think that Kaffe, GCJ, etc. will thrive along with OpenJDK, moving toward more unique niches, while at the same time looking at ways to share code with Sun’s implementation; in particular class library code, but probably more bits and pieces over time as well.

We’ve always had a strong culture of giving back to where we take from around GNU Classpath, so I think it will all work out well.

Do you think much of the code and innovation from Kaffe, Classpath, GCJ, etc. will make its way in to Sun Java?

DT: I don’t think that will happen instantly, since Sun’s implementation, being the reference implementation, will very likely be maintained in a much more conservative fashion, than the more experimental free runtime projects.

But, since some of Sun’s class library may have encumbrances from third parties, I hope we’ll see the community outside Sun step in to help write replacements for that code. Some of the current work on GNU Classpath done by Roman Kennke and the rest of the team may help with that, for example.

That being said, I’d expect that new technologies coming from outside Sun, which the Java developer community desires to see in the JDK, will continue to go through the JCP and then into the JDK, eventually.

Have you ever looked at Mono/C#? If so, what did you think of it?

DT: Yes! I’ve actually seen Miguel de Icaza talk a few times, he has a great way of presenting his ideas, so I naturally went and checked out Mono a little bit.

Mono is a fun project. Miguel and the team had looked at Kaffe, and decided to try to write a better system, and afaict have done a very good job on making Mono into a nice, feature-rich runtime. Some of the ideas in Mono would make sense to introduce in Kaffe as well, like using glib for solving some of the standard problems when writing portable C code.

But one of the most impressive things about Mono is not the code, IMHO, it’s the dedicated community of developers trying to turn Mono into a better platform for development of Free Software on the GNOME stack then the alternatives.

What, to your knowledge, have Sun released under the GPL now; and how useful is that to the Free Software Community?

DT: They have released the JavaME reference implementation as PhoneME, the test harness for it as jtreg, the javac compiler, the HotSpot VM, and the Java Help library. In addition, Sun also added the GPL with the Classpath exception as a licensing option for the JavaEE reference implementation, project Glassfish.

In terms of ‘is there a full Free Software Java implementation from Sun’ the answer is now a clear yes for the ME and EE standards, with a significant part of the reference implementation of the JavaSE standard being released through HotSpot and javac. Until the class library arrives as Free Software in Q1 2007, that leaves some time to experiment with hooking HotSpot and javac into GNU Classpath, for example, and that’s what some developers have set out to do.

On the other hand, the ME and EE implementations are useful immediately. The Ubuntu GNU/Linux distribution is working on packaging the EE implementation for the next release, afaik, and I’ve already seen a build of PhoneME for OpenEmbedded’s port to the Zaurus PDA device.

Java Help and javac also play a role regarding packaging efforts around Sun’s Free Software IDE NetBeans, since NetBeans depends on those projects.

How useable is what they’ve released now? They describe it as an "early
build" of 1.7. Is it a very unstable version?

DT: I can’t judge the stability of the builds, as I’ve mostly just played around with the source code, rather than the binaries. I know that GNU Classpath developers have made Sun’s javac work on GNU Classpath, and used it to find a bug in GNU Classpath’s regular expression handling code, so that was quite usable. I’ve also seen someone post a build of the PhoneME JavaME implementation for OpenEmbedded on the Sharp Zaurus PDA, so I guess that’s quite usable as well.

Sun say that they will release a "JDK based nearly entirely on open-source code". For those of us who will exclude the resulting non-free parts, do you think the JDK will still be useful?

DT: Definitely. It is not clear at this point how much encumbered code, if any will be left over by the time the class libraries are released. If there are any such parts left over, we’ll have to write Free Software replacements for them, or improve the existing ones until they are good enough to replace the encumbered parts.

But for a lot of Free Software written in the Java programming language, those encumbered parts may not be necessary to use it, so the unencumbered parts will be a very useful contribution on their own for users of such software.

Sun say they are going to make the source for JDK 6 available once they’ve released a full JDK 7 as Free Software. Do you know whether the JDK 6 code will also be under the GPL?

DT: I don’t know. I guess it will be, if any possible, since the differences between JDK6 and early JDK 7 won’t be very large.

I could imagine distributions having an interest in taking the freed JDK 7 code and filling in whatever gaps were left over in a GPLd JDK 6 source code release, and then certifying their builds of that as Java(TM) 1.6 compatible, for example. 

Do you think Free Software developers will embrace the JDK, and implement the parts that Sun have been unable to Free?

DT: That’s already happening in the context of GNU Classpath, to some degree. Sun has explained in the FAQs that the problematic encumbered portions of code lay in the areas of graphics and font rasterizers, and that’s where the commit activity seems to be happening in the last days. GNU Classpath could always use more volunteers for work on the class library, of course!

I think Free Software developers will embrace the JDK as a strong Free Software platform. The wealth of Free Software commons available on the Java platform shows that many Free Software developers have enjoyed working with the platform despite the drawback of having to rely on non-free software until suitable Free Software implementations around GNU Classpath became viable. Now that Java is being liberated, I’d expect it to be used by even more Free Software developers than before, as "the Java Trap" is a thing of the past.

In particular, I’d expect more Free Software developers to look into re-using libraries written in the Java programming language in their own projects, be they Java-based, or not. Java 7 should bring a push towards making the JVM a ubiquitous platform for all sorts of programming languages that need some kind of a runtime, and Sun has hired the JRuby lead developers to help bridge the gap between Ruby and Java using the JVM as the middle ground.

How much of a worry is the trademark on the name "Java"? Do you think Sun will cause problems and be over zealous with their control?

DT: In order to maintain compatibility, Sun only lets implementations that pass the certification process use the Java brand. That has not been a problem for the existing Free Software runtimes, since they avoided using Sun’s trademarks.

I don’t think that’s going to be a problem in the future, either. Sun has created a way for independent implementors to certify their implementations as compatible, and I’d expect those Free Software implementations that want to tap into the marketing power of the Java(TM) brand to certify. Apache Harmony, for example, is an implementation that’s been created with the explicit goal of getting an independent open source implementation Java(TM) certified.

There are certainly things I can imagine happening that would make the life easier for distributions wanting to certify their own builds as Java(TM) compatible, for example, like making the compatibility test suite, the TCK, readily available to such users, so that they can walk through the actual scholarship process faster. That’s probably going to be an interesting subject of discussion once the full JDK has been released.

But, given Sun’s very good execution so far, and the desire of all people involved in liberating Java on Sun’s side to do the right things the right way, I am not afraid of Sun being overzealous at all. They’ve been just plain great since we started talking on how to make this happen.

Of which Kaffe/Classpath achievement are you most proud?

DT: It’s the tightly knit community of Free Software developers around GNU Classpath, for sure. There is even a scientific paper describing the "permeable development" model we’re using to help each other benefit as much as possible from sharing.

That, and showing that there is a demand for Free Software runtimes for the Java programming language, and creating the circumstances which led to cooperation between ASF and FSF to address license compatibility issues in GPLv3, and connecting people worldwide working on liberating Java behind a common backbone in form of GNU Classpath, and many other things that only became possible because of that tightly knit community around the project …

But it’s really the people behind it all that I’m most proud of having the opportunity to work with. GNU Classpath is a really special project in that respect, I think.

***

I would like to thank Dalibor for taking time out to answer these questions. His position gives him a unique insight, and it was generous of him to give us the benefit of his expertise.

Related posts:

Other Interviews:

Links:

Wikipedia pages on the Free Java projects:


GNU Free Documentation License

Copyright (c) 2006-2007 Michael J Kaye.

Permission is granted to copy, distribute and/or modify the content of this blog post under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
gnu/linux, programmingNovember 20, 2006 6:56 pm

Java now Free Software (GPL) - part 2 (reality check)

Duke, the Java mascot, in a contemplative poseOk, the smoke from the party-poppers has cleared; the haze from the cheap punch has faded; so let’s have a look at the detail of Sun’s move in the cold light of day.

This follows on from Java now Free Software (GPL).

The video announcement

[EDIT: This paragraph corrected, as a result of Dalibar Topic’s comment below]

This is a bit of a niggle. When you go to the announcement page, the video of the announcement (almost an hour’s worth) is presented in a proprietary format. Sun didn’t seem to get the irony of this at first, but Dalibar Topic, who is a developer on Kaffe, Classpath, and others, did some excellent work in transcoding it to OGG Theora. Sun now have a link to it on their page, and have been good enough to provide it under a Creative Commons license. Read about how he transcoded it using Free Software here. There is a DivX/XviD version here, but that’s a much bigger file.

What exactly is being GPL’d?

This is the big question; and is often the killer with this sort of announcement. I really hoped that it was going to be simple - that is was just going to be what it said on the tin - but, of course, it isn’t.

Now, as I mentioned in the last post, I’m not as familiar with Java as some of you might be; so I’m trying to keep track of which parts mean what. You’ll have to bear with me.

From the more detailed page of the Sun announcement:

  • Open-Source Java SE: Today Sun is releasing the source code for the Java HotSpot virtual machine, the Java programming language compiler (javac), and JavaHelp online help software. Release of a fully buildable Java SE Development Kit (JDK) based nearly entirely on open-source code is expected in the first half of 2007.
  • Open-Source Java ME: Sun is first releasing the source code for Sun’s Java ME Feature Phone implementation based on Connected Limited Device Configuration (CLDC), which currently enables rich mobile data services in more than 1.5 billion handsets, and the source code for the Java ME testing and compatibility kit (TCK) framework. Later this year, Sun will release additional source code for the Advanced Operating System Phone implementation for based on the Connected Device Configuration (CDC) specification and the framework for the Java Device Test Suite.

That should mean that we have a Free Software Java VM now. And a JDK "in the first have of 2007".

You will notice that they say they will release a "JDK based nearly entirely on open-source code". Quite what this means, we’ll have to wait and see. I have heard that they are working to free problem parts, or reimplement those they cannot. Presumably, these are parts that involve license agreements with other companies. I sincerely hope they can make a fully functional JDK with just Free Software, otherwise things could be rather soured, especially when it comes to inclusion in GNU/Linux distributions.

It’s interesting to hear that the Playstation 3 runs Java ME. It’s possible that may provide an inroad for Free Software to interoperate with Blue-Ray drives.

Sun say will also GPL Project Glassfish, an implementation of Java Enterprise Edition (EE), in the first half of 2007

Sun have talked a lot about freeing Java, but what version?

The version released as Free Software is version 7. The current release is version 5.

Now, Sun’s FAQ is a little vague on the matter, but there may be some good news:

"We’re open-sourcing these components from a very early build of JDK 7. In order to prepare these components to be open sourced, we not only changed the license text but we also simplified the build process in order to make these components more easily buildable outside of the full JDK source tree. JDK 6, is nearly finished, hence we’re releasing these components from the JDK 7 tree. The only other differences between the JDK 6 and 7 versions of these components are minor bug fixes and enhancements that have already been integrated into the JDK 7 tree. When we open-source the full JDK we’ll make the sources for both JDK 6 and JDK 7 available. The community will have both a stable release - JDK 6 - on which to focus quality improvements, and JDK 7, the next feature release where all the action will be for innovation and new capabilities."

It says that once JDK 6 is released, the source code will be made available. It does not say that it will be GPL’d, but it is sort of implied. It also seems to say that JDK 7 is virtually the same as JDK 6, apart from "minor bug fixes and enhancements". That may mean that the code they have released can build into a usable JDK. I hope that my interpretation is correct.

Trademarks

Sun, of course, own the Java trademark. That’s why Free Software implementations, such as Kaffe, have been careful to avoid the word altogether.

The way I understand it is that, unless a VM is an official release from Sun, it can’t be called a "Java VM". This is a shame, but, again, is understandable. I just hope that this won’t lead to a situation like the one between Mozilla and Debian, where Debian can’t call the Firefox in their distribution "Firefox" because they exclude non-free artwork and make some minor patches, and has led to the GNU IceWeasel fork.

Interestingly, Sun have also released the Java mascot, "Duke" (who you can see at the top right of this post), under the Open Source BSD license. This means that the likes of Debian would not be put in the same position of having to exclude non-free artwork. "Duke" is still trademarked, but it neatly sidesteps the Mozilla/Debian issue. I would really like to know whether they did that in response to the Mozilla/Debian situation. If so, it would show how much they’ve been listening and want to get this right.

Even in the Free Software world, when modifications are made to a piece of software, they are normally contributed back to the main project. Forking is unusual, but is also a good thing. It’s what you do if you want to take a programme in a different direction. But you generally give it a new name, even if it holds a part of the original name, to show its heritage; and this is enforced by the GPL. I wish companies involved with Free Software would pursue name issues using the GPL, and not with trademark legislation. I hope Sun are listening.

The license

Why the GPL? Surely the LGPL would have made more sense.

The released applications are licensed under the GPL, but the libraries also use the Classpath Exception. This allows you to "link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice…" This choice cleverly sidesteps the poorer reputation of the LGPL, while actually being friendlier to proprietary software companies. Given Java’s position in the market-place, and its commercial use, I don’t think we could ever have expected it to be straight GPL’d.

Classpath, GCJ, Kaffe

Jonathan Schwartz (Sun CEO), in the video announcement above, said, with reference to Classpath, GCJ, Kaffe, and similar projects:

"Now’s the time for us to get together and try to figure out how do we do the right balancing equation. Because we don’t want to do any redundant work with you, and we don’t want you doing any redundant work with us. And we’re more than happy to put all of our efforts together."

This attitude is reflected, in a much more qualified way, by some developers in these projects. When talking to Newsforge, as quoted on Linux.com, Mark Wielaard of Classpath, GCJ, and Eclipse says:

"There are lots of issues that we will have to look at. Can we combine GNU Classpath, GCJ, Kaffe, Cacao, JamVM, IKVM, etc. with the liberated Sun code immediately in such a way that we have an even better free platform really soon? How does the platform coverage compare between Hotspot and other [runtime environments]? What kinds of innovations can we carry over or must be kept separate? And how do we move the whole research field and GNU Classpath community projects (20+ now) forward without needing to rebase everything on some new code base?"

It would be nice to see these projects, including Sun Java, working together to take the best from each, and giving us the best platform possible. There is an argument for Sun taking the time to learn a great deal from these projects. Free software generally contains far less code than its proprietary counterparts. This makes it easier to maintain and debug. Sun may have an opportunity to learn how to take out some of the bloat.

Conclusion

I started this follow-on post expecting it to be quite negative. I had read rumours about some of the details, and thought there were going to be some serious downers. But having done my own research, I’m still quite positive about what Sun have done. There is some doubt about how complete the JDK will be, but they seem to be working to free as much as they can. It’s a shame we have to wait for some large chunks to be release, but to get as far as they have this quickly is actually quite an achievement.

Jonathan Schwartz seems genuinely enthusiastic, and that gives me some hope that there isn’t going to be too much of an anti-climax next year. His hounding of Rich Green, about whether he would GPL OpenSolaris, was interesting, even though it looked rehearsed.

I am cautiously optimistic. Actually, perhaps against my better judgement, I’m more optimistic than cautious. I shall be watching developments closely.

Links:


GNU Free Documentation License

Copyright (c) 2006-2007 Michael J Kaye.

Permission is granted to copy, distribute and/or modify the content of this blog post under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
gnu/linux, programmingNovember 17, 2006 12:19 pm

Java now Free Software (GPL)

Duke, the Java mascotOn Monday (November 13th, 2006), Sun announce that it is releasing Java under the terms of the GPL2 license.

This is a few days old now, but I wanted to take the time to look at it and think about the implications. Being a programmer, this is significant news for me. I’ve concluded, however, that the effects may be too far-reaching to predict.

This post will concentrate more on the positive. The next post will talk about some of the finer details of the licensing, and exactly what is being released and when. I would recommend reading that one too, to get a balanced reaction. This post, then, reflects my hopes of what all this means.

Java and GNU/Linux

Distribution

The obvious effect is that it will be possible to include Java in GNU/Linux distributions.

This is a frustrating gap that has existed for many years now. There have been a number of projects try to fill it, but with limited success. Most are worthy of acknowledgement for their achievements, but have fallen short of providing a full implementation of the Java standard. What will be interesting to see is whether their achievements are significant enough to make it into the Sun Java codebase, as an improvement to the existing product.

Cross-platform

It will be possible for GNU/Linux to participate in the wealth of ‘run anywhere‘ Java software. As I said, some projects tried to provide a Java run-time for GNU/Linux, but they were unable to create a complete implementation. You could never rely on them to run a Java programme without problems. With a full implentation, any Java programmes that do not feature OS-specific code will run quite happily.

Developers

The Java platform now gains a great number of GNU/Linux developers; with their expertise and bug-squashing determination.

These developers may also decide that Java is a poweful language in which to write their configuration tools. It could lead to a more feature-complete GNU HURD OS, if appropriate cross-platform tools are written.

Java and .NET

I think it is reasonably obvious that Sun has made this move in order to compete with .NET.

Microsoft developed .NET in response to Java’s success and ingenuity, but with their marketing power and platform dominance they have seen fast adoption of the technology.

Sun have gained a good market-share with the GPL’d OpenOffice.org, and I think they want to hold on to their Java market-share by using the same tactic.

Also, .NET has been finding its way into the Free Software world by way of Mono. A number of applications, that run on Mono, have found their way onto the GNOME desktop and into GNU/Linux distributions (Tomboy, Beagle). It seems ironic that software using a technology invented by Microsoft could be used with Free Software, but software using technology from the company who own the most successful Free Software office suite could not.

[EDIT: The following paragraph was changed because of an inaccuracy pointed out by Joe Shaw. See the comments below.] 

One of the reasons for this was Microsoft’s decision to create an open ECMA standard, with which the core .NET framework would comply. There is now some doubt over the long-term viability of Mono, given Novell’s (the owners of Mono) decision to sign an agreement with Microsoft that excludes their customers from prosecution for software-patent infringement, due to their use of GNU/Linux. If only because it makes Novell less popular in the Free Software community.

I am a C# (.NET) programmer (it pays my wage until I find a career in Free Software). I like the technology. Microsoft have done a good job in designing and implementing it. I’m not going say that isn’t the case, just because it’s Microsoft. But, of course, I want to use and develop Free Software, so my focus was on Mono.

Sun’s move changes that, and especially because of their courage in making that move. I have programmed in Java, briefly, before. I liked Java as well; but for different reasons. Java is more mature, and more flexible. .NET is subject to Microsoft’s hand-holding mentality. That does often make things a lot quicker and simpler to do, but it is also very frustrating; especially for a capable programmer who wants to do something his way, but is subject to Microsoft’s preferences. There is a huge volume of Java knowledge out there, much of which is made available by the Free Software community, and Java gives you the flexibility to use it.

I think what I’m saying is that I’m now much more drawn to Java. I liked it before, but I couldn’t write Java for Free Software operating systems. I can now, and I have a great deal of respect for Sun’s decision - I think they deserve a good response from Free Software programmers. I shall be looking at it closely, and will probably try to use that platform for Free Software that I write.

To be continued…

This post is starting to get quite long. I shall talk about the "Classpath Exception", the current status, and some possible pitfalls in my next blog.

I’ll leave you with a quote from Richard Stallman, a video of which was featured in Sun’s announcement. I realise I’m doing their marketing job for them, but they’ve pulled off quite a coup by getting something like this out of him:

"I think Sun has… well, with this contribution… have contributed more than any other company to the Free Software community… in the form of software. It shows leadership. It’s an example I hope others will follow."

Links:
GNU Free Documentation License

Copyright (c) 2006-2007 Michael J Kaye.

Permission is granted to copy, distribute and/or modify the content of this blog post under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.