Be careful, asynchronous doesn't imply concurrent.
Asynchronous programming is a style that it is characterized by passing callbacks to higher order functions. The callback may be called directly or at a later time. It may be called by the same
thread or by a different one.
Concurrent programming usually requires an asynchronous style. But there are examples of asynchronous code that have nothing to do with concurrency: executing a sequential Stream is such an example.
I believe reactive programming also heavily depends on asynchronous programming, but it has a specific purpose: it's a way of handling push-based data streams by reacting to data as it enters the application. This can happen in a completely sequential manner, so concurrent threads may not be necessary. Asynchronous programming is still a useful way of reacting to events in such a way.
So no, reactive programming doesn't bring asynchronous programming to Java. It's asynchronous programming that's already available in Java that allows for reactive programming.