[kepler-dev] Java 1.6 and Java 1.7 and Kepler
David Welker
david.v.welker at gmail.com
Tue Mar 23 11:54:45 PDT 2010
Oh, I just realized that there was one thing I said that was
confusing. Kepler currently works with both 1.5 or 1.6. So, you can
use either as a user. This didn't used to be the case, but it is now.
I just wanted to make sure I didn't confuse anyone on that point in my
last email. =)
On Mar 23, 2010, at 4:22 AM, David Welker wrote:
> Hi All,
>
> I wanted to briefly bring up the topic of which version of Java we
> are using. We have adopted a very conservative policy of releasing
> under Java 1.5. However, at this point, Java 1.5 has reached its End
> of Service Life (EOSL). This means that Sun (now Oracle) is no
> longer supporting Java 1.5, except for business customers who are
> willing to pay hefty fees. I think we might be being too
> conservative for Kepler 2.0, but there are respectable arguments
> both ways.
>
> Looking forward, Java 1.7 is scheduled to be released in October of
> this year. I was hoping that maybe we could be much more aggressive
> in adopting Java 1.7 than we have been with Java 1.6. One of the key
> innovations of Java 1.7 is the addition of a new keyword called
> "module" that introduces a new scope. Basically, in addition to
> private, public, and package scope, there will be a new module
> scope. In this way, module developers can control what methods and
> classes are accessible outside of a module. This will facilitate the
> basic object-oriented goal of information hiding and allow module
> developers to change their internal implementations with confidence
> that no classes outside of the module depends on the parts of the
> module that are within module scope (side effects, of course,
> excepted), but allow all other parts of the module to make use of
> those parts, whether or not those parts are in the same package.
> Right now, there is no good way to do this. Package scope is too
> restrictive, as it is normal and typical to have multiple packages
> in the same module that depend on each other, especially when
> modules are composed of classes that were originally developed in
> different contexts. Right now, the only way to allow such sharing
> across packages in the same module is to use public (or in a
> minority of cases, protected scope). But this opens up those parts
> of the module to being used and depended upon outside of the module
> and greatly increases the uncertainty and cost of change. With the
> module keyword, in contrast, you would have complete confidence in
> what parts of the module may be depended upon outside of the module.
>
> Basically, architecturally, from a Kepler perspective, what this
> will concretely enable is much greater confidence in substituting
> one module for another with fewer unexpected disruptions. Instead of
> defining an interface for just a class, it will be possible to
> define an interface for an entire module with complete confidence
> that other modules depend on that interface and nothing else. Under
> the status quo, the public keyword is used much too often in Kepler.
> We use the public keyword not because we truly intend for the whole
> world to be able to invoke certain functionality, but instead merely
> so other parts of the same module can invoke that functionality. The
> unintended consequence is excessive coupling across modules and much
> less clarity in what would actually need to be done in order to
> substitute the functionality of one module for another.
>
> This is also related to a proposal I plan to introduce after Kepler
> 2.0 is released to bring the concept of what I call "services" to
> Kepler. More on that later...
>
> Java 1.7 will also feature other support for modules, and
> significantly, the JDK itself is being modularized via Project
> Jigsaw. Although Project Jigsaw is primarily aimed at modularizing
> the JDK, it will also be available for any developers who wish to
> use it in their own projects. This is very exciting, as the way the
> classpath is managed will likely be different and designed with
> modularity specifically in mind (although, for backwards
> compatibility, the former linear method of managing the classpath
> that is so characteristic for previous versions of Java will
> continue to be supported) and much more robust for complex systems
> (such as ours) that feature multiple modules. I imagine and predict
> also that after Java 1.7, a strong ecosystem of third-party tools
> will also develop to support modules. In addition to Project Jigsaw,
> significantly the module system supported by OSGi will also benefit
> from these changes. It seems regardless of what direction we take
> with modules in the future, whether we align ourselves with OSGi,
> Jigsaw, or keep the current custom module system, that Java 7 and
> the new ecosystem it brings about will be tremendously helpful.
>
> As we have moved to a module-centric architecture and this is one of
> the major features of Kepler 2.0, we really could use the "module"
> keyword. I am opening up this discussion a little early perhaps, as
> Java 1.7 will not be available until October and further
> availability on Mac has traditionally lagged. Nonetheless, I think
> now is the time to start thinking about this. I think we should
> seriously consider and have an open mind to adopting Java 1.7
> rapidly after it is available for both Windows, Linux, and Mac
> rather than sticking with Java 1.6 for a long time. I first
> mentioned the possibility of moving from Java 1.5 to Java 1.6 on
> January of 2009. It is now March of 2010 and we are still using Java
> 1.5 even though its service life is over and the release of Java 1.7
> is just around the corner. This makes sense to some degree, since
> there were not necessarily any truly compelling reasons to move to
> Java 1.6, besides significant performance improvements including in
> start up time and some API improvements. But for Java 1.7, I think
> the case is much stronger given the strong synergies with our new
> module architecture, so I am hopeful that we can think about moving
> more rapidly in upgrading Java than we have been in the past.
>
> Just some food for thought...
>
> -David
More information about the Kepler-dev
mailing list