On Jan 20, 2016, at 12:15 PM, Jason Greene <jason.greene@redhat.com> wrote:

Hi Paul,

Yes we have had a few discussions about some of our usage with the Oracle JVM QE group. We have also provided some feedback at the JCP level. 

To give one example, if you want to provide an alternative serialization mechanism (e.g. to customize the protocol for various reasons such as performance, modularity, security), yet still support the Java serialization API/contract, you have to be able to instantiate empty uninitialized classes. This is something that Java serialization implementation itself can’t work without, but the Java language is not intended to allow you to do. So the common solution that many projects do to achieve this, is to either use reflection internals or the Unsafe.  Other examples typically involve the latter (e.g. custom concurrency prims)

So naturally there has been resistance to expose hooks such as this, which is why I predict they won’t be there in Java 9. I would love to be proven wrong though :)

Just to clarify, I predict they won’t be part of a public javax.xxx API. They will still be internally available since Java itself needs them (as do we). There has been mention of a flag to prevent removing visibility of these classes, as otherwise compatibility will most certainly be broken. That is what I expect we will require. 

That said, we should remove every occurrence that we don’t truly need. 


On Jan 20, 2016, at 11:41 AM, Paul Benedict <pbenedict@apache.org> wrote:

Jason, have you considered reaching out to Oracle (or have already) to discuss what internal APIs have no public replacement? They are very receptive to that kind of feedback.

Cheers,
Paul

On Wed, Jan 20, 2016 at 11:37 AM, Jason Greene <jason.greene@redhat.com> wrote:

> On Jan 20, 2016, at 11:12 AM, Tomasz Adamski <tadamski@redhat.com> wrote:
>
>> In a standalone scenario we are not using modules so the JVM would use
>> rt.jar unless the user updates the bootclasspath. I do not see how it would
>> be possible to avoid the jdeps warnings.
>
> True, my mistake. I thought about a scenario in which despite using xbootclasspath we have some orb dependencies to JDK, but this obviously can only be tested on runtime which is not what jdeps does.

While some thought on the feasibility of package renaming is progressing, I have an semi-important tangent (more to say in a subsequent follow-up). At one point we had a long term goal, or perhaps “hope” is more precise, that we would one day just be able to use the ORB in the JVM without shipping a downstream variant. That may very well become a possibility with virtually all known non-Oracle JVMs utilizing the openjdk lib, and thus the same impl.

I take this means that Naryana requires references to non org.omg APIs, and thus if we remove them, this goal would no longer be possible.

Note that with Java 9 internal APIs, I can pretty much guarantee that we are going to have to use whatever  override flag they add for running WildFly/EAP, and certainly many other mainstream Java systems. We rely on those APIs, and there hasn’t been adequate replacement. I wonder if the linkage you refer to here doesn’t also fit this category.

--
Jason T. Greene
WildFly Lead / JBoss EAP Platform Architect
JBoss, a division of Red Hat


_______________________________________________
wildfly-dev mailing list
wildfly-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/wildfly-dev


--
Jason T. Greene
WildFly Lead / JBoss EAP Platform Architect
JBoss, a division of Red Hat


--
Jason T. Greene
WildFly Lead / JBoss EAP Platform Architect
JBoss, a division of Red Hat