Sun Java Solaris Communities My SDN Account Join SDN
 
Article

Tiger and Beyond, the Future of the Java Platform

 
By Janice J. Heiss, November 2004  
Articles Index

With the launch of Java 2 Platform, Standard Edition 5.0, code- named "Tiger," we explored the innovations in J2SE 5.0 with Graham Hamilton, Sun Fellow in the Java Platform Team at Sun Microsystems. In Part Two of the interview, we asked him to provide a broader perspective on Tiger, Java 2 Platform, Standard Edition 6.0, Java 2 Platform, Standard Edition 7.0, and the long-term future of the Java platform.

question What lessons have you learned in the process of creating Tiger?

answer It took us close to three years to deliver Tiger, so one lesson we learned is that we were a little too ambitious and we should probably have put in a little less and shipped it a little sooner. We'll probably try to put a smaller set of functionality into our J2SE 6.0 and J2SE 7.0 releases so we can get them out sooner. We're likely to move to more frequent, smaller releases, as opposed to three-year big bang releases.

"Ease of development, which is a key theme for Tiger, will actually be the central theme for J2EE 5.0."

- Graham Hamilton,
Sun Fellow in the Java Platform Team, Sun Microsystems

Misconceptions about Tiger

question Are there any misconceptions about Tiger that you care to address?

answer One possible misconception is the idea that because this is such a big release people should delay moving to it. This is false. Even though this is a big release, we have been careful to make sure it's very thoroughly tested. Our internal quality metrics are telling us that Tiger is at a very high quality level. I'd urge developers to plan for a fast migration to Tiger.

Contributing to J2SE

question How can developers contribute to the future of J2SE?

answer "Becoming more open" is one of the explicit themes for J2SE 6.0. By that we mean making it easier for external developers to both know what is going on, and to actually impact the release.

For over five years now we've been using the Java Community Process to evolve the Java platform APIs. That has worked really well and a very broad community has contributed to Java API development. I would definitely encourage people to track the JCP, either by joining expert groups or by participating in public reviews. However, we've realized that many developers also want better insight into "where the rubber meets the road" in the J2SE source code itself. So we're working to make our development processes more transparent. As part of that, we're trying to participate more in online forums, in blogs, and in other discussion groups.

In order to give people something to chew on, we're now providing regular snapshot releases of our internal builds, in both source and binary on java.net

This is a very big change for us and it is rather scary, but we hope it will make it easier for developers to see and influence what we are doing.

question Why is releasing the snapshots scary?

answer Two reasons. First, these are our own internal weekly builds, so they have only had minimal sanity checking and can be quite raw. So people need to understand that they may see significant jaggy edges in the snapshots. If you want stable builds you should wait for the official Betas.

Second, we have an enormous developer base. We'd like to engage with people, but we are also concerned that we are likely to get much more feedback than we will ever be able to accommodate. So we want to make sure that people have realistic expectations. We want feedback and ideas, but we won't be able to reply to every suggestion or accept every proposed fix. Many people want to make changes, but one of our toughest challenges is managing change, so that we don't break things other customers depend on.

We're going to have to figure out how to manage this process as we go along. It will be an adventure!

Tiger and Near-Term Java Technology

question Can you situate J2SE 5.0 in Sun's overall near-term Java technology strategy?

answer J2SE 5.0 is a major update. It will also be the base for Java 2 Platform, Enterprise Edition 5.0 (J2EE 5.0). Ease of development, which is a key theme for Tiger, will actually be the central theme for J2EE 5.0, which builds on top of Tiger. And then, of course, application server vendors like BEA, IBM, and Sun will be shipping app server products that incorporate J2EE 5.0 and J2SE 5.0. So, we'll certainly see a lot of J2SE 5.0 propagating up to the enterprise edition.

"Becoming more open is one of the explicit themes for J2SE 6.0."

- Graham Hamilton,
Sun Fellow in the Java Platform Team, Sun Microsystems

And over time, I expect we'll see some of those incorporated into Java 2 Platform, Micro Edition (J2ME). I personally think a lot of the language features are ripe for being picked up by J2ME almost immediately -- but I hasten to add that this is up to the J2ME community.

Evolving the Java Language

question Do you want to say anything more about where the Java language is headed?

answer We're starting to think about potential language features for Dolphin. I've been reflecting on the principles that James Gosling so brilliantly infused into the original Java language and which we've tried to preserve as it evolves. The core principle involves making programs easy to understand. The Java language is powerful but simple, easy to read, with a consistent, clear meaning. It's more important that Java programs be easy to read than to write. That may sound trivial, but it isn't.

Looking back at C++, there were a whole set of factors at work that make reading source code difficult: First, the C++ language itself became very complex. Many new ideas were added incrementally and, unfortunately, the seams show. Second, the C++ language consciously chose to emphasize "power" and "flexibility". That sounds nice initially, but, unfortunately, it also means that there is very little you can rely on and almost any simple program statement can have weird side effects. In C++ the statement "a = b;" must be approached with caution. Finally, the macro pre-processor reinforced the "power" aspect, but again at risks to comprehension.

The Java language took a very different approach through attempting to be an unobtrusive language. As a developer, you should be able to focus on what your application code is doing and on how it interacts with libraries. Code should do what it seems to do -- developers shouldn't need to worry about clever language side effects or about what "=" means this week.

"It's more important that Java programs be easy to read than to write."

- Graham Hamilton,
Sun Fellow in the Java Platform Team, Sun Microsystems

This focus on clarity and readability has affected the Java language in deep ways. It has led to a focus on keeping the language simple and clear. It has led to fairly conservative uses of syntax and minimized the places where user defined code can modify base semantics. For example, there's a strong focus on having "one language" which means the same thing everywhere. A Java developer should be able to start reading a chunk of new Java source code and rely on a consistent set of language semantics. So part of Sun's investment in the Java language includes a strong focus on both a very precise specification (currently driven by Sun's esteemed computational theologist Gilad Bracha) and also an extensive language compatibility test suite.

Principles are good, but so are pragmatics. If we stuck too rigorously to our principles, we'd probably never dare make any changes to the language. It is natural for things to evolve, and we want to be able to make developers more productive, within the spirit of the language. But we are also very conscious that adding individually useful features may slowly undermine the deep values of the language.

Looking forward to Dolphin, I suspect we'll stay conservative on changes, as each change adds complexity. We're unlikely to add a macro preprocessor or any general form of operator overloading, or full-blown AOP, or any other mechanism for redefining and obscuring core semantics. But we will look for new language ideas that help developers with common problems. For example, one area I'm personally interested in is some kind of "friends" import mechanism to make large multi-package projects easier to manage.

Multiple Languages for the Java Platform

question You have spoken favorably about multiple languages for the Java platform. Tell us about this.

answer The Java language is only one language for the Java platform. It has one particular set of values, which we think are good for large, maintainable programs. But different developers want different things at different times. It's okay to have multiple languages, each of which is well designed, for a specific kind of programming. So I'd like to see more use of alternate languages on top of the Java platform, with different goals and styles. For example, I was really pleased to see the "Groovy" language brought into the JCP. It is designed as a new Java platform language, but with its own goals and design center that are very different from the classic Java language.

question Do you care to speculate as to how long the Java language will be around?

answer I suspect that the Java language will be good for another 20 to 30 years if we manage its evolution carefully. But I also expect that new research ideas will emerge and slowly gain acceptance and, at some point, we'll want a new synthesis that will create a great new simple language. And of course we'll want to make sure that great new language runs on the Java Platform!

Risks to the future of Java Technology

question One final question. What is the biggest risk that you see facing the Java language today?

answer I think one of the key core values of the Java platform is compatibility. We aren't always perfect, but we do go to great lengths to try to make programs portable across different J2SE systems or across different J2EE app servers. I wouldn't go so far as to say compatibility is "at risk" but I think this is something we will always have to watch very closely.

"I suspect that the Java language will be good for another 20 to 30 years if we are careful in managing its evolution."

- Graham Hamilton,
Sun Fellow in the Java Platform Team, Sun Microsystems

There is always a temptation for each individual vendor to cut corners on compatibility. If someone can get their product out a little faster by skipping a few features or failing a few tests, I can understand that temptation. But we are all in this together. If each vendor cherry-picks the set of features that they want to implement, then we will end up with a fragmented platform where there is no real application portability. Fortunately, all of the major vendors understand the benefits of strong compatibility, but at the same time, no one wants to be unfairly disadvantaged.

One of the strengths of the Java Community Process is that it has very strong requirements around compatibility which are binding on all participants. This helps reassure the vendors that they are all held to the same standards. So it may take work to achieve compatibility, but all participants face the same work. And as developers, this means we benefit from a wide range of competing, but compatible, Java implementations!

See Also

Rate and Review
Tell us what you think of the content of this page.
Excellent   Good   Fair   Poor  
Comments:
Your email address (no reply is possible without an address):
Sun Privacy Policy

Note: We are not able to respond to all submitted comments.
Graham Hamilton
 

Oracle is reviewing the Sun product roadmap and will provide guidance to customers in accordance with Oracle's standard product communication policies. Any resulting features and timing of release of such features as determined by Oracle's review of roadmaps, are at the sole discretion of Oracle. All product roadmap information, whether communicated by Sun Microsystems or by Oracle, does not represent a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. It is intended for information purposes only, and may not be incorporated into any contract.