J1708 is the physical layer, J1587 is the message layer (at least as clean as an SAE group could make these). The recommended practice for implementation of J1708 includes collision avoidance, but I do not know of a single implementation that includes this.
J1708 is NOT CAN. CAN is syncronous, J1708 is async. RS485 is pretty close at the physical layer. J1708 is current differential only, CSMA. J1708 includes an algorithm for what to do on collision detection.