The core runtime is exposed via HTTP and gRPC. Client apps can be use this directly or the specific language SDKs
Dapr has these building blocks or components - https://github.com/dapr/components-contrib
The sidecar architecture is the “key”. It allows for flexibility – any language, any framework.
All your app needs is to be able to talk HTTP, gRPC or use SDK if needed