RFR : 8195857 : Posix platforms : move os::is_headless_jre check coding to os::Posix and remove test for libmawt
Baesken, Matthias
matthias.baesken at sap.com
Thu Jan 25 06:36:21 UTC 2018
>
> Bottom line: os::is_headless_jre() is dead code as far as I can see.
>
Hi David, so do you suggest I prepare a new webrev where os::is_headless_jre() is completely removed ?
What about the code block in hotspot/share/runtime/arguments.cpp , do you think this can be completely removed as well ?
3495 if (os::is_headless_jre()) {
3496 const char* headless = Arguments::get_property("java.awt.headless");
3497 if (headless == NULL) {
3498 const char *headless_env = ::getenv("JAVA_AWT_HEADLESS");
3499 if (headless_env == NULL) {
3500 if (!add_property("java.awt.headless=true")) {
3501 return JNI_ENOMEM;
3502 }
3503 } else {
3504 char buffer[256];
3505 jio_snprintf(buffer, sizeof(buffer), "java.awt.headless=%s", headless_env);
3506 if (!add_property(buffer)) {
3507 return JNI_ENOMEM;
3508 }
3509 }
3510 }
3511 }
Best regards, Matthias
> -----Original Message-----
> From: David Holmes [mailto:david.holmes at oracle.com]
> Sent: Donnerstag, 25. Januar 2018 02:16
> To: Bob Vandette <bob.vandette at oracle.com>
> Cc: Baesken, Matthias <matthias.baesken at sap.com>; hotspot-
> dev at openjdk.java.net
> Subject: Re: RFR : 8195857 : Posix platforms : move os::is_headless_jre check
> coding to os::Posix and remove test for libmawt
>
> On 24/01/2018 11:16 PM, Bob Vandette wrote:
> >> On Jan 23, 2018, at 5:50 PM, David Holmes <david.holmes at oracle.com>
> wrote:
> >>
> >> Hi Bob,
> >>
> >> On 24/01/2018 1:25 AM, Bob Vandette wrote:
> >>> If we are going to preserve this functionality and make alterations, I
> suggest that
> >>> we try to move this into the desktop module and remove it from the
> hotspot sources.
> >>> Other than finding an appropriate path at startup to initialize the
> property, there is
> >>> no reason why this check can’t be written in Java. This functionality has
> nothing to
> >>> do with Hotspot or VMs. (I should have probably done this when I first
> added this check).
> >>
> >> Well we hacked it into the SE Embedded builds so we knew what lib was
> missing.
> >>
> >> I don't think what you suggest really makes sense in a modular world
> because I don't think we expect to have java.desktop but not some of its
> native parts - so there would be no trigger to force into headless mode.
> More likely there is simply no java.desktop module at all.
> > The automatic setting of java.awt.headless has nothing to do with compact
> profiles. This support was available in JDK 7 before profiles even existed.
> This
> > automatic headless detection was added in order to allow Java to be
> ported to platforms that do not have a native windowing toolkit available.
> This was
> > used in embedded to also reduce the size of the binary by removing this
> big library. A configuration that contains java.desktop can absolutely be
> supported
> > and the JCK can be passed without this native library.
> >
> > This Java property is only referenced by the desktop module. This is why I
> suggested that this functionality be moved out of the hotspot VM.
>
> Yes we forced the AWT into headless mode if there was no native graphics
> library support available. For some of those platforms we even did this
> at build time, not via a runtime check. For SE Embedded support we would
> strip the library out at image build time, and so the runtime check
> would force AWT into headless mode. For compact profiles there is no AWT
> at all, and no native library in the built image so the runtime check
> still (vacuously) sets the property for headless mode.
>
> If you have the java.desktop module, then you have everything - there is
> no fragmentation of that module that I am aware of, that would allow you
> strip out the library that triggers os::is_headless_jre() or some other
> check that forces the AWT into headless mode. If you have java.desktop
> and you want headless mode then you have to ask for it explicitly.
>
> Bottom line: os::is_headless_jre() is dead code as far as I can see.
>
> Separately I'll file a bug to remove the compact profile builds.
>
> David
> -----
>
> > Bob.
> >
> >
> >>
> >> That said I was reminded that this is also used by the Compact Profiles
> that were added in Java 8, but for which support was removed as from Java 9
> (and modules). However the build logic is still present, and they still use this
> functionality. I think we can remove compact profiles completely in JDK 11,
> but that's a seperate tasks.
> >>
> >> Meanwhile if we kill off the os::is_headless_jre() logic then the compact
> profiles would not default to headless mode even though they can't run
> headful (due to the missing native library as well as other Java APIs). But the
> only impact I can see there would be for running tests - and we're not testing
> compact profiles. So ... I still think this can be removed, but want to do a
> couple more checks.
> >>
> >> Cheers,
> >> David
> >>
> >>> Bob.
> >>>> On Jan 23, 2018, at 5:57 AM, Baesken, Matthias
> <matthias.baesken at sap.com> wrote:
> >>>>
> >>>> Hi David, thanks for the comments.
> >>>>
> >>>>> I'd need to do some checking but I think this may all be effectively
> >>>>> dead code.
> >>>>
> >>>> Please do the checking, maybe we can completely remove it.
> >>>>
> >>>> Best Regards, Matthias
> >>>>
> >>>>
> >>>>> -----Original Message-----
> >>>>> From: David Holmes [mailto:david.holmes at oracle.com]
> >>>>> Sent: Dienstag, 23. Januar 2018 11:30
> >>>>> To: Baesken, Matthias <matthias.baesken at sap.com>; 'hotspot-
> >>>>> dev at openjdk.java.net' <hotspot-dev at openjdk.java.net>
> >>>>> Subject: Re: RFR : 8195857 : Posix platforms : move
> os::is_headless_jre check
> >>>>> coding to os::Posix and remove test for libmawt
> >>>>>
> >>>>> Hi Matthias,
> >>>>>
> >>>>> Some preliminary comments ...
> >>>>>
> >>>>> On 23/01/2018 6:24 PM, Baesken, Matthias wrote:
> >>>>>> Hello, I noticed that os::is_headless_jre() still checks on the Posix
> >>>>> platforms for libmawt which is not present any longer.
> >>>>>
> >>>>> I wonder why that comment was put in but the code not changed ...
> >>>>>
> >>>>>> Additionally the os::is_headless_jre() function could be put in a
> central
> >>>>> place at os_posix to avoid code duplication.
> >>>>>
> >>>>> I think you could simplify further and just define in os.cpp with three
> >>>>> cases: windows, OS X, posix. I normally wouldn't suggest that but
> given
> >>>>> Windows and OS X are always false, it's quite trivial.
> >>>>>
> >>>>> That said this may simplify even further because I don't know if the
> >>>>> concept of a headless JRE is even meaningful anymore. This what put
> in
> >>>>> place in 2010 to support Java SE Embedded. We had a special build
> >>>>> process that would remove the library from the JRE image, then a
> runtime
> >>>>> check os::is_headless_jre() run during argument processing, that if
> >>>>> true, caused the java.awt.headless property to be set to true (unless
> >>>>> already set). I don't think we can even build a "headless JRE" any
> more.
> >>>>>
> >>>>> I'd need to do some checking but I think this may all be effectively
> >>>>> dead code.
> >>>>>
> >>>>> Thanks,
> >>>>> David
> >>>>> -------
> >>>>>
> >>>>>> Could you please review my change .
> >>>>>>
> >>>>>> Webrev :
> >>>>>>
> >>>>>> http://cr.openjdk.java.net/~mbaesken/webrevs/8195857/
> >>>>>>
> >>>>>> Bug :
> >>>>>>
> >>>>>> https://bugs.openjdk.java.net/browse/JDK-8195857
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> Thanks, Matthias
> >>>>>>
> >
More information about the hotspot-dev
mailing list