Have the best of both worlds. Construct elegant class hierarchies for maximum code reuse and extensibility, implement their behavior using higher-order functions. Or anything in-between.Learn More
click the boxes below to see Scala in action!
Scala runs on the JVM, so Java and Scala stacks can be freely mixed for totally seamless integration.
So the type system doesn’t feel so static. Don’t work for the type system. Let the type system work for you!
Use data-parallel operations on collections, use actors for concurrency and distribution, or futures for asynchronous programming.
Combine the flexibility of Java-style interfaces with the power of classes. Think principled multiple-inheritance.
Think “switch” on steroids. Match against class hierarchies, sequences, and more.
Functions are first-class objects. Compose them with guaranteed type safety. Use them anywhere, pass them to anything.
Unlike the reference implementation of Scala which generates bytecode that runs on top of the Java Virtual Machine, Scala Native toolchain produces stand-alone native executables. This opens the door for Scala to be used in environments where full-blown virtual machine is usually an overkill: command-line tools, resource-constrained hardware applications, video games etc.
To achieve this goal we’ve developed a whole-program optimising compiler that generates LLVM intermediate representation. This representation is then used to generate efficient platform-dependent machine code.
The project has reached a point of feature completeness in terms of the coverage of the Scala language. We support the whole language including the more advanced features such as method dispatch via structural types and even macros.
Here are some of the exciting features that got into 0.1:
More information is available on our website.
A list of known issues and upcoming features is available via GitHub issues.