IcedTea's OpenJDK Passes Java Test Compatibility Kit 271
emyar writes "At JavaOne in May, 2006, Sun Microsystems announced they were going to release Java as free software under the terms of the GPL. The size of the task (6.5 million lines of code) was only eclipsed by the size of the opportunity for Java as a free and open technology. [...] This week the IcedTea Project reached an important milestone — The latest OpenJDK binary included in Fedora 9 (x86 and x86_64) passes the rigorous Java Test Compatibility Kit (TCK). This means that it provides all the required Java APIs and behaves like any other Java SE 6 implementation — in keeping with the portability goal of the Java platform."
Perfomance (Score:2, Insightful)
Mono needs a similar testsuite. (Score:5, Insightful)
bfd (Score:1, Insightful)
If after more than a decade, there is not a single, independent, compliant Java implementation, then there is evidently something wrong with the Java platform.
Apple (Score:5, Insightful)
Re:Ask Slashdot (Score:3, Insightful)
Re:Really ? (Score:4, Insightful)
Why does it seem that every time the hardware guys give us more machine, the software guys use every last bit of it to do exactly what the previous generation of machines did, only the previous generation did faster?
Re:Mono needs a similar testsuite. (Score:2, Insightful)
Re:Really ? (Score:5, Insightful)
At least, if I had to guess, that's what I'd say.
Re:Language Compatibility vs. Class Libraries (Score:5, Insightful)
Re:Language Compatibility vs. Class Libraries (Score:3, Insightful)
Use the class libraries you like, build your own replacements for the ones you don't in Java itself or in C, and then (and here's the tricky part) convince the people you work with to only use your stuff.
Rewriting all of the class libraries to be more syntax consistent and intuitive would be fantastic - but you break so much backwards compatibility you might as well give up and adopt Groovy or Scala.
Re:bfd (Score:5, Insightful)
Re:bfd (Score:5, Insightful)
Have you considered that Java is almost like writing an OS? A runtime byte code, compiled form multiple source languages. Almost every service of an OS provided in a portable way. (eg, sound, video, graphics, multiple portable widget toolkits, network access, file access, system tray access, and the list goes on...)
GNU Classpath is mostly compatible now. Much like Wine.
Re:Language Compatibility vs. Class Libraries (Score:5, Insightful)
Logging is a quasi-identical to Apache's log4j, indeed this caused bad feelings among log4j's authors who felt Sun should just have officialized their API. Of course the reason Sun used it as an (ahem) inspiration is that it's very good, as demonstrated by the absolutely huge number of projects using it. And you know as well as I do that rolling out your own is a common developer trait, *especially* for trivial things like that.
NIO is brilliant. If it's too complex or low-level for you, just use the "old IO", which is *also* good - just not as low-level.
Swing, I can understand your feeling. Although the real problem with Swing is not "bloat" as in unnecessary complex and featurefull, it's that even though it only shipped in a JDK with 1.2 (which had the Collection framework), Sun bowed to short-sighted morons who kicked a fuss when it was suggested that it be put in java.swing (instead of javax.swing), and as a result still uses the old Vector and so on.
Generally speaking, what you call "bloat" is due to:
- the presence of libraries *you* don't use. Guess what, other people do.
- the provision for extensions. For instance, the java.net package is chock full of factories, abstract classes and interfaces that you seem to disdain. And indeed to 98% of developers who just use it for the net, that's all pretty pointless. The upshot is that should you require Unix or X25 sockets, you can still use the same API - I've seen it done. Sure you have to write the C code, but the Java code is all the same except the bit that gets the address. How many open-source language don't even have a common low-level DB API, forcing you to write you own single use abstraction layer when you need to target several DBs? At least with Java you know it's JDBC. Always.
Sun's attitude towards libraries has always been, as far as Java is concerned at least, make the simple easy, make the difficult possible. To me that's good design. Of course it means that easy can be more complex than with more specific APIs. But those tend to not allow the difficult at all
Re:Apple (Score:4, Insightful)
Landon Fuller and a team made Java 6 running under OS X X11 (and command line of course)
http://landonf.bikemonkey.org/static/soylatte/ [bikemonkey.org]
It is said to have great performance too.
The real issue is, how to make that gigantic thing available to PPC G5 and G4/G3 (if they accept perf. penalty) processors under OS X. X11 could be OK too. The Java 6 release(!) from Apple is Intel 64bit _only_. We can't ask Apple as they even abandoned Intel 32bit users (on that release) so there should be some team, likely from IBM needs to step in. They shipped Java 6 for Linux PPC/PPC64 ages ago. They should step in and save/support their CPU customers, especially G5. While people buy G5 workstations/servers, they also bought IBM CPUs.
Re:Ask Slashdot (Score:4, Insightful)
RMS has been talking that way for years. There's essentially no chance of him changing his ways at this point. This is especially true considering the fact that RMS' zealotry has netted him an impressive string of wins including a GPLed version of Java.
The fact of the matter is that the Free Software community has become a rather influential player in the software world. Sun GPLed Java because the executives at Sun finally realized that despite the huge push for Java from the "Enterprise" crowd, the real reason that Java was a competitive platform was because of the large quantity of Free Software that had grown up around Java. Sun needed Free Software hackers, but for the most part Free Software hackers weren't interested in working with Java.
In this particular case, preaching to the choir was precisely what was needed.
Re:Language Compatibility vs. Class Libraries (Score:2, Insightful)
Oh come on. Java is definitely quite verbose, but no one would ever write that code like that.
This code example wouldn't even compile, these classes don't exist in any version of xalan.xslt that I can find, and it's not even using import statements.
import org.apache.xalan.xslt.*;String xmlSystemId = new File(xmlFileName).toURL().toExternalForm( );
String xsltSystemId = new File(xsltFileName).toURL().toExternalForm( );
XSLTProcessor processor = new XSLTProcessorFactory().getProcessor( );
XSLTInputSource xmlInputSource = new XSLTInputSource(xmlSystemId);
XSLTInputSource xsltInputSource = new XSLTInputSource(xsltSystemId);
XSLTResultTarget resultTree = new XSLTResultTarget(System.out);
processor.process(xmlInputSource, xsltInputSource, resultTree);
And claiming that you ought to be able to do the following:
XMLTransformer.transform(xmlfile, xsltFile, outputStream)Okay, so with your version:
And surely a million other things. You must realize that in this day and age people are using XML and XSLT for myriad different uses, and a proper toolkit should be able to handle as many of them as possible.
That's the best and the worst part about almost every Java library that people love to complain about. Swing gets much of this, but when you want a platform-agnostic way to put that essential UI component in the lower right-hand rectangle made by the scrollbars on your JScrollPane, Swing is the only way you're going to get there (or maybe SWT, I've never used it, but I hear similar complaints and praise).
Java is the only platform-independent language that has this kind of power in the core library. Furthermore, this announcement means we've now got an true open-source environment that is already making inroads in the business programming world, in areas that have been previously dominated by C/C++ and (shudder) VB. This is a good thing.
-philRe:Perfomance (Score:3, Insightful)
Re:bfd (Score:5, Insightful)
Which it is.
Could it be improved? Sure it could...name a single software product that couldn't be. But there are many billions of dollars of IT projects that depend on Java, so trying to pass it off as immature, incomplete, incorrect or insufficient is nonsense.
Re:Ask Slashdot (Score:3, Insightful)
There's no contradiction, although I admit that I could have been more clear. Java was Free enough that a substantial amount of Free Software was created for it. However, the majority of Free Software hackers steered clear, and that has hurt Java quite a bit (for essentially no benefit to Sun).
For example, even Sun-supported Gnome contains more Mono-based C# in it than Java. Free Software hackers generally used (and built) competing web technologies instead of using Java-based tools. You can get web hosting that includes toolkits based on PHP, Perl, or Python from any number of sources, and for ridiculously reasonable prices. You can then use these accounts to host sophisticated Free Software applications. Java should have done much better in this space, but Sun's licensing precluded that.
Free Software hackers used (and built) competing tools for creating desktop applications as well. Heck, one of the most popular Java-based desktop applications is Eclipse, and because it is based on SWT it isn't even pure Java.
When you think of the time and effort that went into the various Java replacement toolsets like gcj, Harmony, GNU classpath, etc. it is pretty clear that Sun wasted a great deal of Free Software effort that could have gone towards making Java that much cooler. It will be interesting to see what happens to Java now that a 100% Free Software version is finally available.
Java would almost certainly be a cooler platform today if Debian (to give an example) would have included it in main years ago, or if the source would have been available for a decent, up-to-date port to the BSDs and other niche platforms. Java was an inferior choice for even the less zealous of the Free Software community simply because you couldn't count on it being available. gcc, as an alternative, is available everywhere. Heck, Python is available everywhere. Java's write once run everywhere promise has been broken for years for people that are interested in platforms outside of Sun's narrow scope.
If it weren't for the Free Software that grew up around Java it would not be a viable platform today, plain and simple, but that doesn't mean that Sun has done a particularly good job encouraging Free Software hackers to use Java. A lot of opportunities have almost certainly been missed.
Thanks for encouraging me to spend some time making my point more clear. I appreciate it.
Re:Really ? (Score:3, Insightful)
Re:Really ? (Score:5, Insightful)
Maybe it has more to do with the skill of the developers than anything else.
Re:Really ? (Score:4, Insightful)
I agree with the rest of the statement though. I think that the real problem is that too many departments are teaching using Java and the like, which are "industry standards" because too many students are looking at computer science as a gateway to a career coding JBoss apps for a bank, or working in IT -- basically a 4 year trade school.
Computer Science has about as much to do with IT as mechanical engineering has to do with working in a lube shop. Sure, you could do it -- but you should have been taught to do a whole hell of a lot more. If all you want to do, or can do, is the trade aspect then I'm not sure that an extended education in what is essentially applied mathematics is really the route to go, and those who want that advanced theoretical knowledge shouldn't have to have their class time watered down by the kid who is still in
Then again, what the hell do it know. *goes back to working in Quark*
Re:Just use a glove (Score:1, Insightful)
Re:Really ? (Score:3, Insightful)
Your comment about having more memory is wrong. My programs didn't crash because I didn't have enough memory. They crashed because they were shoddily written and didn't do a lot of stuff that modern languages and programmers do as a matter of course. I mean, C++ programmers make heavy use of RAII and smart pointers these days. They slow down the program but they prevent memory leaks. C# and Java have garbage collection to do the same things. Most modern languages have containers that do bounds-checking automatically. Thats slower than if you just threw the input at it. More validation, etc.
And yeah, my OS is better these days. Thats an improvement in the OS. And some of those improvements take *drumroll* more processing power, because bugs need to be coded around, and more checks and validations need to be performed.
To be sure there are some things that are designed to save developer time given programming time. The
Its just irritating to have people repeatedly say that developers are lazy and writing inefficient code. These days I worry more about the code I'm writing than I was in the past. And most developers I know are the same. You may be able to get your super-awesome "bloat" free programs, but they'll probably take twice as long to develop with less features, be full of bugs, crash all the time, and leak like a sieve. The 90's was not the golden age of computer software that a lot of people make it out to be.
Re:Mono needs a similar testsuite. (Score:3, Insightful)
Java support for generics was made with a backwards compatability wrapper so that all the API's are still compatible with java 1.5. This is a really big deal in my day job, since our company still codes for 1.4. I think you can look it up and find that Sun will move generics into runtime when there aren't the worries about backwards compatability. Since
4. How is IEnumerator different from Java's java.lang.Iterable?
Or do you mean the benefit of hacks like quoted from OnDotNet?
public IEnumerator GetEnumerator()
{
yield return "Who";
yield return " is";
yield return "John Galt?";
}
foreach ( string s in new foo )
{
Console.Write(s);
}
You still need to order which items are iterated over even if C# avoids needing to force you to actually store the iteration number somewhere.
5. I think this is absolutely the worst thing you could possibly do being allowed or not, having invariant variable are just evil. Am I missing the difference between this and java's "Object a = new SomeReallyBadDefinition();"
Does the same apply to var foo = callThisAmbiguousReturnTypeMethod() too? Regardless, this whole idea is ugly to me.
Re:bfd (Score:2, Insightful)
None. There are also no "Perl compatibility kits". Perl is licensed under the AL, so if Larry Wall falls off a cliff, commercial users can continue to use it. Perl doesn't pretend to be something it is not.
So, what does your question have to do with Java?
Re:Bloat? (Score:4, Insightful)
Re:Just use a glove (Score:5, Insightful)
Re:Really ? (Score:3, Insightful)
Memory is about $20-$40/GB. Disk space is down to about $0.30-$0.50/GB. CPU is about $0.01 per bogomip (hey, there isn't really a good measurement out there, so what the hell).
Yeah, let's teach a fantasy.
Re:Language Compatibility vs. Class Libraries (Score:2, Insightful)
In case you didn't notice because you can't read, we (both the OP and me) were talking about the libraries, not the language itself. If I trust what you say, Java's libraries (the default ones) can't do anything "remotely" (this is the word) useful unless you install tons of add-ons, so basically they could as well have been thrown away a long time ago. So Java is bloated but does nothing by default excepted print "Hello World" (yes this is trollish). Java has always been overhyped by companies like Sun (but not only them).
Re:Mono needs a similar testsuite. (Score:1, Insightful)
But:
- The Stream classes of C# are badly designed (simply because a good design could not be easily wrapped around the underlying OS) and are no comparison to the IO classes in Java.
- In
- In
C# programming = Microsoft programming = extending Microsoft software and products.
Java programming is implementing software using standardised API and letting the customer decide on what kind of product they deploy it on.
Re:Just use a glove (Score:3, Insightful)