Gosling on Opening Java
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?"
So, who should have custody of the child, the father...or the boss?
Boss gets it on the weekends, father gets it during the week.
...we need java to be open source, so we can fix all the flaws he left in it. i mean, no goto?!
Question from the artice:
2. "Some have asked what IBM would get if Java were open-sourced: doesn't IBM already have the source?"
Gosling's answer: Again yes, they do have the source. It's also true that anyone can get the source. The major restriction is that if folks want to redistrubute their changes, they have to pass the test suite. Which means that about the only thing that they could get from liberalization is to be able to skip testing.
So it doesn't seem to be such a big issue after all. The source is already available, and all that is required to change it and redistribute it is to pass a standard suite of tests. Now, call me crazy, but I think that's not A Bad Thing. This restriction is what helps Java to be uniform and platform-independent.
The benefits of making Java fully open source therefore seem overrated. Isn't the availablity of the source most important? Or perhaps I'm misunderstanding something ...
I hear there's rumors on the Slashdots
Copyright law defines something as a work for hire if it was produced by an individual at the request of a company. All rights to a work for hire are retained by the company who paid for the work to be created.
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.
For more information, click here.
The reason for this is that IBM is the big money maker in the Java/J2EE Space. It is fighting strong competition from BEA and now JBoss, maybe soon to be Jonas and Geronimo.
I think it's a credit to Sun that while they help build and manage the standards, they are not the big players providing the solutions that are being sold in that space.
They would like to sell more of their Java middleware components and are working towards it but they are not dependant on that to make (lose) money. The fact that they haven't made changes to the specification to favor their products over any one else's products speaks volumes. They have said they were going to open the standards so that others may benefit and everyone will compete on other merits while offering a lot of common features. The market proves they've kept their word.
I don't see IBM doing the same. Look at Mark Fluery's comments on how IBM forked a version of Axis back into a proprietary product. They did the same with other products they worked on. JetSpeed I believe is one.
They get the open source developers to help build the application, help people get buy in, then they take the codebase in house and work on it from there making improvements and selling it for mucho dinero.
That's not a bad thing, and is allowed under the license. The OS community has a good base to start building based on the initial investment by IBM. It's just something that isn't acknowledged by others.
With the JCP, the new arrangements with the Apache Group, Java keeps getting more and more open (with a little 'o').
Sun IS doing good things with Java and for the java developer community. They are making it easier for people to contribute back to java. Sun has a lot of things it needs to do in other areas but they really are doing a good job with Java. If it ain't broke why fix it?
One of the reasons's Java/J2EE is doing so well is because of the competition in the marketplace. Different vendors bring different things to market. Some wind up becoming standards, some get coppied from others. It works out to the advantage of the user community who relies on these different technologies to do their jobs.
Whether IBM will do this, we really don't know. They have more of an incentive to do this as JBoss is cutting into some of their installations. We do know that Sun isn't.
Open Source Java DAO Generator
It's been standard operating procedure for years for most companies to have any employee who might even touch programming sign such a waiver/contract that gives all rights to the employer. Even some of the higher education systems (what we traditionally viewed as a bastion of free innovation because of projects like those put out by Berkely, etc) are taking on this practice. It's gotten to be a very dog-eat-dog world out there and everyone's looking to keep their cards close to the vest in hopes of gaining an edge over their competitors.
On the other hand it's generally a smart move on the employer's part to weigh the advice of the creator when they're about to do something with the project that the creator feels strongly about. They may not agree and ultimately they may not act on the employee's advice, but it's good form and wise business practice to at least listen to his or her opinion. Every once in a while these folks have an idea what they're talking about and it makes the employee feel as if his input is valued, meaning the company is less likely to lose a valuable resource.
I don't like programming in Java, but having a free Java (as in speech) would be really great !
There is a very good free java implementaiton. GCJ (GNU Compiler for Java). 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. It includes GTK and GNOME bindings for Java.
There are also bindings for Qt and KDE.
You can also use GTK via the SWT toolkit .
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.
My heart is pure, but make no mistake, it's pure evil
When you download java, you get the source files along with it. GPL is not the only license that makes something open source.
Actually, the source code you get is for the standard library, not the JVM source code. That one is a separate download.
My heart is pure, but make no mistake, it's pure evil
I think -- and I'm really serious -- Sun should probably be looking at open sourcing Java as a response to Mono, if for no other reason.
.Net environment themselves, from scratch. To me, that sounds like a fairly heavy indictment, and one that Sun should be looking into, if they're smart.
Miguel and Ximian took a look at Java and decided it didn't suit their needs, as far as developing rich desktop applications for Linux (e.g. Evolution). So rather than use Java, they decided it was actually better to implement the
Now you've got Mono humming right along, with the developers busy implementing two distinct stacks: One that's a Microsoft compatibility layer, for using all the stuff you might have written with Visual Studio, and another that's more Linux-oriented, with GNOME and GTK bindings, Linux printing architecture support, and so on -- the kind of things that people hope would come of an open-sourced Java.
If Sun doesn't care about this, they've got more problems than I realized.
Breakfast served all day!
Anyone is free to make their own implementation of a Java framework. There's an (outdated) list here of alternative implementations (and possibly more here as well).
For example, SableVM and Joeq are the first two that I found on Sourceforge (and there are several more).
So it's not really a question of "open sourcing Java" - because there are already open source implementations of Java (and a few commercial ones as well). It would be a question of Sun opening up their reference implementation of Java.
So the main advantage of opening up their reference implementation would be to focus the software community's efforts more on one Java implementation and to stop the fragmentation. People would still be free to develop their own Java compatible VM's & compilers, but it would provide less of an incentive for them to do that if there's one central, relatively community-oriented distribution.
Yes, there be ports to other platforms (I'd love to see Java on *BSD). Yes, there'd be performance patches and probably security patches. But with this comes the down side to all open source projects: Fragmentation.
One of Javas goals is to provide compile-once-run-anywhere. At the moment, it does a decent job of doing this. Other platforms do this better (Read: Inferno) but Java is trying. With fragmentation, compile-once-run-anywhere disappears and would be impossible to bring back.
Let Sun has Solaris and Java. Stop trying to force them to open source their software. They already are the second largest contributor of open source software, the first being Berkeley.
Stallman is less open minded than Java is open source.
./configure.sh to see why Sun is so anal about this!
... so there's a bit of sour grapes.
OK, here's the deal with the Java source code: You can get it. You can modify it. You can redistribute it.
BUT...
It has to pass Sun's compatibility tests.
OK, so yes, I can see how an ideologue like RMS would lump Sun's Java implementation into the same category as closed-source software. But really, you do have quite a lot of freedom with Java. It's just that Sun (and the Java community, myself included) are very concerned about compability: cross-platform dependability is one of Java's must important features, and forking is a big concern. (Sun was already bitten once by Microsoft making an incompatible "Java" and basically wreaking havoc on the client Java market for years.) Just look at all the crap that goes into the typical C/C++ project's
Gosling explains this well in the article (for those who actually read it...).
On top of all that, Java != Sun's implementation of Java. Everything in Java is determined by a spec -- the language, the runtime, the libraries, everything. If Sun's requirement that you pass their test suite is too restrictive, just write your own damn implementation of the specs. Yes, I know that's a lot of work. Boo hoo hoo.
JessLeah is totally wrong on this point: the reason that the GNU Java projects are not "Java proper" is not that Sun didn't make them, but that they are immature and don't completely implement that Java spec. I think this may help explain why RMS is so sore (and unfair) on this point: GNU Java kind of sucks, even after many years of work, his "free software" baby isn't winning in the Java world, and nobody really cares except GNU
Opening up a development process tends to bring more brains to the table, and that exposure, history has taught us, tends up to open the technology up in ways we had not imagined before.
Consider the flurry of activity surrounding Python after its internal reorganization around the time of version 1.6 -- modified license, python-dev list, PEP system, more lenience towards experimental and backwards-compatibility-breaking changes -- after which we have fantastic new language features, as well as strange, clever new techology such as Stackless Python, Pyrex, Psyco, PyPy etc.
Or, indeed, consider Linux. We all know what happened with that little insignificant grass-roots project. If Linux had been closed off around version 2.0, would we have an O(1) scheduler today, or configurable swappiness, or hyperthreading, or pre-emptible kernel?
Regardless of the quality of Sun's engineers, Sun's hold on the Java is constraining its growth. For example, what if I have a wild new idea to make the JVM's synchronization locks lightweight enough to have barely any overhead at all, thus improving the speed of applications? There's a large barrier to incorporating that kind of change. With something like Python you can grab the CVS sources and start hacking. Just the existence of such a point of entry is enough to inspire curious visitors.
Does Java need hacking? Sure. While my main point is that Sun possesses a finite number of brains -- what wonderful ideas and inventions aren't happening at Sun? -- there are specific areas that will benefit from the attention of outside hackers. JVM performance is still lacking, for one. The bytecode instruction set is still to specific to Java-the-language, as opposed to Java-the-platform, leaving potential other language platforms with much to desire.
Furthermore, anyone who has struggled with a bug in Sun's Java implementation knows that the process to get a bug fixed is often arduous, sometimes impossible. Last I checked there were serious problems reported years ago and not yet fixed.
Any language needs to develop in order to catch up with the times. With Java, it has been going rather slowly. With 1.5, Java is, in many ways, playing catch-up with C#. Other technologies spend much time in the pipeline before they are ratified and implemented. JDO took years. Support for "web services" is lacking, at best.
To me it seems that Sun does not have the resources to drive Java development. Witness Eclipse, which did what Sun never could do: produce a solid IDE. Eclipse is a multiplatform program, yet appears native on every platform it runs on; and supports a myriad of modern technologies, such as background compilation, refactoring, version control, remote file systems, and profiling; and is also a teeming breeding ground for experimental technology, such as AOP, fine-grained source-level version control, graphical editng, and quality control. Eclipse built this house in record time. To see what Sun did, over a considerably longer period of time, check out the ancient, outdated monster that that is Netbeans/Forte.
In summary, Java is better off in the hands of the community, not Sun alone.
I think that there is exactly one person who thinks that Java should be GPLd.
As opposed to what other license? (L)GPL would probably be the best choice for Sun because it ensures that people cannot create proprietary forks (Microsoft anyone?). BSD or similar less freedom-guaranteeing licenses would be an awful choice. And if you think Java shouldn't be open source at all, well.. you're just an idiot. It's going to happen whether Sun wants it to or not. This whole discussion is only a question of whether they remain a player.
Two main things.
The generic any-language answer is that a pre-processor is awkward, fragile, and ugly. It's parsed, processed, and structured differently from the code -- it has different tokens and different semantics; it can lead to code that's a nightmare to maintain, and makes automatic source processing much harder.
And the Java-specific answer is that, as the parent says about 'goto', there are better ways to do any of the things you might want a preprocessor for:
- Probably the main one is to work around different compilers, OSs, architectures, and platforms. But Java is one platform; if you need to do something that different on each underlying OS or system, then you're doing something wrong!
-
Another reason is isolation of constants and other singletons (is that what you mean by your comment about 'login'?); but Java has better ways to handle these (class constants, static finals, singletons, &c).
-
A third reason is optimisation; but that's the sort of thing that a dynamic compiler can probably decide better than you can, especially given that your code may run on different JVMs with different characteristics. (Some 'optimisations' made to early Java code actually slow it down when run on more recent dynamic JVMs.)
-
A fourth is conditional compilation for assertions or other development aids; again, you can do this more neatly with a simple 'if' statement -- and a decent compiler or runtime will optimise it away when not used.
In short, there are no reasons for a preprocessor in Java, and lots of reasons against.Ceterum censeo subscriptionem esse delendam.
- In the case of works made for hire, the employer and not the employee is considered to be the author. Section 101 of the copyright law defines a "work made for hire" as:
To read more go to http://www.copyright.gov/* (1) a work prepared by an employee within the scope of his or her employment;
Of course, you're assuming it will be forked.
KDE and GNOME have never been forked.
GCC was forked once, as egcs, and the forks were later rejoined. It was also forked because GCC had serious problems--the fork was rejoined when GCC was effectively halted and egcs became the new official GCC.
XFree86 was forked once, and only very recently. There was also a damn good reason to start a fork--this wasn't something done on a whim.
I support the Center for Consumer Freedom
"Open Source fragmentation is a myth largely propagated a certain proprietary vendor's FUD campaign"
:) I could see the same easily happening with Java; different bright folks wanting to take it in different directions, without a leader, ending up disagreeing too strongly and going it alone. Would Sun and IBM and Microsoft and Oracle and so on always agree on the next level to take Java to? I doubt that.
Yes. A certain vendor that did itself try to fork Java, and now has a competing product that is extremely similar to Java. If Java went GPL, this company would not hesitate to muck around with it, just because they can, and the company has a history of doing anything it can to 'win'.
"Successful open source projects simply do not fork."
Sometimes yes, sometimes no. I would not expect Java to fork in the classic sense of the word (except the version that one particular company would make), but look at Linux as a whole; multiple distros out there, by companies, by individuals, by governments. That kind of "forking" alone would make it more difficult for WORA with Java; it'd increase the amount of tweaking neccessary. Every distro tweaking the JVM a little differently than the others... code then running great on some and flakey on others... well, maybe that's already true. Why make it worse, though?
And what about BSD? I'd call that successful, and it has most definitely forked. Even its forks have forked. BSD is totally forked!
For the record, I'm undecided about the opening-up of Java. I like the language, and it's the one I use the most. I'm not as against the idea as I may sound in this post.