bitcoinj is a library for working with the Bitcoin protocol. It can maintain a wallet, send/receive transactions without needing a local copy of Bitcoin Core and has many other advanced features. It`s implemented in Java but can be used from any JVM compatible language: examples in Python and JavaScript are included.