Tuesday, May 8, 2007

Java SE: Present and Future

Presented by Danny Coward Java SE Platform Lead, Sun Microsystems (blogs.sun.com/dannycoward)
Everything you need to know about what's going on in the Java Platform, Standard Edition (Java SE platform). The goal is to give you an overview of everything that has happened over the last year or so. Danny will talk about things available today and things that will be covered in SE 7 tomorrow.
Agenda, it's all about Java SE 6 Platform, the making of Java SE:
java speaks in many tongues,
breaking up is hard to do,
Java SE on the desktop,
some important upgrades.
Changing the face of java, we are shown a slide with a timeline showing the various Java releases: JDK 1.0 pre 1997, J2SE 1.2 pre '99, J2SE 1.3 around 2000, j2SE 1.4 2002, pre 2005 J2SE 5.0 and just before 07 Java SE 6. Java SE 7 may be available just before 2009.
Year in review, JDK 6 adoption, slightly more than half of all downloads of the JDK are SE 6.0. Java 6 JRE was release in April of 07. There are about 50,000,000 JDK downloads a month.
The top 10 new features in SE 6, Web Services, Scripting, database, more desktop API's (SwingWorker, JTable sorting and filtering, GroupLayout - the layout manager used by Matisse), monitoring and management, compiler access, pluggable annotations (define your own annotations), desktop deployment, security, the -ilities: quality, compatibility, stability.
Tools as part of SE 6: jconsole, jps, jmap, jhat (analyze memory usage), jstack (see BOF-2816), you don't need to start the JVM with any special options to use the probs, they attach dynamically. Java SE 6 is much faster than previous version of Java.
Today, Java SE is open sourced, available under GPL. There are a couple of components only available in binary format due to licensing issues. As part of Java SE 6, the team started to do weekly builds and that made the move to open source much easier.
Open JDK Community now available at openjdk.java.net. An interim governance board has also been establish (see Opening Session for member names).
How Java SE Platform gets developed, the JCP defines API Specifications and OpenJDK implements those specifications.
Why go multi-lingual? the Java programming language is the best general purpose language! Many other languages, many other virtues, rapid prototyping and experimentation, particular styles of programming, mixing different types of developers, or just for fun. In Java SE 6, Sun implemented JSR 223, Scripting for the Java Platform, developer APIs to mix script fragments in, Framework APIs for adding script engines, Collecting conforming scripting engines, see scripting.java.net, Sun added a JavaScript technology engine, JavaScript technology works out of the box. Here is a code sample:
ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine js = m.getEngineByExtension("js");
js.eval("print('Hello, world!')");
Check out the SE 6 demo directory for examples of how to use the new features.
Multiple Languages in JDK Version 7, turbo-charging scripting engines, new bytecode for dynamic method dispatch, 'supporting dynamically typed languages on the Java Platform (JSR 292)', investigate hot swapping. Bundling more dynamic languages and engines, see JSR 274, JRuby, Jython, BeanShell, JavaFX technology script. Java SE is an enabling technology for these new technologies.
Changes in Java SE 7 (for a complete list, check out Alex Miller's blog), reading is more important than writing, one language same meaning; everywhere, simplicity matters. Seeking a small number of changes for SE 7. Candidate changes for Java SE 7, superpackages, extensions to the annotation syntax, language support for java technology properties, control abstraction constructs (closures, CICE, first-class methods), operator overloading,rough edges (shorter variable declaration, strings in switch statements, etc.
Modularity in Java SE 6, deployment time, interfaces and implementation classes, information hiding, assertions. Deployment time, JAR and Resources framework. One of the problems is with the packaging structure, let's say you have a picture and text package and they in turn use a data package, but the client can access all three package. What if you only want to selectively provide access to packages or classes in the package you can use superpackages. For an indepth discussion see the Strawman Proposal for JSR 294.
Packaging, as in ZIP files and later JAR files, was originally put together for applets, but the specification hasn't changed in quite a while. This will allow you to define versions, dependencies, etc. and will likely be called JAM files, JAR file will still be supported however. For modularity see superpackages JSR 294, modularity 277 & 291 OSGi interoperability. They both have open mailing lists.
Swing development, swing is a powerful toolkit, some developers are put off, time to make it easier. See JSR 295, 303, and 296 for how Swing will be simplified. However, SE 7 is a ways off, so what can we do for SE 6? How does Java stack-up against Flash? Not well, start-up time is poor, installing the JRE is slow, install tool is not consumer friendly and the size of the JRE keeps getting bigger and bigger (~ 12 MB). To fix these problems, Sun is going to release a consumer JRE release in late 2007 early 2008. Qickstarter, pre-load the cache, before launch, not the same as having a running VM, cooperates with the OS, a radically improved experience.
Java Technology-based kernel, modularizing the JRE software, just enough to run "hello world", install the rest in the background: referencing a class, Class.getResource or equivalent, System.loadLibrary() or equivalent, custom JRE version for applications that need it. As a prototype, the team put together some trial, to run "hello world" the JRE was 2 MB, the SwingSet2 demo was just under 4 MB, whereas the whole JRE is 12MB.
In SE 7, JMX is going to be revamped, see JSR-255 Java Management Extensions v 2.0 (JMX) and JSR-262 for web services connector for JMX agents. JSR-203, in early draft, a new file system API, java.nio.filesystem.Filesystem, listen for file-system changes. Other Kiri's to note 360 Javadoc Tag Technology Update and JSR 310 Date and Time API.
Java SE 6 is available today, Open JDK is being built
See planetjdk.org for Java SE blogs.

Hello .. firstly I would like to send greetings to all readers. After this, I recognize the content so interesting about this article. For me personally I liked all the information. I would like to know of cases like this more often. In my personal experience I might mention a book called Generic Viagra in this book that I mentioned have very interesting topics, and also you have much to do with the main theme of this article.

Good afternoon readers, it is a pleasure for me to express my opinion in this short article, I think is great, I think you have much talent as writers, should devote himself to publishing on the net post, I am very grateful to you for sharing this information with us.

About Me

My name is Chris Maki and I'm a Principal Software Engineer at Overstock.com. Before joining Overstock.com, I was an independent consultant specializing in server-side Java development. I have been designing and building server-side systems for 16 years in C++, Objective-C, and Java.
Most of my career has been spent working as an enterprise architect specializing in large-scale Java system design and development. In addition to being a Java evangelist, I'm an avid proponent of Agile Software Development.
In addition to my day job, I run the Utah Java User Group and I'm a member of the WebBeans (JSR-299) and JPA 2.0 (JSR-317) expert groups.
In addition to computers I love to spend time hanging out with my wonderful wife of 13 years, Nicole, and my three boys, Trenton, Avery, and Brayden.