I am trying to understand what Bitcoin Script is for. Is it a programming language like Java which in principle also can be used for building complex applications like a decentral exchange or was it made for different purposes?
Bitcoin script is not a general purpose programming language like Java. far from it.
It was explicitly made too simple to support general purpose programming. The operations that can be included are deliberately limited in scope. This is so that people cannot introduce logic bombs such as infinite loops that would cripple all nodes on the network attempting to verify a transaction. It's simplicity reduces the number of attack vectors available to hostile parties.
The purpose of Bitcoin script is to support various types of payments in the Bitcoin network. This includes some more complicated transactions such as multi-signature transactions but not as wide a range of capabilities as some people would like.