State of the OpenJDK Project and Java 7 184
LarsWestergren writes "David Flanagan, the author of Java in a Nutshell, has a nice writeup on the state of the open source development of the next version of Java. The article explains the difference between the JDK7 and the OpenJDK projects and how to join them. Furthermore, it has an overview of the release schedule, proposed language changes and projects of interest. A more technical and in-depth tracking of the language changes and proposed new features can be found at Alex Miller's blog. This is the first in a series, and 'each future installment will provide an update on what's currently happening in the latest builds from the project, along with a deep dive into a new feature or API that's tracking for inclusion in Java 7.'"
Waste of time? (Score:2, Interesting)
Re:Waste of time? (Score:5, Informative)
OpenJDK IS the SunJDK, is just that Sun open sourced the SunJDK under GPL with the name OpenJDK, minus some proprietary components that are being replaced by the community.
Re:Waste of time? (Score:5, Informative)
Re: (Score:3, Informative)
There, I fixed it for you. -W
Re: (Score:2)
Re:Waste of time? (Score:5, Informative)
Re: (Score:2, Interesting)
v1.6 at 64bit on FreeBSDv7.0 (Score:3, Informative)
Bad requirements (Score:3, Insightful)
Re: (Score:2)
Still limited AMD64 support (Score:2)
Re: (Score:2, Informative)
Language-level support for XML? (Score:2)
As such, I move to recommend that Java incorporate support for parsing CSV and DAT files into the language.
Re: (Score:2, Informative)
Awesome, just what I've always wanted. Parsing XML is an extremely important requirement in determining the expressiveness of a language, mind you. Except, they're gonna be screwed when CSV files come back. And don't even get me started on what a pickle they'll be in when those .DAT files return to claim their rightful place!
As such, I move to recommend that Java incorporate support for parsing CSV and DAT files into the language.
First of all, Java already has pretty good "language-level" support for XML for short while now - it's called JAXB. Basically, you can say things like "this class, Foo, represents XML tag <foo>" in your code, and use the JAXB Marshaller and Unmarshaller to save and load XML.
And when the CSV files come back, all you need to do is implement String toCsvRow() or String toCsv() in your class and implement a marshaller/unmarshaller that walks your data structure and crunches it into CSV, or back. It's
Re: (Score:2, Funny)
I second that that motion. Hopefully motion will be parsed.
Refactoring (Score:5, Insightful)
I have thought for years that there needs to be a "JDK 2.0" series started which would be a clean break from the 1.x series. Keep maintaining the 1.x series, but make a fresh start.
Re: (Score:3, Insightful)
Re: (Score:2, Insightful)
Re:Refactoring (Score:4, Insightful)
Array.Length
List.Count
I'm sure there are a million other examples (date handling, for example, is totally fucked up in
I've said for some time now, C# is actually a pretty decent language hobbled by a horrible class library.
Re: (Score:2)
Re: (Score:2)
Meanwhile, in Java, we have public final field length for arrays (nevermind that every style guide explicitly forbids having public non-static fields in a class), length() for class String and size() for collections. Neither of which conform to naming conventions for JavaBean properties, so whenever a bean need to expose
Re: (Score:2)
Re: (Score:2)
Yes, I have. Fairly large ones, too (not huge... the 100K+ range).
Array.Lenth and List.Count are not near the top 10 pains
Yes, because I selected that because it's at the top of the list, and not simply because it's a) patently stupid, and b) easy to illustrate.
Besides, are you trying to defend
Re: (Score:2)
-
-
From my experience, the
I understand your point is that the
If so, would you explain which parts of J2EE do you consider superior and why? Pointing flaws in
Re: (Score:2)
Uhh, I don't recall making that point, nor would I, since I don't have a lot of experience with either stack (most of my
Re: (Score:2)
Alright then:
1. Transactions (of all things) in ADO.NET are an absolute nightmare. I have to *manually* save and restore a DataSet if I do a rollback? Hell, that's ignoring the fact that I have to manually set up a command list for a transaction object in the first place (who came up with that, honestly?).
2. DBNull? WTF is DBNull? Just give me friggin' null, FFS.
3. DateTime isn't represented as UTC, internally, which makes dealing with, among other things, multiple time
Re: (Score:2)
Re: (Score:2)
Re: (Score:3, Informative)
AWT and Swing need to be reconciled
Reconciled in what way? Mixing AWT and Swing widgets has been fixed in current Java 7 builds. Other than that, I don't know what kind of reconciliation is possible.
There needs to be a declarative GUI design grammar. Maybe JavaFX's grammar could be borrowed for that.
JavaFX's grammar was taked from F3 [sun.com], which is a declarative GUI language for Java.
And the long-promised merging of Swing and Collections needs to happen, too. (Like a popup list could be accessed as a java.util.List)
Beanbindings (JSR 295) [java.net] is already in the works, and will allow you to "bind" a java.util.List as the data model for a JList widget. Meaning that you can read JList info from the java.util.List, or write to a java.util.List and have the changes appear in the JL
Re: (Score:2)
Mixing AWT and Swing widgets has been fixed in current Java 7 builds.
That sounds wonderful. I didn't know that this had happened. Good news! So there is no longer a split between the NNNN and JNNNN widget classes?
Meaning that you can read JList info from the java.util.List, or write to a java.util.List and have the changes appear in the JList on the next repaint.
This is another much-anticipated feature that will be greatly appreciated. Good to see that the new development efforts are paying off.
Re: (Score:2)
Re: (Score:2)
I thought that too, but it turns out JavaFX IS actually F3, just rebranded with an official name. I thought Form Follows Function was a pretty nice name, but then I don't work in marketing, do I...
Minor nitpick.
Re: (Score:2)
Re: (Score:2)
Agreed. There are huge problems with the Java classlib as it stands, and these problems account for most of the issues that Java has. The biggest one is the huge list of dependencies typical classes, including some of the most basic classes in the library, have.
For instance, all classes depend on java.lang.Class. java.lang.Class depends on (among others) java.io.InputStream, java.net.URL, sun.reflect
Re: (Score:2)
That's strange. All my Java programs, nearly all of them large Swing programs, start up in less than one seco
Re: (Score:3, Insightful)
One second is way too long for process startup, IMO. A process should be able to be running within a tenth of a second, to be useful in many circumstances.
Timings of a C-based hello-world program:
Python-based equivalent:
Re: (Score:2)
Re: (Score:2)
I would argue that Scala is already the worthy successor language. Others would point at Fortress. Either way, all I care about as far as Java goes is that it evolve to help make those languages better and interoperate more.
Re: (Score:2)
For those, who look forward to OpenJDK release, it would be a great disappointment that could set back the whole Java camp a couple of years because of mindshare/psychological reasons.
If the first release that's finally included with all the Linux distributions would make lots of older software stop working, lots
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
It doesn't appeal to most of the people who want a better Java. It's a language that takes a totally different direction, which is a good thing, but it's not even approximately the same thing as Java with a cleaned-up class library.
Re: (Score:2)
I hate to say it, but Scala would be a very poor language for large projects. The syntax makes the c
Jesus, JDK7?! (Score:3, Interesting)
I feel like it's great (again, even tho I'm not using it this year) that Sun is on top of stuff and 'looking ahead'. But I really wish they would do meaningful SMALL dot increments and quit shoving out a now major release every year or so. I know 1.5 was out a while ago. But why not keep making 1.5 REALLY super stable and optimized and make 1.6 ONLY the one with the new uber-Swing and whatever else.
It's sorta like Microsoft coming out with Vista even tho no one want's to use it cuz all the 'new stuff' (which seems to have been cut at the last minute) isn't stable. Continuously having big releases makes people feel like they have to abandon the older releases so they can focus on re-learning all the new features that haven't made it out yet. I've seen this on teams I've worked with.
I just think more stable, optimized, smaller point releases are the way to go. And Sun being an 'enterprise' company should know this.
Re: (Score:2)
Re: (Score:2)
*raises hand* Fifteen machines servicing about 700,000 users.
Re: (Score:2)
Re: (Score:2)
Java CPU/DSP? (Score:2)
What ever happened to Java CPU/DSPs? By now, if they'd worked out, I'd expect most consumer devices to include them, but I don't know about any. Maybe they required develop
Re: (Score:2)
Re: (Score:2)
So it looks like "Java chips" had a brief resurgence in 2001-3, in the phone market, just like their initial hype for other devices in 1995-6. There's no evidence that I can find that any of that tech is in HW today, except
Re: (Score:2)
What Java really needs ..... (Score:2, Insightful)
Perl got this right. If you want to concatenate strings (using the string concatenation operator
Automatic type coercion is, in general, a good thing -- it removes clutter (in the form of unnecessary function calls). However, it breaks down when using
Re: (Score:2)
If you want to program in perl, nobody's stopping you.
Re: (Score:2)
Eh? Java is statically typed (well, for primitives, anyway), I'm not sure how you envisage automatic coercion here. And not requiring parentheses for method calls would make most Java code unreadable (and probably unparseable).
Java is just not a concise language, you must be thinking of something else.
Re: (Score:2)
Sure, its easy when you talk about changing sin(theta) to sin theta, but when you have ln(sqrt(x))+y and ln(sqrt(x+y)) and ln(sqrt(x)+y) and they all map to ln sqrt x+y, you start needing parens anyway to enforce sequence, whether explicitly to specify function arguments or to denote expression precedence.
When you've got nested function
Re: (Score:2)
I'll admit, that's one case where brackets are actually more of a help than a distraction. But if you were taking baby-steps, it wouldn't be so bad. Also, for the benefit of baby-steppers, how about a forget statement which would free up memory that had
Re: (Score:2)
Well, sure, if one views "function call" as an implicit, invisible operator. Still, with multiple argument functions (particularly with variable length argument lists) parsing becomes tricky, at least for humans. I mean, if you ditch parens in those cases, you can end up with things like
printf format_str, val1, val2, my_func val3, val4, val5, other_func val6, val7
If my_func and other_func take variabl
Re: (Score:2)
Even better, you could have the compiler figure out the last position a particular variable is used in a fu
Re: (Score:2)
Of course, gratuitous misuse of forget (especially inside an eval) could be even more e
Re: (Score:2)
Even most interprete languages (such as Python) are in fact compiled or at the very least parsed and tokenized when loaded, giving the interpreter a chance to evaluate variable
Re: (Score:2)
Clutter is just what you are used to--it's objective. Where Java can it uses a single, consistent methodology at the cost of a few extra characters.
It's clearer for many people to read and not harder for anyone I've ever met except perhaps for people trying to prove that their language of the day is "Better" somehow than some other language.
Re: (Score:2)
Will not ever happen. Fortress on the other hand might be up your alley. I believe you can even overload the concatenation operator in Fortress. It may be aimed at fortran, but I imagine you could write whatever you like in in.
And BTW, perl got nothing whatsoever right about concatenation. It has a different operator for strings because it is incapable (without diving deep into internals) of telling the difference between strings an
Re: (Score:2)
I was on a project in which we converted a VB.NET application to C# using automated tools, we found and fixed several bugs due to the (limite
Consistent, sane branding and versioning needed (Score:5, Insightful)
Now we have OpenJDK, Blackdown, Sun, and so on... Somebody should take Java, call it "Java," and give it logical versioning like Java 1.6.0 and Java 2.0.0. Worked for Linux and Apache. It could work for Java too.
Re: (Score:2)
Well, Sun Java is one of the Giant Bytecode Virtual Machines, and everyone knows that the official versioning scheme of Giant Bytecode Virtual Machines is that of GNU Emacs. So they just decided to drop the first number, like the Emacs folks. Expect the language flame war between Java and C# really flare up into a giant massive global CARNAGE by the time of Java 19 or 20. =) (Though, just for the argument, I can't say C# has any of the redeeming qualities of vi, compared to Java. Both are equally massive. =
Re: (Score:2)
The version of the JVM was 1.2, while the version of the Java language it ran was 2.0. It's a bit like GCC 3.0 (the program) supports C89 (the language).
Re: (Score:3, Insightful)
Re: (Score:3, Informative)
Ask Apple. They're the ones that maintain Java for Mac OS X, which is why it's close to impossible to get a recent version of Java for any Mac OS X not released in the last three years.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re:Swing Sucks (Score:5, Informative)
Actually, Chet Haase recently blogged about the changes being done [java.net] in this area. Unfortunately many of these quickstart "cheats" are for Windows only, when questioned about this at JavaOne they said they didn't have enough engineering hours to do this for other operating systems but would welcome community contributions to this with open arms.
Linux and other users WILL still benefit from the Java Kernel [java.net] work by Ethan Nichola's team [java.net] though, this will be backported to Java 6 as part of the Consumer JRE project.
Re: (Score:2)
Re: (Score:3, Interesting)
Re: (Score:2)
Re: (Score:2)
They had a session about the Consumer JRE at JavaOne, and they are NOT putting it in memory. They are doing a touch of the files at startup (or possibly after login) to put the files in the disk cache. Still a cheat, if everybody did it the situation would be hopeless, b
Re: (Score:2)
last I checked disk cache was still memory.
Re: (Score:2)
that project seems to be aimed at reducing download times to start using say a java applet not reducing the ammount of crap that has to be pulled in to ram from disk to start the JVM and load all the classes that are vital to a gui.
Sun implicitly admits this is a problem, even. (Score:2)
Re: (Score:2)
Now that Java is becoming FOSS I keep hoping we will have the option of compiling our Java programs and linking just what we need. It will mean that they will not have the option of dynamically loading classes but many applications can live with that.
Re: (Score:2)
Re: (Score:2)
Sun not only admitted it is a problem, but is actually fixing it in a near update [dzone.com].
Re:Swing Sucks (Score:5, Informative)
In the latest JDK7 build, they even fixed the "mixing heavyweight and lightweight" z-order problem, so you can mix native AWT widgets into a lightweight Swing UI.
Re: (Score:2, Informative)
In the latest JDK6 and JDK7 builds, Swing has been replaced with something that doesn't suck in terms of performance and looks halfway decent-- it's called "Swing" and has the same API as Swing. Seriously, there have been vast improvements in Swing lately, from using hardware acceleration to themes that very closely match native L&F's. I'm not sure what year you last tried Swing, but give it another look.
Yeah, Swing has improved, but it's still awful. Last used date, umm, right now. I have use several Swing apps every single day and can't stand using them (Netbeans, JAP, others are internal only). Version? 1.6.0 (Ubuntu Feisty package). The two non-Swing programs I use are so much nicer (Eclipse, pdftk (command line)). I actually enjoy using those two, though several things in Eclipse aren't native and get very irritating.
Try using the GTK+ native l&f. Everything looks very bad and wrong. None o
Re: (Score:2)
Re: (Score:3, Funny)
There, fixed that for you.
Re: (Score:2)
A little offtopic, I've always considered the heavyweight/lightweight terminology for AWT/Swing to be backwards. All the people I know initially confuse those. Swing looks more heavy with respect to both its API and user experience, yet it's called "lightweight" when compared to the "heavyweight" AWT (which runs faster and has simpler API).
I u
Re: (Score:2)
I think it is doing quite well these days. Have been working quite hard on the OpenGL and Direct3D pipelines. See this recent blog [java.net] on OpenGL shaders for instance.
Can it also look halfway decent?
Now that they have open sourced it... let's hope.
Re: (Score:2, Informative)
Re: (Score:2)
the main problem is still Linux/Unix and the GTK2 themes. As for other skins than the default one, Swing has been skinnable from day 1, there are several different look and feels out there in the wild, I guess go
Re: (Score:2)
I didn't benchmark anything but I don't think that Swing got much better performance wise. It is the machines that have become fast enough to handle Swing. Swing in the latest JDK (1.6 update 2) still sucks on my AMD XP 2000+. But it is very acceptable on any dual core.
Re: (Score:2)
Re: (Score:2)
So you don't like the packaged class library. Have you considered using an external library (e.g. SWT) to achieve the same thing, rather than complaining about the packaged one?
Re: (Score:2)
Re:Bah. (Score:5, Insightful)
Anything deriving from Sun's JVM is over. Done. Good riddance.
Right. Because all we really need is an implementation of the language that's mostly compatible with a five year old version, and which as of the latest released version doesn't yet support generics, a critical improvement to the language definition that was made nearly 3 years ago now.
Re: (Score:2)
Re: (Score:2)
Yes. And I think it's fair to blame Microsoft for that one. Every *nix I know has Unix sockets, and they're in POSIX (where they are called local sockets), so I imagine they are in lots of non-Unix systems as well. Of course, Microsoft decided to do everything their own way...and while I'm almost certain they have something equivalent, I'm absolutely positive it doesn't wor
Re: (Score:2)