But ... Visual Studio Code is an IDE.
Sure, it doesn't ship its own compiler -- but it sure does integrate those you need via extensions.
As others have already said, compilers are just programs, so they can be invoked from the command line.
Furthermore, a modern approach to syntax highlighting, code-assist and refactoring is the so-called Language Server Protocol (LSP). Most major IDEs -- at least IntelliJ IDEA, Eclipse, and Visual Studio Code -- understand the LSP. If a language server is available for the target language, Visual Studio Code can interact with the language server. In case of Java, this is exactly what happens. There is a plugin for Eclipse JDT that offers the power of Eclipse code-assist and syntax highlighting as a language server. Visual Studio Code interfaces with that. The Visual Studio Code Java Extension ships with Eclipse JDT and integrates it -- and the incremental Eclipse compiler -- via the LSP.
For other languages, where a language server is not available, a Visual Studio Code extension might opt to do the parsing itself. Still, if an interpreter or compiler is available, Visual Studio Code will integrate with those for the final step (compilation and/or execution).
Programs are composable. If there already is a program that solves your problem, you can interface with that in various ways* and don't need to solve the same problem again. Thus Visual Studio Code can offer compilation, but not have its own compiler -- because it uses an already-existing one.
* E.g., CLI (invoking a compiler), static or dynamic linking (with DLL files), network (like with the LSP), and web requests (against an API).