Simon Phipps on the Process of Opening Java
twofish writes "Simon Phipps, the chief open-source officer
at Sun Microsystems, has reaffirmed Sun's
commitment to Open Source in an interview
with computerworld.
The focus of the interview is Simon's efforts to fully open source Java.
He points out that many problems need to be resolved before
Java can be open sourced — ownership, legal, access, encumbrances and relationships
with Java licensees. It took Sun a full five years to solve these issues with
Solaris. However Simon predicts that it won't take anything near this amount
of time to complete the task with Java.
Of course, one of the other concerns for OS Java is the resulting incompatible
versions and breaking of the Java WORA
model (Gosling himself has always been particularly concerned about incompatible
forks resulting in the introduction of an open source version of Java) and this opens
up additional problems for the open source Java model."
about time you capitalist patsy!
Please sign petition to restore sanity to our banking system!!!
http://financialpetition.org/
I have a Java client on my webserver and half the mails I get are because the Java client doesn't work on people's computer. Usually this is because they have some old version of Microsoft's Java Runtime installed, which only supports Java 1.1 (badly).
What a mess! I can't really see how opening it up will make it any worse than it already is today.
I'll probably be modded down for this...
or at least talk about some facts. All we hear from Sun is blabla about how they will open-source parts of Java in one or two years. What i want to know: -Which parts of Java? -WHICH LICENSE ?
I've reaffirmed my commitment to stop using JAVA when ever I can. Its just no longer worth the trouble it causes. Just about anything I want to do can be done via AJAX & DHTML.
"Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
There are many open source programming languages already (perl, python,
etc.), and they don't seem to have a problem with forking or
compatibility.
If Sun fosters a good development community, there shouldn't be a
problem.
It is fair to say that down the line even when they do opensource it, Sun's version will be the defacto standard. Figure if they and IBM work together on new versions, there's a pretty good guarantee that there won't be any major forks. Sure, there will be forks, but invariably those forks won't be what the average corporate server is running on, etc. Since it's open source, any of the good changes from those forks can be rolled back into the main Sun standard.
I can understand Sun's fear as Java has been a huge part of their business, but I think as long as they keep pushing the standard forward forks will be irrelevant.
This sig has been temporarily disconnected or is no longer in service
The JavaPosse had some notes on this a while back and they seem to keep an eye on the issue. That podcast definitely worth listening to once or twice a week to keep up with the latest news.
The Army reading list
Simon Phipps, the chief open-source officer at Sun Microsystems, has reaffirmed Sun's waning commitment to Open Source in an interview with some dude in bar over the weekend. "Sun tried the free-software thing. The end result was: Dirty hippies can run Solaris on their crappy little x86 boxes for free, and our stock is still circling the drain. Sun learned their lesson, and my job is rapidly being deprecated. I'll be folding sweaters at the Gap before Thanksgiving."
"In a 32-bit world, you're a 2-bit user. You've got your own newsgroup, alt.total.loser." -Weird Al
Write-Once, Debug Everywhere.
If it's for-profit but free, you're not the customer -- you're the product (e.g., the Slashdot Beta's "audience").
It took Sun a full five years to solve these issues with Solaris.
Solved? We should be so lucky. Things are far from solved. If Sun had released Solaris under the GPL, that would be good and done. Instead, it's under their own CDDL, which isn't easily compatible with the far-more-common GPL. This leads to issues for interesting projects like GNU/Solaris (Nexenta), which should have been quickly welcomed by the Open Source community. Instead, Sun's choice of the CDDL makes things complicated where they shouldn't be.
So, in short, I would not say that Sun 'solved' these 'problems' with Solaris, and I sincerely hope they do a better job with Java.
It took Sun 5 years to realize that Linux, esp with IBM support was quickly passing them by; and that even their efforts with Intellectual property partnerships with Microsoft and their backing (again with Microsoft) of SCO's efforts against Linux didn't slow down IBM or Linux.
So to make parallels with Java -- Sun will Open Source Java as soon as they realize C# and Python and Ruby are kicking their ass and Java no longer is relevant.
If the process is followed - hey, that's great, but is needs to be done right if it is to be worth the doing.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
other open languages (like phyton) don't have forks because a fork wouldn't do any good to the forker. major application server suppliers could make a lot of profit with a vendor lock implemented with gradual non conformities with its JVM. and a open source implementation of the JVM wouldn't make any difference for the non religious free/open source zealot.
I find that comment totally offensive. Java is far superior language to C. It's losers like you who think that the world revolves around what you do in your mothers basement.
Naw. Here's the real deal, from someone who knows quite a few languages:
- Java is adequate for just about every programming task
- Java's generics are mostly adequate
- Java's GUI support is good once you let Swing twist your head into a fleshy knot
- Java's library support is above average
- Java's floating-point performance is quite good, especially with HotSpot
- The HotSpot runtime is freakin' amazing at what it does
- The Java language is wordy, which mostly has to do with strict typing (and lately, from adding generics)
- Server-side Java (JSPs, servlets, etc.) is unnecessarily complicated and probably designed by Satan himself
Hope that helps.
I got my Linux laptop at System76.
apterous.org
Please.... someone, tell me why there needs to be an "officer"--much less a "cheif"--within a corporate environment. Aside from convention, what practical use would such a high paying position render? Management? Bah, the realities of management... is a given with shuttles exploding on international television and multi-billion dollar corporations such as Enron, to the everyday corporate life of meaningless and unproductive meetings setting deadlines, project goals and planning... it's all crap, and never useful.
But, even if it's "management"... it's interesting that a corporation would feel the need for such heirarchy to "manage" any aspect of a system which itself, has no such structure.
I really like Java the way it is now - One single download of the OFFICIAL JRE and you can run pretty much anything that any website can throw at you, run a multitude of Java-based programs and you never really have to worry about having the right libraries etc. cause it's all _just there_ (with the exception of some applications which do require free java libraries.. most of the good applications manage to bundle everything in one neat package though).
Open Source Java would be nice because you'd never really have to worry about Sun turning around and charging on a subscription or per-seat basis for the JRE or JDK, although I don't think thats ever going to be in their interests anyway.
Having offshoots of Java which are almost JRE compatible but just have a little extra here and a little extra there is probably just going to confuse everything a lot. With any luck OSS developers will realize this and simply contribute to mainstream Java, but I guess time will tell what actually happens.
Will program for karma.
ever used perl for win32? There were differences between it and unix' perl versions.
And it's naive to think that python or Perl are good examples. There was such huge energy behind Java in the commercial world that Microsoft made a clone. You better believe J++ would come back again if Sun gave a half a chance for it to sneak back in.
You are checking your backups, aren't you?
- Java is adequate for just about every programming task
Except for systems programming. And really big GUI project (photoshop) programming. And small handy script programming. Which is a lot of programming altogether.
- Java's generics are mostly adequate
Java's generics have nothing to do with your argument; you just mention them because they're new. If your aim is new, then I know a few others: overloadable operators, literal regexes, a preprocessor language..
- Java's library support is above average
Except perl's, python's and C's are about a thousand times as good. Which says a lot about your understanding of 'above average'.
- The Java language is wordy, which mostly has to do with strict typing (and lately, from adding generics)
'Wordy' is an understanding, my friend. Java is so friggin' wordy that a whole new generation of editors and screens had to be invented in order to support the kind of line-length that java is happy with.
All the rest of your points I agree with, though. Well put.
Religion is what happens when nature strikes and groupthink goes wrong.
Use a native splash screen loader to shield the user from the initial load time. Either that or start a HelloWorld service at boot time and invoke it when you need a greeting. Problem solved!
Java is a tad bigger in the Enterprise market than perl and python. I'm not saying that perl and python apps don't run on mission critical systems. I'm just saying that multi-million dollar companies (and therefore thousands of employees) have more to lose if Java becomes corrupted vs perl or python. Hence why it is the duty of Sun to make sure they don't make any mistakes.
I have. The only imcompabilities I encountered were the obvious ones (executables being marked by filename ~= ".*\.exe$" instead of an attribute and very slow fork(), e.g.). Other than that, perl does a far better job at it than Java ever has at being crossplatform.
Of course, Java is a big mess of a language. The only good thing to say about Java is that it is an improvement over Fortran. In some ways, anyway :).
Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
> Server-side Java (JSPs, servlets, etc.) is unnecessarily complicated and probably designed by Satan himself
I'm no huge fan of JSPs, and the multitude of Java web frameworks is definitely ugly.
However, I'm curious about your beef with servlets. From my own perspective, they're simple enough to work with easily yet complex/powerful enough to handle a lot of uses. Do you have a specific gripe about them? Or did you just lump them in with the others?
Right. I've described Java as "very exactly ok". It was intended to be more usable than C++, and it has met those low expectations.
Java works. Python is fun.
How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
Somebody please mod this depressing eyesore down so that others do not have to wash their eyes out with soap. And, if you could, kill it and its family before they reproduce again. I can only hope it is some sort of poorly coded spam-bot and not a member of the human race.
Except perl's, python's and C's are about a thousand times as good. Which says a lot about your understanding of 'above average'.
Look, you can get anything in a C library. What you can't get it in is libc - the standard, comes-with-the-compiler-so-everybody's-got-it library. Compare the standard library of Java to the standard library of C or perl, and I think you'll see his point.
As a working language, I'd agree with parent -- Java is adequate. But as a teaching language, it's great. I'm all for keeping Java out of the workplace (Why is it there in the first place?!) but keeping it in colleges, where it can do no harm, and encourage millions of aspiring undergrads to write object-oriented code.
Or, they could just learn in Ruby. Yea. Ignore the above.
Sun should really quit beating this dead horse. Java isn't "Write once, run anywhere", now (especially in embedded systems). Releasing an open-source Java implementation isn't going to change that.
http://outcampaign.org/
Excuse me? Where does the interview mention WORA? It doesn't, because WORA has been dead for years. And it was never more than an advertising slogan.
The word you want is "compatibility", which is an issue with Java, as it is with every other language or platform.
Mono c# is as fast as java and uses less memory btw. Who needs Java ?
Improperly moderated!
My main concern with Java being Open-Sourced is that Sun may lose its incentive to continue funding Java development.
Java is not Python nor Perl. Even then, how long has Perl6 been in development? "It's ready when it's ready" is not good enough to much of the corporate world.
People asking for Java to be open-sourced believe that this will increase the amount of resources put into Java. I'm not so sure.
Based on upvotes, Ageism is the only "-ism" Slashdotters care about and think isn't SJW
Moderation needs a +1 QFT option.
I do a lot of web services programming, and after working with the tools that Microsoft's .NET provides, trying to do similar in Java makes me want to cry.
True, it doesn't match the standard. Hardly a major problem though.
The Javadocs are far better than the docs that come with most languages. They help most developers write code.
Trade your Commodore64 for something a little meatier, it'll take quite a bit less.
There are many open source programming languages already (perl, python, etc.), and they don't seem to have a problem with forking or compatibility.
And how long has Perl6 been in development?
Sure there hasn't been a fork. That's because there aren't enough resources to development even the main branch!
Perl, Python are large scale under-funded open-source projects and thus highlight what I believe to be one of the main reasons not to open-source Java just now.
We haven't answered the question of who will fund future development...
Based on upvotes, Ageism is the only "-ism" Slashdotters care about and think isn't SJW
The grand parent poster said nothing of standard libraries, and I didn't mean that either, so it's a bit disingenious of you to try and frame it that way. I said what I meant, which was: library support. And java is doing poorly in that department. Every time I had a java project which had to, eh, I don't know; produce a PDF, or an RTF, or an image, or print something using LPP, or extract something from a DBM, dial a number to a faxline, you know - do actual work, java gave up and we had to re-spec the project to include shell-tools, or perl-tools, or C-tools as requirements. True, they (the java folks) are catching up, and java really isn't that old, so there's a lot of forgiving to go around. But it's just a bit of a shame that the gang of four spent so much time making everybody re-invent a web-framework, while there could be people actually working on usefull APIs.
Religion is what happens when nature strikes and groupthink goes wrong.
J++ wasn't java. Byte code from J++ included new non-optional instructions, violated the specification, and thus could not run on any VM but Microsoft's. Microsoft's VM did not support 1.1 features for handling native code. How would Sun have benefited from a non-java VM pretending to be java?
(Reality reasserts itself sooner or later.)
I have been tracking the "opensource Java" for quite sometime. One thing I could not understand is why all the hype behind SUN's implementation of Java ??
Java is an open standard, anyone can go and implement his own pet implementation of Java, except that but for few major sharks (SUN, IBM, BEA...) no ne has quite been able to get a production quality implementation out of the door!
So why is everyone after SUN's goat ? SUN's JDK/JRE are just damn ONE of the many implementations of Java that exist. Where is Open source's sugar daddy IBM (which makes quite a ton of money from its Java application servers etc) ? Why doesn't IBM jump into the fray and opensource its implementation to poke a finger at SUN etc ? Why not BEA ? Why only SUN ?
Repeat after me- The JDK/JRE from SUN is only ONE of the MANY implementations of Java available... others ARE infact available from IBM, BEA, GNU, Kaffe et al.
- mritunjai
There are 3 of 6 things you mentioned that I did before:
PDF: see iText
image: well, ever got a look at the standard libraries?
DBM: I guess you mean database (DB), hmm, too many possibilities. How many webserver stuff written in Java that is doing DB access are out there? What freaky stuff do you do?
I have no clue what you are talking about. To me, the gang of four is known for their design patterns book.
No, it's not. It's a horrible language to teach to beginning students, and there are plenty of scripting languages to use for people who can't use low-level languages.
The problem with Java is that there's too much crap you have to teach people before they can learn to use it. A good beginning language allows people to learn simple logical structures before moving on to data types and structures. When it comes to learning a language, the number of lines Hello World takes is a good metric to how much "glue code" you have to teach before a new learner can start to learn even the very basics.
Java's Hello World:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World.");
}
}
Five lines, only one of which has to do with the task at hand (displaying the text "Hello world."). You have to show access modifiers, explain classes, potentially explain packages, and explain methods, all to get to Hello World.
Python, on the other hand, takes just one:
print "Hello World."
Python allows you to slowly introduce concepts and build up to an understanding of data structures and other more complicated things. Python is a good language to start learning. (Some people disagree due to the indentation requirements for Python, but my feeling is forcing people to use proper indentation while learning probably helps in the long run and makes the code easier to read and understand.)
Anyway, Java's a horrible language to teach new CS students, although unfortunately most colleges do anyway. But they shouldn't. Start with a scripting language to teach fundamentals, then move to C to teach more complicated tasks. Move to Java only when getting ready to prepare students for common "real world" tasks.
I like servlets themselves just fine. They're a great idea. It's the servlet containers I think are designed by Satan.
I got my Linux laptop at System76.
I'd love to have a language that's as easy and fun as Python and not much slower than Java. I'd be in heaven.
I got my Linux laptop at System76.
There are many open source programming languages already (perl, python,
etc.), and they don't seem to have a problem with forking or
compatibility.
They certainly do. Perl 6 will have incompatibilities with Perl 5. Future versions of Python and Ruby are certainly likely to not be backward compatible in many ways. There may be good reasons - not guaranteeing compatibility can allow a language to evolve faster, but to claim that there are no problems with compatibility is simply wrong.
The first step to stopping Microsoft's abuses is to understand the abuses. Microsoft has, for example, slowed the acceptance of Java.
Slowing the acceptance of Java has, in my opinion, slowed the development of Java. Together those effects have caused a lot more than $1.8 billion of harm.
Microsoft should not be able to make a profit on the harm it does. The company should be made to pay $1 for every $1 of harm.
The world needs Java, and a more completely developed Java, in my opinion. Anything that slows that hurts even people who have never used a computer, because anything that slows the development of our infrastructure hurts everyone.
Java is great as a teaching language in colleges--if you want to teach a classroom of students how to program in a language that, as you say, should not be used in the working world. So, what's the point, then? They'll just have to learn the language that is acutally used in the real world later.
Jython?
(Disclaimer: I only know what it is, not whether it's any good)
I did a PDF library in Java for my senior project, and I hadn't quite decided whether to try to open source it, try to commercialize it, or look through other libraries to see if any of what I did could improve them.
If you have any feedback on what you'd want a PDF library to do, and how you'd want it to behave, I'd be interested to hear it.
troll, funny, or offtopic?
Badass Resumes
Ok, point taken. It's a good language to teach Object-Oriented princeiples, ideally AFTER a structured programming language has been introduced, Python, standard C, etc.
Mind you, I think my other points still hold.
No IEEE Compliance == Crap language, external libraries aside. Even GCC comes with IEEE floating point libraries by DEFAULT. Standards exist for a reason. Want to do anything serious, use a STANDARD.
Speed, Java has tons of BLOAT. Sure it adds a virtual machine, which prevents the student from seriously screwing anything up, but it also teaches sloppy programming. Let the VM handle your exceptions. But what if the VM crashes, no language is perfect, but for C/C++ I can always debug the machine code, without looking at VM failures.
What language is any serious commercial product written in, C. 9 Times out of 10. I'm tired of fighting with stupid crapplets, and having damn CLASSPATH errors.
So, it's possible. You just have to work at it.
(not representing the company, just a happy customer)
It's really more like WOR[W|L|SU] ... or write once run on Windows, Linux and some Unix. Now if you emulate Linux or Windows on other OS's you can get it to work but do you really want to run a virtual machine on a virtual os on your os?
I do find Java a good fit for a certain class of programming tasks -- namely those which require the software to run on a diversity of platforms. In that regard, I don't think anything can beat Java. If only Windows shipped with a good JRE...
However, I do disagree with some of your points. For example, no matter how good Swing is for programming, it will always suck since it renders widgets itself. Even though it has pluggable look-and-feel, it isn't possible to always make it look like a native application (try to write a look-and-feel for "the currently selected GTK2 theme", for example...). Also, even though Java's library support may be good, it quite much sucks that it is impossible to do OS-specific calls. I realize that that is because of the WORA principle, but it quite much sucks that it is impossible to, for instance, write Unix programs that use setuid in Java. I cannot imagine that it would hurt to add OS-specific calls for programs that just don't care about being OS-independent (especially not if they were added in seperate packages, like os.posix or os.win32, so that they won't be confused with OS-independent classes), right? By the way -- yes, I know about JNI and, no, I don't think it counts.
Basically, I think that the JVM and the class library are pretty nice (not perfect by a long shot, however), but the Java language itself just sucks. I have often considered making an alternative language that compiles to Java class files.
I haven't had to cast an object since I started using java 1.5 18 months ago. Generics, look into them. Also, you can put primitives into collections (via autoboxing).
Java 1.5 made the language a LOT nicer and more expressive.
- Server-side Java (JSPs, servlets, etc.) is unnecessarily complicated and probably designed by Satan himself
Ah, you've become so ingenious these days.
Don't you think you're going way above the top?
Satan
Perl 6 has had five or six funded man-years of development. By my estimation, Microsoft developers spend as much time on-clock reading e-mail in a week.
how to invest, a novice's guide
I've already opened Java
And I can tell you the lid reads "WARNING: HOT CONTENTS"
-- If at first you don't succeed, lie!
That's because Sun's implementation, like every other Java implementation (and there are quite a few) is required to adhere to a written specification.
What you're pointing at as a "written specification" of "Java" is a book on the Java language. Standardizing the Java language isn't the problem, standardizing the libraries is. There are specifications for the Java libraries. Conformance of new implementations is checked via a test suite. As far as I know, no implementation besides Sun's and its licensed derivatives passes that test suite.
So, therefore, in reality, there is only one implementation of Java, plus a bunch of ports. The notion that Java is an "open" "standard" with multiple implementations is a myth created by Sun to make the platform more appealing to ABM people.
Thanks. These days, however, because we're talking about a two or three years ago here (an eternity in java's terms), we have FOP. Which is hell on earth to work with because it assumes that one can somehow like XML.
What I'd really want out of a PDF generating java API, would be something along the lines of what PDF::API2 does for perl. Simple, adequate and easy to be made complete, however, only focussed on PDF, say:
PDF pdf = new PDF();
PDFPage page = pdf.createPage("A4");
page.line(10,10,200,200);
page.stroke();
etc..
Religion is what happens when nature strikes and groupthink goes wrong.
Generics has made Java ugly. Here's an example.
Yeah, I was guessing you'd say that. BTW have you tried Jetty? It's a heck of a lot less complicated than any of the others.
]] PDF: see iText
Thank you. Couldn't find that two years ago, or must have rejected it for some reason.
]] image: well, ever got a look at the standard libraries?
Do they contain methods like 'saveAsPNG' ? Oh. I didn't think so either.
]] DBM: I guess you mean database (DB),
No. I don't. This is not freaky stuff. Look it up. And if you don't understand what a DBM is after reading that, then hand in your geek card at the door.
]] I have no clue what you are talking about. To me, the gang of four is known for their design patterns book.
Exactly. What happened when that came out ? A lot of major APIs (java.nio, the saxparser, for example) were redesigned to fit the fashion (and become completely inaccessible as a result). About the same time that Sun sort-of completed their instrospection API. So that everybody and their dog started to write their own sub-language-inside-a-webserver instead of focussing on usefull stuff. The GOF is, in my eyes, responsible for this whole quagmire; when are people going to learn that we don't want infinetely extensible API-APIs; we want easy to use APIs ! Go on Sun, be sensible ! Stop rewriting your own APIs according to the latest hype every release, set up some sort of CPAN for java, and free its source code. Well, in my dreams, I guess.
Religion is what happens when nature strikes and groupthink goes wrong.
Ah, yes, generics. They turned
HashMap m = new HashMap();
Into
HashMap<String, String> m = new HashMap<String, String>();
More expressive, yes. However generics just about tripled Java's wordiness.
I'm still waiting for a language smart enough to allow you to do something like:
var m = new HashMap();
And infer m's type just might be the type it's being initialized to.
Plus, generics and autoboxing make it far less clear just how inefficient Java is. Class-casts and boxing are slow. Doing something like:
List<int> list = getList();
int i = list.get(0);
Turns out to involve the following code:
List list = getList();
Object o = list.get(0);
if (!(o instanceof Integer)) {
throw new ClassCastException();
}
Integer oI = Integer.class.cast(o);
int i = oI.intValue();
Much of that code gets hidden in Java's syntactic sugar, but it's still all there, and it's still slowing down something that looks like receiving a simple integer. (Type casts in Java really do have a fairly signifigant amount of code running on them. Avoiding type casts is always a good idea.)
And none of that is thread-safe.
Server-side Java (JSPs, servlets, etc.) is unnecessarily complicated and probably designed by Satan himself
:)
Or herself!!
Gosh... sexist pig! Typical slashdotter
Sun has a long track record of making promises they couldn't keep.
That's why Sun had to rename Project DOE (Distributed Objects Everywhere) to Project DOPE (Distributed Objects Practically Everywhere)!
-Don
Take a look and feel free: http://www.PieMenu.com
Try using pipes on WIN32. They don't work very well (either natively, or through perl).
One of the major uses of perl (as a pipeline wrapper to other code) is broken on Win32...
It's not that; the focus of most CS courses are ultimately data structures, which, even though highly wordy, do fit much more elegantly in the object-oriented model. While scripting is probably infinitely more useful for day-to-day tasks, I don't think many people write their own binary trees and linked lists in pure Perl/Python/Ruby/Bash -- wait, Bash doesn't have pointers, so you can't even do that at all! And for the others, the only way to get pointers is to write your own object wrappers! Oh, and C++ is a even more horribly language to teach students. C is nice--if you can get people to understand pointers and have them magically remember to free everything they malloc.
Don't believe in miracles -- rely on them.