Hi Rémi,

On 10/14/22 1:20 AM, Remi Forax wrote:
People will again think that i'm the grumpy guy but i prefer to voice my 
concerns.

- nobody cares, i'm back from Devoxx and nobody cares about Sequenced Collections, i've 
tried to ask several friends what they think about it and the answer was "meh".
   The bar to introduce new interfaces in the collection API is really really 
high given how the Java ecosystem works.
   Once a library starts to use those interfaces as method parameter, it 
pressures the other library authors to write methods that provides object typed 
as those interfaces.
   Not enough people care and the cost for the community (not only Oracle) is 
high, it looks like a recipe for failure.

Fortunately, we don't make decisions in OpenJDK via opinion polls. :-)

I'm obviously not in a position to address the concerns of your interlocutors. However, the history in the bug database and the recurring discussions on core-libs-dev (some of which are linked in the JEP) show the need for this.

Introduction of new types always poses a dilemma for library maintainers. They can move forward aggressively and embrace new features, or they can remain on older releases in order to reach a broader audience. That's not a reason to avoid introducing new types.

- LinkedHashMap can be tweaked in two ways, by passing an access order as 3rd 
parameter of the constructor or by overriding removeEldesEntry(), in both cases 
the resulting LinkedHashMap is at odds with the contract of SequencedMap but 
the compiler will happily allow to see those LinkedHashMap as SequencedMap.

SequencedMap specifies that entries have an encounter order but it doesn't make any requirements on how that order is established. LinkedHashMap's access-order mode is unusual in that it specifies that specific methods additionally have the side effect of reordering the relevant entry. The removeEldestEntry() method modifies the behavior of mapping-insertion methods to optionally remove the first ("eldest") entry. Neither of these behaviors conflicts with anything in SequencedMap.

- LinkedHashMap/LinkedHashSet are dinosaurs, there are more efficient 
implementations of the concepts of ordered set / ordered map both in term of 
memory footprint and runtime execution, so adding new interfaces without 
exploring new implementations using Valhalla value class and in relation with 
the Collection Literal JEP seems premature to me.

LinkedHashMap and LinkedHashSet are in fact used fairly frequently. They're not used as much as HashMap, but they're used more than ArrayDeque or TreeMap. Presumably this is because people find LinkedHashMap/Set useful and that the overhead compared to their non-linked counterparts is acceptable for the additional services they provide.

The performance and footprint of LinkedHashMap/Set are not impacted either way by the JEP, nor are any potential future performance improvements (including those that might arise because of Valhalla) precluded by the JEP.

s'marks

Reply via email to