Building content-driven websites, portals, intranets, and single page applications in a CMS shouldn't be difficult. We’ve prioritized the developer experience by leveraging the J2EE enterprise stack, which makes even complex integrations surprisingly painless.Java Architecture
As fellow developers, code transparency is as important to us as it is to you. To this point, the dotCMS codebase is available on GitHub. Additionally, dotCMS development and support teams use GitHub to communicate features and issues, as well as manage the software development process in general, giving clear visibility into what’s happening with the core codebase.
All dotCMS content is manageable and accessible via REST APIs. This means dotCMS can act as both a headless CMS and a decoupled CMS , providing Content as a Service so single-sourced content can be created, searched, and reused by multiple external systems.
dotCMS is composed of multiple micoservices that can be scaled independently. For example, dotCMS provides a multi-tier cache implementation that can hook into Redis to offload site caching to a series of Redis servers while the search and indexing layer provided by Elasticsearch can be scaled independently and even made accessible for remote systems to query. And most importantly, the rendering layer can be driven by a large-scale cluster of dotCMS servers or by servers that are running in a shared nothing configuration.
dotCMS’s robust plugin architecture makes extending and customizing the platform easy. Dynamic OSGi plugins can be deployed at runtime and published across environments. Static plugins are used to manage configuration and to literally override and extend any file, class, feature or function of the dotCMS. The dotCMS plugin architecture also helps you to separate customizations from the core codebase and maintain a clear path when upgrading dotCMS between versions.
Because dotCMS abstracts away all data access, the resulting code is extremely portable across databases. dotCMS currently supports databases including Oracle, PostgreSQL, SQL Server, MySQL and H2 (recommended only for testing).