JavaScript should be made compatible with libraries other than jQuery by adding a small wrapper around your existing code:
(function ($, Drupal) {
// Original JavaScript code.
})(jQuery, Drupal);
This wrapper is an anonymous closure that provides state throughout the page's lifetime and ensures your code does not unintentionally create/override global variables.
It also explicitly imports the global jQuery variable so that your code can use the local $ variable instead of the jQuery global. This is essential because Drupal loads jQuery with noConflict() compatibility so the jQuery library does not setup the normal $ as a global variable.
The wrapper above also explicitly refers to the Drupal global. It is good JavaScript coding practice to explicitly list the globals your code is relying on in this way. It will also minify better.
A detailed explanation of this JavaScript pattern can be found in the article JavaScript Module Pattern: In-Depth.