RFR: 8356049: Need a simple way to play back a sound clip [v5]
Sergey Bylokhov
serb at openjdk.org
Wed May 14 04:14:56 UTC 2025
On Tue, 13 May 2025 19:32:00 GMT, Sergey Bylokhov <serb at openjdk.org> wrote:
>> Phil Race has updated the pull request incrementally with one additional commit since the last revision:
>>
>> 8356049
>
> src/java.desktop/share/classes/javax/sound/SoundClip.java line 35:
>
>> 33: /**
>> 34: * The {@code SoundClip} class is a simple abstraction for playing a sound clip.
>> 35: * It will play any format that is recognized by the {@code javax.sound} API,
>
> I think we should mention in the doc that this is applicable for small audio files since we will load all data into the memory.
Example of memory requirement: https://github.com/openjdk/jdk/blob/2c4e8d211a030c85488e656a9a851d10dd0f9c11/src/java.desktop/share/classes/javax/sound/sampled/Clip.java#L34
> src/java.desktop/share/classes/javax/sound/SoundClip.java line 45:
>
>> 43: * @since 25
>> 44: */
>> 45: public final class SoundClip {
>
> What about considering a different name, such as AudioClip with a static method like AudioClip.create(...)? or maybe Audio....Player?
Could having both javax.sound.SoundClip and javax.sound.sampled.Clip cause confusion?
> src/java.desktop/share/classes/javax/sound/SoundClip.java line 63:
>
>> 61: public static SoundClip createSoundClip(File file) throws IOException {
>> 62: if (file == null) {
>> 63: throw new IllegalArgumentException("file must not be null");
>
> Most of the APIs in javax.sound.* throw NullPointerException for null arguments and IllegalArgumentException for other invalid parameters.
it is even noticed for both subpackages, it is better to use NPE here as well:
* Please note: In the {@code javax.sound.sampled.spi} APIs, a {@code null}
* reference parameter to methods is incorrect unless explicitly documented on
* the method as having a meaningful interpretation. Usage to the contrary is
* incorrect coding and may result in a run time exception either immediately or
* at some later time. {@code NullPointerException} is an example of typical and
* acceptable run time exception for such cases.
> test/jdk/javax/sound/SoundClip/SoundClipTest.java line 41:
>
>> 39: public static void main(String[] args) throws Exception {
>> 40:
>> 41: if (!isSoundcardInstalled()) {
>
> Why we cannot check that the playing sound is a no-op in this case, as specified?
Why do not check this case as well?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24991#discussion_r2087976970
PR Review Comment: https://git.openjdk.org/jdk/pull/24991#discussion_r2087986810
PR Review Comment: https://git.openjdk.org/jdk/pull/24991#discussion_r2087974279
PR Review Comment: https://git.openjdk.org/jdk/pull/24991#discussion_r2087985318
More information about the client-libs-dev
mailing list