NodeJS is an event-driven JavaScript platform for building real-time web applications. It was first released in 2009 and excels at tasks that require interaction with the website like chat applications or location tracking, but is not well-suited for CPU intensive tasks. NodeJS uses an event loop, callbacks, and threads managed by a scheduler to run code asynchronously and handle multiple requests concurrently without blocking. Developers should change their code to an asynchronous programming style when using NodeJS, which is well-suited for IO heavy applications but not CPU heavy applications. Dependencies and applications can be installed via the Node Package Manager (NPM).