I know dalvik vm use dalvik bytecode. does ART use dalvik bytecode or something else ?
ART is simply just Dalvik 2.x (and up) if you check the Dalvik version. It has to be able to run any valid *.apk files so obviously it must support all Dalvik VM's instructions. The instruction format is still the same like before, and so are the instructions
Android runtime (ART) is the managed runtime used by applications and some system services on Android. ART and its predecessor Dalvik were originally created specifically for the Android project. ART as the runtime executes the Dalvik Executable format and Dex bytecode specification.
ART and Dalvik are compatible runtimes running Dex bytecode, so apps developed for Dalvik should work when running with ART. However, some techniques that work on Dalvik do not work on ART. For information about the most important issues, see Verifying App Behavior on the Android Runtime (ART).
At install time, ART compiles apps using the on-device dex2oat tool. This utility accepts DEX files as input and generates a compiled app executable for the target device. The utility should be able to compile all valid DEX files without difficulty.
ART uses Dalvik bytecode but unlike Dalvik which would only create an optimized version of its bytecode before all of it is interpreted by the VM, ART can compile some Dalvik bytecode to native code while other code gets interpreted.
Regardless Android APKs still contain DEX files which is Dalvik bytecode.