Characteristics and use.
WHAT IT IS
A statically typed, object-oriented, compiled language running on a virtual machine.
WHAT THE VIRTUAL MACHINE PROVIDES
Portability: compiled code runs anywhere the machine exists
Automatic memory management Mature performance optimisation at runtime
WHAT DISTINGUISHES IT
Verbosity, historically Strong backward compatibility An enormous ecosystem and tooling Predictability, valued in large organisations
WHAT IT IS USED FOR
Enterprise applications Financial systems Android applications, historically Large-scale backend services Data processing platforms
WHY IT PERSISTS
Stability, an enormous body of existing systems, and a very large pool of developers.
WHAT MODERN VERSIONS ADDED
Type inference for local variables Records, for simple data carriers Sealed types Pattern matching Lightweight threads
WHAT THAT LAST ONE CHANGES
Handling very many concurrent operations without the cost of operating system threads.
WHAT IT IS CRITICISED FOR
Ceremony Startup time and memory footprint
WHO IT SUITS
Large teams, long-lived systems, and organisations valuing stability.