Asciidoctor http://asciidoctor.org/ might solve most of your requirements:
- use plain ASCII to write the content
- include code snippets from real source code files
- broken links will create a warning when building the output
- created presentations in reveal.js and deck.js
You'll find at https://github.com/asciidoctor/asciidoctor-gradle-examples some examples how to use Asciidoctor with gradle (but other build tools work as well).
You can browse the sample output here and you'll find a presentation rendered with deck.js and reveal.js (look for the sub-chapters 3.4 and 9.4 labeled "Outputs")
Another source of inspiration might be Dan Allan's set of decks: https://github.com/mojavelinux/decks
You also asked for links from the code back to the presentation. The best Asciidoctor can provide you AFAIK is that the tag you used to mark your code snippet in the code (// tag::XXX[]
) will also be present in your presentation's source (include::Class.java[tags=XXX]
)