Bundled apps run without a Security Manager, at least they do for me. Users 
have higher expectations for bundled apps.

The customizations are delivered via a JAR file (and perhaps a JNI library). No 
need to build a custom JRE.

These are some of the APIs that I know have been used by L&F customizations:

      -> sun.font.CFontManager                              JDK internal API 
(rt.jar)
      -> sun.font.FontManager                               JDK internal API 
(rt.jar)
      -> sun.font.FontManagerFactory                        JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaHighlighter                      JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaHighlighter$AquaHighlightPainter JDK internal API 
(rt.jar)
      -> sun.awt.AppContext                                 JDK internal API 
(rt.jar)
      -> sun.swing.UIAction                                 JDK internal API 
(rt.jar)
      -> sun.awt.SunToolkit                                 JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaTableHeaderUI                    JDK internal API 
(rt.jar)
      -> apple.laf.JRSUIConstants                           JDK internal API 
(rt.jar)
      -> apple.laf.JRSUIConstants$Orientation               JDK internal API 
(rt.jar)
      -> apple.laf.JRSUIConstants$State                     JDK internal API 
(rt.jar)
      -> apple.laf.JRSUIConstants$Size                      JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaSliderUI                         JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaTreeUI                           JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaButtonUI                         JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaComboBoxUI                       JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaButtonBorder                     JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaButtonBorder$Dynamic             JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaUtilControlSize                  JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaUtilControlSize$SizeDescriptor   JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaUtilControlSize$SizeVariant      JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaBorder                           JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaListUI                           JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaPanelUI                          JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaSplitPaneDividerUI               JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaSplitPaneUI                      JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaTabbedPaneUI                     JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaFocusHandler                     JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaTableUI                          JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaFocusHandler                     JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaButtonToggleUI                   JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaUtilControlSize                  JDK internal API 
(rt.jar)
      -> com.apple.laf.AquaUtilControlSize$PropertySizeListener JDK internal 
API (rt.jar)
      -> com.sun.java.swing.Painter                         JDK internal API 
(rt.jar)

Probably more would be except that they are package private.

A list of all the things that need fixing in the Aqua L&F would be very long, 
and not worth creating if there is no support for such a large effort.

As just one example, consider that Yosemite has been out for quite a while now 
and Java is still using Mavericks rendering on Yosemite.

  Alan


> On May 15, 2015, at 12:49 PM, Phil Race <[email protected]> wrote:
> 
> My understanding is that the Aqua L&F classes are already inaccessible
> if there's a SecurityManager so its not a completely new thing.
> Whilst there may be ways around the JDK9 restrictions, what internal Aqua 
> APIs do you need
> to customise ? And how do you deliver those customisations ?
> 
> We are already looking at finding ways to expose some com.apple APIs in a 
> supported way as Java APIs.
> Perhaps something in Aqua can be fixed, or perhaps exposed - perhaps being a 
> key word.
> 
> Note that bundling a JRE is not the same thing as building your own & 
> bundling.
> I expect most applications will want to work with a pre-built Oracle JDK 
> which will hide internal APIs.
> 
> Perhaps
> 
> 
> 
> On 5/15/2015 12:09 PM, Alan Snyder wrote:
>> If my understanding is correct, the classes for several JDK specific L&Fs 
>> (Aqua, GTK, and Windows) will become inaccessible to applications in JDK9. 
>> Is this true?
>> 
>> I am concerned about the impact of this change for the Aqua look and feel, 
>> which historically has lagged behind the platform UI and continues to do so 
>> (although progress has been made) and for which both small and large 
>> customizations have been written. Blocking access to the Aqua look and feel 
>> classes will make such customizations much more difficult, possibly even 
>> impossible if native code is involved.
>> 
>> While I understand the desire to protect applications from depending upon 
>> JDK specific code, the benefit of this restriction seems small. After all, 
>> how many JDK implementations are there for desktop applications on OS X? The 
>> current OS X application architecture bundles a JRE in each application, so 
>> JDK changes will not break installed applications.
>> 
> 

Reply via email to