AudioSystem.java For the benefit of service providers and API implementers, a brief overview of the Java Sound source code is provided.
javax.sound.sampled.AudioSystem is the entry point to JavaSound 
  for obtaining resources; i.e., mixers, lines, etc. And each method of AudioSystem 
  involves getting the providers of some serviceMixerProvider[], 
  FormatConversionProvider[], AudioFileReader[], or 
  AudioFileWriter[]. Then the method goes on to  obtain some specific 
  information or perform some task. There is much similarity in how these methods 
  work. Let us take a look at how getMixerInfo() works.
The following is a sequence diagram of getMixerInfo() in AudioSystem.java:

getMixerInfo() in AudioSystem first 
  calls getMixerProviders(), a private static method 
  of AudioSystem. The first thing that getMixerProviders() 
  does is attempt to load sun.misc.Service. If an exception is thrown, 
  it means that a pre-1.3 JRE is in use and there is no service provider lookup 
  mechanism present. If an exception is thrown, then sun.media.sound.DefaultServices 
  is used to obtain service providers (not depicted in above diagram). If the 
  1.3 mechanims is present, then getJDK13Serives() is called (shown 
  above) with "javax.sound.sampled.spi.MixerProvider" as 
  the argument.
getJDK13Services() is another private static 
  method of AudioSystem. It attempts to the load the class for "com.sun.media.sound.JDK13Services", 
  and if it succeeds it set Class jdk13Services equal to it. A bit 
  of trickery is then performed by using Class.getMethod() to get 
  the getProviders() method of jdk13Services, which 
  is returned as object Method m. The method is then invoked, which 
  has the effect of invoking getProviders("javax.sound.sampled.spi.MixerProvider") 
  on JDK13Services. This in turn uses the providers() 
  method of sun.misc.Service to return a vector of mixer providers, 
  MixerProvider[]. The getMixerInfo() method of MixerProvider 
  is then called on each element of the vector to return info (Mixer.info) 
  for all mixers of all mixer providers.
Other services are handled in a similar way. For instance, getTargetEncodings() 
  calls getFormatConversionProviders(), getAudioFileFormat() 
  calls getAudioFileReaders(), etc., which are similarly structured 
  to getMixerProviders().