There are some big performance differences between the J2SE 5.0 concurrent package, and previous "outside" the JRE packages - the 1.5 JVM has some internal primitives that make the concurrent classes far more efficient.
-----Original Message----- From: Ray Tsang [mailto:[EMAIL PROTECTED] Sent: Thursday, June 22, 2006 3:22 PM To: java-dev@lucene.apache.org; [EMAIL PROTECTED] Subject: Re: Results (Re: Survey: Lucene and Java 1.4 vs. 1.5) I agree. This is probably the first compelling argument that I would agree with the use of 1.5. IIRC, Concurrent utils were available for the 1.4 available at http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.h tml before it was accepted into official 1.5 util package. It is continuing to be maintained right now. I'm also supportive about Doug's base-guideline. As far as annotation goes, I really don't see future uses of annotations within the internal code. It would most likley end up being used by the user to annotate a POJO for as a document maybe. ray, On 6/22/06, Simon Willnauer <[EMAIL PROTECTED]> wrote: > On 6/22/06, DM Smith <[EMAIL PROTECTED]> wrote: > > On 6/22/06, Doug Cutting <[EMAIL PROTECTED]> wrote: > > > > > > DM Smith wrote: > > > > In an earlier note, I suggested that there needs to be guidance > > > > as to > > > how > > > > Java 5 constructs are to be incorporated into code, contrib and core. > > > > (Sooner or later, core will change to Java 5) Or does anything go? > > > > > > Once we decide to accept Java 5 code, we should of course > > > encourage new contributions to use new language features that > > > improve, e.g., type safety and maintainability. If someone wishes > > > to upgrade existing code to use new language features, these > > > should be done as separate contributions. > > > > > > We could state a goal of upgrading all existing code, but that > > > won't make it happen. I prefer not to make ambitious roadmaps, > > > but rather have things driven bottom-up, by contributors. So my > > > bottom-up-oriented guideline is that I would not reject > > > contributions that do nothing but upgrade existing code to use new language features. > > > > > > Is that the sort of guidance you seek, or do you think we need > > > something more specific, with feature-by-feature guidelines? > > > Developing such guidelines collaboratively might be difficult. > > > > > > > > > One of the things I liked about 2.0 was that 1.9 was a bridge to it > > from > > 1.4.3 via deprecations. It made migration fairly straightforward. I > > would like to see this going forward to 2.1. If so there needs to be > > some thought to how and whether the existing API will be deprecated > > in the same fashion as Java 5 is introduced. > > > > I was thinking more specific, feature-by-feature guidelines. There > > are not that many new language features, so I don't think that it > > would be too onerous. Since the committers are ultimately the ones > > to accept or reject a contribution, I think they can decide. > > > > For example (my opinions), > > > > Static Import > > Try to avoid. It tends to make code unreadable. > > > > Autoboxing/unboxing > > Use sparingly, and if used, provide test cases showing that > > performance sensitive code is not adversely affected. > > > > Varargs > > Don't use as a substitute for overloading. > > Use as a replacement for an array of objects. e.g. void f(T[] t) > > becomes void f(T... t). > > > > Enhanced for loops: > > Use whenever possible. > > When modifying existing code to add one, change all others, if possible. > > > > Typesafe Enum > > Use wherever possible, internally. > > Associate behavior with the enumerations when it makes sense. > > Replace existing enumerations that are exposed via the API > > cautiously, maintaining compatibility with 2.0 as was done with 1.9's deprecations. > > > > Generics > > Use for all internal collections. > > When changing a class, ensure that the class is self consistent > > in its usage of generics. > > Enhance existing collections that are exposed via the API > > cautiously, maintaining compatibility with 2.0 as was done with 1.9's deprecations. > > > > Annotations: > > ?? > > > > > I assume that many people realize these features as new features in > Java 5.0. In my opinion there is at least one more feature beside the > improvements inside the jvm and the garbage collection and build in > Java Management Extension. The feature I'm pointing to is rather a new > library than a feature to be honest but it can improve concurrent > application in performance and stability matters. The Concurrent Utils > in the j2se 5.0 give you much more control of concurrent parts of you > application and I guess the lucene project can gain from these new > classes to synchronize writing and parallel reading where possible. > I think a great deal of adding build in JMX support to the lucene core > or rather as a contrib project to enable modification of configurable > components like merge factors or similar things. Extensions like this > should have some guidelines as Doug said feature-by-feature. > > Java 1.5 is much more than type save collection and a lot of > "features" are quiet hidden sometimes. > Replacing the use of StringBuffer with StringBuilder can also gain > some performance improvements, this just as an example that improved > parts of the api are quiet important and should be considered first > before moving in all the "nice" compile time code sharing generics. > > regards Simon > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]