When I reading the book of "Scala in depth", it mentions that HotSpot compiler has several important features, one of them is "Dynamic De-Optimization":
It is the ability to determine if an optimization did not, in fact, improve performance and undo that optimization,allowing others to be applied
It seems HotSpot will try all kinds of "optimization"s, and choose the best one of them.
But I'm not quite understand it. Is the "optimization" here all provided by HotSpot? I mean programmers often try to optimize the code with some skills, will HotSpot handle them?
And is there any common "optimization"s will HotSpot try?
A "compiler optimization" is a transformation of the code in an attempt to make it better in some sense - usually, have it take less time to perform. The Wikipedia article on optimizing compilers has a good list of the common optimizations taken; the Hotspot JIT compiler probably does all of them and more.
So the book means that Hotspot will apply some of these techniques to the code, see if it improves the run-time, and if it doesn't it will revert it.
As you have correctly stated, the process of changing code by hand to make it better is also called "optimization" or "manual optimization". The compiler tries to apply as many optimizations as it can, but many possible modifications still need to be applied manually. Once again, Wikipedia has a solid article about what a program optimization is.