NetBeans 6 delivers great updates to the Matisse GUI builder. Spend a few minutes with Roman Strobl and get an expert briefing on what's new and what has changed. (sponsored)
In this, the third and final installation of Andres' Introduction to Groovy series, you learn about how Groovy handles variable numbers of arguments, named parameters, currying, and more about Groovy operators. Including, some new operators.
Swing Fuse (actually just Fuse), is a framework designed to make it easier to create your own custom desktop components. In this article, Daniel Spiewak shows you how to get started and provides sample source code you can download.
Willam Louth shows how he uses JXInsight Probes to investigate probable performance issues with code bases that he is not familiar with. He also highlights possible pitfalls in creating a benchmark, as well as in the analysis of results.
The Classpath Exception to the GNU GPL is a crucial provision of the license under which Sun has open sourced Java today. It permits you to link your code to open source Java without forcing your code to fall under the GPL as well.
The actual language of the Classpath Exception
is straightforward, well written and mercifully brief, so you may want to take a moment to read it right now:
Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination.
As a special exception, the copyright holders of this library give you permission 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, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.
As such, it can be used to run, create and distribute a large class of applications and applets. When GNU Classpath is used unmodified as the core class library for a virtual machine, compiler for the java languge, or for a program written in the java programming language it does not affect the licensing for distributing those programs directly.
IMO this is a wise provision for Sun to have incorporated, allowing "business as usual" to continue for most people shipping Java-based products. Without such an exception the GNU GPL might have had cascading impact on a huge number of Java projects, both commercial and open source.
What exactly will this exception mean to you? Does it change how you perceive the choice of GPL for Java? Is it what is needed to make open source Java work? Would you have chosen differently, or not included an exception like this at all?
Re: Java's GNU Classpath Exception: What exactly does it mean?
IMO this is a wise provision for Sun to have incorporated, allowing "business as usual" to continue for most people shipping Java-based products.
Without that provision, a GPL release would have been meaningless since not even Linux distributions would have been able to ship the GPL version of Java. I won't celebrate until the code is actually out, but if they do what they seem to be saying, they are doing the right thing both for themselves and for the Java community.
From the release, it also sounds like they are not going for a dual-license scheme. I think that's also the right thing to do; a dual-license would have deprived Sun of most community input.
This step was long overdue for Sun; much as vocal Java advocates like to think of Java as the invincible juggernaut, Java has been heading for difficult times. This step by Sun removes a major hurdle that has kept Java out of a lot of environments and will reinvigorate Java again and get back some of the momentum it had lost.
If everything is as Sun announced it, this will mean that Java will probably ship standard on all major Linux distributions. In addition, projects like Mono may now be able to offer full Java compatibility and full Java/C# interoperability.
Java still has considerable technical issues that need to be overcome, but with community input, that has a better chance of finally happening.
(And I hope that those people who have announced here that they will stop using Java if any of that happens will do us all a favor and
follow through
.)
Re: Java's GNU Classpath Exception: What exactly does it mean?
What does it mean? It means that you have a choice. Some people are Open Source everything, they would bring it into the real world if they could. Others are dead set against it and would rather cut off a body part than use Open Source. But luckily, like most things, the majority of the people fall somewhere in-between. Many really don't care for any legalease and tend to skip reading licenses and EULAs unless they are forced by atleast one man named Guido.
All I can say is that it may get interesting, but all we can really do is guess. How many will it effect? Hard to say since there are people out there running Java versions pre Swing, and there opinions are still based on the obsolete.
Confused: "Linking with" vs "Making programs with"
Someone clarify this. Even if they release the JDK under the traditional GPL, I could still write programs *using it* / *in it* without having to make my program GPL, just like with the GNU cc compiler, correct?
Then what's this "business as usual" becuase this GPL exception then? It would be "business as usual" regardless, not?
Re: Confused: "Linking with" vs "Making programs with"
You are correct. That's why they added this exception. Otherwise, you'd be inheriting ("linking") to GPL'd code from the API (i.e Object) which normally means that you have to release your new code under the GPL.
Just to be clear: the GPL-with-linking-exception isn't some sort of compromise that Sun came up with to keep commercial customers happy, it's the same license that the GNU standard C library and the GNU Classpath library use.
Re: Confused: "Linking with" vs "Making programs with"
I didn't explain myself right. If they did NOT include this exception, I could STILL write Java programs without having to release it under a GPL.
When I write a program, I'm not "linking" to Java, I'm writing a program using it. I think the GPL covers this.
Just like the cc compiler. Itself it's GPL'ed, but code I write with it isn't.
My point is, the "exception" they've added is NOT for applications people write, but for people that want to build new layers on top of actual Java.
I have a problem with the "business as usual" part, which would be "business as usual" regardless whether or not they add the "exception" rule.
Re: Java's GNU Classpath Exception: What exactly does it mean?
As far as I see the Classpath Exception does not cover the Virtual Machine. It won't be possible to bundle the JVM with your application without making it GPL. I think it would be great to be able to trim down the runtime and bundle it with applications (games) to make them easier to run on systems with no JVM installed.
Re: Confused: "Linking with" vs "Making programs with"
> I didn't explain myself right. If they did NOT
> include this exception, I could STILL write Java
> programs without having to release it under a GPL.
> When I write a program, I'm not "linking" to Java,
> I'm writing a program using it. I think the GPL
> covers this.
Exactly. You could still write and compile a program. However, you would not be able to run it. For this reason, you must have the exception for the APIs (and maybe for the native libs/JVM itself because of the native methods).
So the exception was probably not needed for the compiler.
But since the other parts require it and since the compiler may be part of the JRE in the future, it was better to have it for the compiler too.
JDistro (shared runtime and swing desktop) -- J NLP (application catalog) -- Alma (source code tool) -- Slaf (swing look and feel) -- PixelsLoupanthère
Re: Java's GNU Classpath Exception: What exactly does it mean?
> As far as I see the Classpath Exception does not
> cover the Virtual Machine. It won't be possible to
> bundle the JVM with your application without making
> it GPL. I think it would be great to be able to trim
> down the runtime and bundle it with applications
> (games) to make them easier to run on systems with no
> JVM installed.
I believe this is problematic as well. One of the problems we face is people having to install the JRE. Sun should just release it all under GPL + exceptions. It still protects their IP and allows us easier deployment options (which has always been problematic).
One reason I can think of why they don't do it, is to protect their Java ME business. But a JBosser seems to think that the JSE virtual machine is under GPL + exception. http://jboss.org/jbossBlog/blog/slabourey/2006/11/13/FOSS+Java%2C+Finally%21.txt So either he knows something we don't, or he just didn't parse the announcements correctly.
Re: Confused: "Linking with" vs "Making programs with"
> You could still write and compile a program. However, you would not be able to run it.
I *still* think people are not getting it. I think, yes, *without* the exception, it being released under the traditional GPL, you *would* be able to run it, even through you need the VM to run it.
And why not? It'd be rediculous. But this, I think, is *NOT* the reason why this exception clause was added. I think this exception clause was added, so that people can add stuff to the VM itself without having to GPL it.
Compare it to GNU CC and the glibc (standard c library). It's extremely likely that every program links to the c library, which is GPL. *BUT* your program does *NOT* have to be GPL'ed. That's because the GPL is constructed such that you don't have to.
However, for other libraries with specific features, *if* you link to *those*, *then* you have to also GPL your code. It's kinda grey, but not really.
Can someone explain this a little more clearly, or point to something that specifically explains why linking to glibc does not expose you to having to GPL your code, and to other GPL libraries you do?
At the current status quo, it looks like noone can write anything for Linux without GPL'ing it, which is not the case I think. It'd make NVidia, ATI, and Intel illegal, which is not the case I think.
Re: Confused: "Linking with" vs "Making programs with"
Glibc is either under LGPL or GPL+linking exception (I believe the former). Linux is not viral because the system calls are considerd "standard, so it doesn't affect userspace. The Linux driver issue is messier because Torvalds has interpreted "derived work" differently than others. Basically, he is saying that if the code is generic and not targetted specifically toward linux, then it doesn't fall under derived work. Others disagree.
None of this stuff is really cut-n-dry, as far as the GPL is considered. There's lot of interpretations of derived work.
Re: Confused: "Linking with" vs "Making programs with"
> I didn't explain myself right. If they did NOT
> include this exception, I could STILL write Java
> programs without having to release it under a GPL.
> When I write a program, I'm not "linking" to Java,
> I'm writing a program using it. I think the GPL
> covers this.
>
Yes, GPL covers that. It covers it so well that your assertion is wrong.
In fact the GPL is specifically designed to force you to release anything linking to a GPL library as GPL.
That's why I won't touch it, and won't touch any GPL version of Java.
I'm sticking with 1.5.0_08 until such a time as I have retrained for something else.
If you create ANY Java class you have a derived work from Object.
If Object is GPL your class is therefore required to be GPL as well, don't you love object oriented programming?
Re: Confused: "Linking with" vs "Making programs with"
> Yes, GPL covers that. It covers it so well that your
> assertion is wrong.
> In fact the GPL is specifically designed to force you
> to release anything linking to a GPL library as GPL.
>
Java's GNU Classpath Exception: What exactly does it mean?
URL: GNU Classpath::License
At 7:14 AM on Nov 13, 2006, Rick Ross wrote:
Fresh Jobs for Developers Post a job opportunity
What exactly will this exception mean to you? Does it change how you perceive the choice of GPL for Java? Is it what is needed to make open source Java work? Would you have chosen differently, or not included an exception like this at all?
21 replies so far (
Post your own)
Re: Java's GNU Classpath Exception: What exactly does it mean?
IMO this is a wise provision for Sun to have incorporated, allowing "business as usual" to continue for most people shipping Java-based products.Without that provision, a GPL release would have been meaningless since not even Linux distributions would have been able to ship the GPL version of Java. I won't celebrate until the code is actually out, but if they do what they seem to be saying, they are doing the right thing both for themselves and for the Java community.
From the release, it also sounds like they are not going for a dual-license scheme. I think that's also the right thing to do; a dual-license would have deprived Sun of most community input.
This step was long overdue for Sun; much as vocal Java advocates like to think of Java as the invincible juggernaut, Java has been heading for difficult times. This step by Sun removes a major hurdle that has kept Java out of a lot of environments and will reinvigorate Java again and get back some of the momentum it had lost.
If everything is as Sun announced it, this will mean that Java will probably ship standard on all major Linux distributions. In addition, projects like Mono may now be able to offer full Java compatibility and full Java/C# interoperability.
Java still has considerable technical issues that need to be overcome, but with community input, that has a better chance of finally happening.
(And I hope that those people who have announced here that they will stop using Java if any of that happens will do us all a favor and follow through .)
Re: Java's GNU Classpath Exception: What exactly does it mean?
What does it mean? It means that you have a choice. Some people are Open Source everything, they would bring it into the real world if they could. Others are dead set against it and would rather cut off a body part than use Open Source. But luckily, like most things, the majority of the people fall somewhere in-between. Many really don't care for any legalease and tend to skip reading licenses and EULAs unless they are forced by atleast one man named Guido.All I can say is that it may get interesting, but all we can really do is guess. How many will it effect? Hard to say since there are people out there running Java versions pre Swing, and there opinions are still based on the obsolete.
Confused: "Linking with" vs "Making programs with"
Someone clarify this. Even if they release the JDK under the traditional GPL, I could still write programs *using it* / *in it* without having to make my program GPL, just like with the GNU cc compiler, correct?Then what's this "business as usual" becuase this GPL exception then? It would be "business as usual" regardless, not?
Re: Confused: "Linking with" vs "Making programs with"
You are correct. That's why they added this exception. Otherwise, you'd be inheriting ("linking") to GPL'd code from the API (i.e Object) which normally means that you have to release your new code under the GPL.it's not a compromise
Just to be clear: the GPL-with-linking-exception isn't some sort of compromise that Sun came up with to keep commercial customers happy, it's the same license that the GNU standard C library and the GNU Classpath library use.Re: Confused: "Linking with" vs "Making programs with"
I didn't explain myself right. If they did NOT include this exception, I could STILL write Java programs without having to release it under a GPL.When I write a program, I'm not "linking" to Java, I'm writing a program using it. I think the GPL covers this.
Just like the cc compiler. Itself it's GPL'ed, but code I write with it isn't.
My point is, the "exception" they've added is NOT for applications people write, but for people that want to build new layers on top of actual Java.
I have a problem with the "business as usual" part, which would be "business as usual" regardless whether or not they add the "exception" rule.
Re: Confused: "Linking with" vs "Making programs with"
> When I write a program, I'm not "linking" to Java,> I'm writing a program using it. I think the GPL
> covers this.
According to some people, inheritence is considered creating a derivative work, while runtime linking is not. See this discussion: http://forums.java.net/jive/thread.jspa?threadID=17781&tstart=0
And see also this writeup: http://www.gnu.org/licenses/lgpl-java.html
Re: Java's GNU Classpath Exception: What exactly does it mean?
As far as I see the Classpath Exception does not cover the Virtual Machine. It won't be possible to bundle the JVM with your application without making it GPL. I think it would be great to be able to trim down the runtime and bundle it with applications (games) to make them easier to run on systems with no JVM installed.Re: Confused: "Linking with" vs "Making programs with"
> I didn't explain myself right. If they did NOT> include this exception, I could STILL write Java
> programs without having to release it under a GPL.
> When I write a program, I'm not "linking" to Java,
> I'm writing a program using it. I think the GPL
> covers this.
Exactly. You could still write and compile a program. However, you would not be able to run it. For this reason, you must have the exception for the APIs (and maybe for the native libs/JVM itself because of the native methods).
So the exception was probably not needed for the compiler.
But since the other parts require it and since the compiler may be part of the JRE in the future, it was better to have it for the compiler too.
Re: Java's GNU Classpath Exception: What exactly does it mean?
> As far as I see the Classpath Exception does not> cover the Virtual Machine. It won't be possible to
> bundle the JVM with your application without making
> it GPL. I think it would be great to be able to trim
> down the runtime and bundle it with applications
> (games) to make them easier to run on systems with no
> JVM installed.
I believe this is problematic as well. One of the problems we face is people having to install the JRE. Sun should just release it all under GPL + exceptions. It still protects their IP and allows us easier deployment options (which has always been problematic).
One reason I can think of why they don't do it, is to protect their Java ME business. But a JBosser seems to think that the JSE virtual machine is under GPL + exception. http://jboss.org/jbossBlog/blog/slabourey/2006/11/13/FOSS+Java%2C+Finally%21.txt
So either he knows something we don't, or he just didn't parse the announcements correctly.
Re: Confused: "Linking with" vs "Making programs with"
> You could still write and compile a program. However, you would not be able to run it.I *still* think people are not getting it. I think, yes, *without* the exception, it being released under the traditional GPL, you *would* be able to run it, even through you need the VM to run it.
And why not? It'd be rediculous. But this, I think, is *NOT* the reason why this exception clause was added. I think this exception clause was added, so that people can add stuff to the VM itself without having to GPL it.
Compare it to GNU CC and the glibc (standard c library). It's extremely likely that every program links to the c library, which is GPL. *BUT* your program does *NOT* have to be GPL'ed. That's because the GPL is constructed such that you don't have to.
However, for other libraries with specific features, *if* you link to *those*, *then* you have to also GPL your code. It's kinda grey, but not really.
Can someone explain this a little more clearly, or point to something that specifically explains why linking to glibc does not expose you to having to GPL your code, and to other GPL libraries you do?
At the current status quo, it looks like noone can write anything for Linux without GPL'ing it, which is not the case I think. It'd make NVidia, ATI, and Intel illegal, which is not the case I think.
Re: Confused: "Linking with" vs "Making programs with"
Glibc is either under LGPL or GPL+linking exception (I believe the former). Linux is not viral because the system calls are considerd "standard, so it doesn't affect userspace. The Linux driver issue is messier because Torvalds has interpreted "derived work" differently than others. Basically, he is saying that if the code is generic and not targetted specifically toward linux, then it doesn't fall under derived work. Others disagree.None of this stuff is really cut-n-dry, as far as the GPL is considered. There's lot of interpretations of derived work.
Re: Confused: "Linking with" vs "Making programs with"
> I didn't explain myself right. If they did NOT> include this exception, I could STILL write Java
> programs without having to release it under a GPL.
> When I write a program, I'm not "linking" to Java,
> I'm writing a program using it. I think the GPL
> covers this.
>
Yes, GPL covers that. It covers it so well that your assertion is wrong.
In fact the GPL is specifically designed to force you to release anything linking to a GPL library as GPL.
That's why I won't touch it, and won't touch any GPL version of Java.
I'm sticking with 1.5.0_08 until such a time as I have retrained for something else.
If you create ANY Java class you have a derived work from Object.
If Object is GPL your class is therefore required to be GPL as well, don't you love object oriented programming?
Re: Confused: "Linking with" vs "Making programs with"
> Yes, GPL covers that. It covers it so well that your> assertion is wrong.
> In fact the GPL is specifically designed to force you
> to release anything linking to a GPL library as GPL.
>
Wrong. It has to be GPL-compatible.