Java SE 6 Released
twofish writes "Sun has announced the availability of Java
Standard Edition 6 final release. JSE6 now has dynamic language support.
It comes pre-delivered with Netscape's Rhino, a Javascript engine, and the scripting
project's home page documents many other available scripting languages,
including awk, Jelly, Pnuts, Python, Ruby, and Scheme. In addition a lot of
work has been done on the libraries and run-time compiler. The JIT has been
improved, with better runtime analysis of program characteristics, giving notable
performance improvements. Other improvements include better desktop support, improvements
in Swing look and feel, Windows Vista support, and better diagnostic support
(For example, profilers and debuggers can now attach to a running JVM without
specifically using a debugging-capable configuration. For example, if a problem
is found at run-time for a production server, a debugger can attach to it without
restarting the server).
Sun is also offering sixty days of free developer support for JSE 6 through
their Developer Services program."
Kudos on the new release. I'm running Vista, so the support will be nice.
But as a user, it always amazes me how hard it is to navigate Java's downloads. Assuming non-techies know that "Java Runtime Environment" is what they need to run Java apps, you still have to dig past a JDK and NetBeans link to get to it. I tried walking a relative through downloading the JRE a week ago and it took way longer than it should have.
You can finally have apps that look alot more like win32 or gnome apps without using swt or some other less standard api. Also this release uses some Apple technology with their jdk by offering dynamic class loading. Startups should be alot faster. This and java7 which is already in development should be really exciting. Sun has been putting out alot of java releases recently due to .NET and competition is good.
http://saveie6.com/
The scripting support is specified at JSR 223.
Here are some additional new features:
BTW, why isn't this on the front page? All the fussing about the possible new license was there but not the product publishment itself.
OpenJDK project
Hotspot
Early 2007 we should see the class libs as well
See also here
"Q:
When will you finish open sourcing the JDK? What is the timeline?
A:
We expect to release a fully buildable JDK based almost completely on open-sourced code in the first half of 2007"
You know, every time a java story appears here this line gets trotted out, but I'm really not sure that it's anywhere near as valid as it once might have been. From what I understand Sun have made a lot of efforts in the last few releases (1.3+) to speed up swing. I've written quite a few java applications in the last couple of years, all swing based, and none of them has caused me to have any concerns over the speed of the GUI toolkit.
Sure swing still has some other issues issues (eg proper native look and feel), but I'm sure that a lot of the complaints people have about the toolkit's speed are either very old prejudices or stem from poor coding within the application rather than from swing itself.
Java GUIs have traditionally been 'slow' because they are double-buffered by default, and as a consequence they redraw completely before displaying. Hardware simply wasn't fast enough to do this gracefully -- it's only recently that most gnome/kde applications and some xp ones are expected to be double-buffered.
The double-buffering also lead to lots of inefficient widget redrawing, like for a while each widget was cleared with the bg color before being redrawn even if it then say put an image say over its whole area.
The other major slowdown was because Java's graphics were much more advanced than necessary, for example lines of width != 1 with end and joint caps, antialiasing, clipping regions (instead of boxes), custom renderers, etc. This made it difficult to integrate with the simple hardware acceleration at the time. Native apps had jaggy lines and solid colors as the main features.
More information can be found at Chris Campbell's blog, but yes, graphics are much faster in JDK 6 especially with the OpenGL pipeline turned on, although they were hardly "slow" in JDK 5. Also, the JIT compiler has been largely reworked to improve codegen (especially with -server flag specified).
Another common complaint about Java UIs is that the dynamic loading/binding/compiling/optimizing makes things slow the first time anything is done, a little less slow the second time, then reasonably zippy from then on. So the longer you work in a Java app, the faster it gets. In any case, I code in Java IDEs all day long and they don't seem any slower than native apps.
E pluribus unum
Java 6 has made great strides in many areas, including speed, Swing LAF, etc. It now uses GTK theme engines (works with all themes) to allow swing apps to look more like GTK apps. The imitation is still very imperfect, but it's much improved over the old, crappy, Metal look. I believe generics have been improved some in 6, and I think, if I recall correctly, 6 marks the beginning of non-backwards compatible changes to the JVM itself to pave the way for a lot of exciting new features in Java 7, the most notable will the inclusion (finally) of delegates, making GUI event programming a lot cleaner. It's possible that with Java 7 finally on feature parity with .NET, someone could write a .NET to JVM translator, such as the reverse of ikvm, to allow C# code to be executed on a clean, GPLd Java stack. I still prefer C# to Java at this point, and it would be nice to have the difference between the two stacks (technologically anyway) be insignificant, hopefully helping developers who would choose .NET choose the now safer Java alternative. .NET really did get a jump on Java technologically up until now. It's better in several ways including the generics model, delegates, and being able to support a number of languages including python (jpython for JVM seems to be stalled). Java 7 will start to change all that. Sun's really proved they are listening to the community. Either that or .NET really got them scared.