On May 27, 2005, at 4:17 PM, Tor-Einar Jarnbjo wrote:

Geir Magnusson Jr. wrote:


1) Are there other models?  How do some of the commercial VMs do it?


Sun are generally using two different approaches:

- package private classes in the common java.* and javax.* packages, which are protected from external usage by the language protection model

- proprietary classes in the com.sun.* and sun.* packages, which are in theory accessible to application programmers, but should only be used through the java.* and javax.* APIs to avoid dependencies to a specific VM implementation

I think both approaches are completely valid and there is no need to enforce a specific way to do this. The first possibility has the disadvantage you mention, that Harmony may decide to implement an internal class java.lang.Foo and Sun decides to add a new class java.lang.Foo to the next Java version. The second possibility has the advantage, that you are in full control of what recides in the org.apache.harmony packages, but the disadvantage that a programmer may decide to actually use these classes and hence make his program dependent on the Harmony VM implementation. Unfortunately, some Apache software actually does rely on com.sun classes, e.g. the SSL connectors in Tomcat.

(Tomcat : I'd bet they fixed that (or will fix...))

Well, can't the VM just prevent non-kernel code from using them? Maybe overhead too high?

geir



Tor




--
Geir Magnusson Jr                                  +1-203-665-6437
[EMAIL PROTECTED]


Reply via email to