AudioSynthesizer and other classes never made public after JEP260

Alan Snyder javalists at cbfiddle.com
Thu Jul 11 21:17:29 UTC 2024


I believe I submitted that RFE, and yes, it is still of interest.


> On Jul 11, 2024, at 1:01 PM, Philip Race <philip.race at oracle.com> wrote:
> 
> 
> > AudioSynthesizer has a method open(line, config) which is the only way 
> > of configuring its parameters and thus it seems 
> > (https://bugs.openjdk.org/browse/JDK-6941027) that it was intended to 
> > be made public. 
> 
> I can't spot what text in that bug is about this  ....
> 
> > It is not the case in JDK 21. There were other useful 
> > classes, like FFT, that are also no longer accessible.
> 
> "accessible" is not "public".
> Anyone who found a need for a public API in JDK 7, or 8 should have submitted an RFE then,
> not hack around it and then wait until the module system made it harder to hack around to ask for it.
> 
> The thread that could not be located is this one https://mail.openjdk.org/pipermail/sound-dev/2016-November/000493.html
> 
> The RFE that exists for this is https://bugs.openjdk.org/browse/JDK-8170518
> 
> If there is still REAL interest in this we can take another look but it would be JDK 24 at this point.
> 
> -phil.
> 
> 
> On 7/11/24 10:22 AM, SWinxy wrote:
>> I tried to dig into the archives for the two rotted links.
>> 
>> The first is a link to an email <https://mail.openjdk.org/pipermail/audio-engine-dev/2007-October/000024.html> from Florian Bomers on Oct 12, 2007. He thought the class should be public:
>> 
>> >> As a 1st step I suggest to create such interface in com.sun.media.sound 
>> >> package, and them move it to javax.sound.midi.
>> 
>> > I don't see an advantage for going in 2 steps, I'd prefer to put
>> > it in javax.sound.midi directly.
>> 
>> I couldn't find the second link, though. It gives no hint as to where or when it was emailed. It's likely in a jdk9 mailing list, but those are extensive and the mail server doesn't have a search function.
>> 
>> If you really need it, and you are okay with hacking your way into places where you shouldn't be, add --add-opens java.desktop/com.sun.media.sound=ALL-UNNAMED as a VM argument. Then, the following forbidden knowledge may work:
>> 
>> Class<?> synth = Class.forName("com.sun.media.sound.AudioSynthesizer");
>> Class<?> audio = Class.forName("com.sun.media.sound.SoftSynthesizer");
>> 
>> Method open = synth.getMethod("open", SourceDataLine.class, Map.class);
>> Constructor<?> declaredConstructor = audio.getDeclaredConstructor();
>> declaredConstructor.setAccessible(true);
>> Object o = declaredConstructor.newInstance();
>> 
>> open.setAccessible(true);
>> open.invoke(o, null, null);
>> 
>> It's horrible but it seems to work in my tests. I wouldn't advise this; reflection to access protected classes is a Bad Idea.
>> 
>> SWinxy
>> 
>> On Fri, Jul 5, 2024 at 2:50 PM Aleksei Ivanov <alexey.ivanov at oracle.com <mailto:alexey.ivanov at oracle.com>> wrote:
>>> Hi Ithinu,
>>> 
>>> This message belongs in client-libs-dev mailing list.
>>> 
>>> I see Dalibor's message, “It didn't get done in time for JDK 9.” Yet the 
>>> link in his message is broken now.
>>> 
>>> Let's see if anyone has more details.
>>> 
>>> On 2024-07-04 23:53, Ithinu wrote:
>>> > Hi,
>>> >
>>> > AudioSynthesizer has a method open(line, config) which is the only way 
>>> > of configuring its parameters and thus it seems 
>>> > (https://bugs.openjdk.org/browse/JDK-6941027) that it was intended to 
>>> > be made public. It is not the case in JDK 21. There were other useful 
>>> > classes, like FFT, that are also no longer accessible.
>>> >
>>> > According to 
>>> > https://forums.oracle.com/ords/apexds/post/com-sun-media-sound-in-java-9-0673 
>>> > "it didn't get done in time for JDK 9".
>>> >
>>> > Is it plausible that someone will eventually look into that? Thanks.
>>> -- 
>>> Regards,
>>> Alexey
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/client-libs-dev/attachments/20240711/48860074/attachment.htm>


More information about the client-libs-dev mailing list