Question: Compiling is a process to conversion from one level of abstraction to lower level. Meanwhile transpiling is a process of conversion from one level of abstraction to another at same level like converting java code to Kotlin/python. That is my understanding of the two process. Could someone please explain it in terms of java code and jvm byte code. And is my inference correct?

Answer: 
Higher/Lower levels of abstraction from human language to machine language
==========================================================================

A compiler translates from a higher level language to a lower level language. By higher/lower we mean how abstracted from machine language. So this would include Java language to bytecode. Bytecode is closer to machine language, and further away from human language.

A transpiler converts between languages of comparable levels of abstraction. Converting from [EcmaScript](https://en.wikipedia.org/wiki/ECMAScript) 6 to EcmaScript 5 for compatibility with older web browsers would be one example. Converting from Java language to [Kotlin](https://en.wikipedia.org/wiki/Kotlin_(programming_language)) would be another, or [Swift](https://en.wikipedia.org/wiki/Swift_(programming_language)) to Kotlin. 

See Wikipedia: <https://en.wikipedia.org/wiki/Source-to-source_compiler>

Intermediate representation
---------------------------

In particular, [bytecode compiled from Java](https://en.wikipedia.org/wiki/Java_bytecode) language and [bitcode compiled via LLVM](https://en.wikipedia.org/wiki/LLVM#Intermediate_representation) (from Swift, [Rust](https://en.wikipedia.org/wiki/Rust_(programming_language)), etc) are known as [Intermediate Representation (IR)](https://en.wikipedia.org/wiki/Intermediate_representation). An IR is designed for further processing, optimizing, and translating on its way to becoming [machine language](https://en.wikipedia.org/wiki/Machine_code).
> 
> Would conversion from java code to jvm byte code considered compiling or transpiling?
> 
> 
> 

It is compiling, according to the definitions that you give in your question. The bytecode instruction set is at a lower level of abstraction than Java source code.

---

Having said that, this distinction between compiling and transpiling is a bit nebulous, since there is no clear definition of a "level of abstraction".

For example, one could argue that since C is sometimes called "high level assembly language", C++ is at a higher level of abstraction than C. So does that make C++ -> C conversion compilation? Or are they at the same level of abstraction, which makes C++ -> C conversion transpilation? This is not totally academic because the first implementation of the C++ language *did* translate C++ to C source code ... IIRC.