IBM z/OS essentially contains three separate environments: (a) environment for running traditional mainframe applications (JCL, VSAM, ISPF, TSO/E, CICS, IMS, DB2, COBOL, PL/I, etc); (b) UNIX-based environment (supports Java, Python, node.js, Go, Kubernetes)–it officially conforms to the UNIX standard, so almost any POSIX app can be ported to it–but sometimes with some difficulty, since it is a bit of a weird UNIX implementation (e.g. by default uses EBCDIC instead of ASCII–although the filesystem has built-in support for translating between ASCII and EBCDIC and Unicode); (c) Linux container environment (zCX), which can run any Linux Docker container, provided it is compiled for the mainframe CPU architecture (z/Architecture aka s390x)
It is quite common for people to take an existing application written using (a) and add new components to it using (b) and (c). Indeed, IBM themselves tends to rely on (b) a lot in adding new OS features.
I think the biggest downside of IBM mainframes, is everything associated with them is super-expensive – the hardware, the software licensing, etc. IBM charges ISVs thousands of dollars a year just to get access to a legal development environment. (Hobbyists often use pirated versions of the software, but not a good idea if you are trying to run a business, and IBM keeps on trying to make that harder–most recently they've announced they are going to stop licensing on-premise emulated development environments and force them all to move to the cloud.)
And Python: https://www.ibm.com/products/open-enterprise-python-zos
And node.js: https://www.ibm.com/products/sdk-nodejs-compiler-zos
And Go: https://www.ibm.com/products/open-enterprise-sdk-go-zos
IBM z/OS essentially contains three separate environments: (a) environment for running traditional mainframe applications (JCL, VSAM, ISPF, TSO/E, CICS, IMS, DB2, COBOL, PL/I, etc); (b) UNIX-based environment (supports Java, Python, node.js, Go, Kubernetes)–it officially conforms to the UNIX standard, so almost any POSIX app can be ported to it–but sometimes with some difficulty, since it is a bit of a weird UNIX implementation (e.g. by default uses EBCDIC instead of ASCII–although the filesystem has built-in support for translating between ASCII and EBCDIC and Unicode); (c) Linux container environment (zCX), which can run any Linux Docker container, provided it is compiled for the mainframe CPU architecture (z/Architecture aka s390x)
It is quite common for people to take an existing application written using (a) and add new components to it using (b) and (c). Indeed, IBM themselves tends to rely on (b) a lot in adding new OS features.
I think the biggest downside of IBM mainframes, is everything associated with them is super-expensive – the hardware, the software licensing, etc. IBM charges ISVs thousands of dollars a year just to get access to a legal development environment. (Hobbyists often use pirated versions of the software, but not a good idea if you are trying to run a business, and IBM keeps on trying to make that harder–most recently they've announced they are going to stop licensing on-premise emulated development environments and force them all to move to the cloud.)