Scala Programming

  1. Tooling and Ecosystem
    1. sbt in Depth
      1. Project Structure and Configuration
        1. Managing Dependencies
          1. Adding and Updating Dependencies
            1. Dependency Resolution
              1. Version Conflicts
              2. Scopes
                1. Compile
                  1. Test
                    1. Runtime
                      1. Provided
                      2. Common Tasks and Commands
                        1. Compiling
                          1. Running
                            1. Testing
                              1. Cleaning
                                1. Packaging
                                2. Writing Custom Tasks
                                  1. sbt Plugins
                                    1. Installing Plugins
                                    2. Multi-Project Builds
                                      1. Publishing Artifacts
                                      2. Testing Frameworks
                                        1. ScalaTest
                                          1. Writing Test Suites
                                            1. Test Styles
                                              1. FunSuite
                                                1. FlatSpec
                                                  1. WordSpec
                                                    1. FreeSpec
                                                    2. Assertions and Matchers
                                                      1. Running Tests
                                                        1. Test Fixtures
                                                        2. Specs2
                                                          1. Writing Specifications
                                                            1. Matchers and Assertions
                                                              1. Running Specs2 Tests
                                                              2. Property-Based Testing with ScalaCheck
                                                                1. Generators
                                                                  1. Shrinking
                                                                2. Documentation Tools
                                                                  1. Scaladoc
                                                                    1. Writing Documentation Comments
                                                                      1. Generating Documentation
                                                                      2. API Documentation Best Practices
                                                                      3. Interoperability with Java
                                                                        1. Using Java Libraries in Scala
                                                                          1. Importing Java Classes
                                                                            1. Handling Java Collections
                                                                              1. Java Generics and Wildcards
                                                                              2. Calling Scala Code from Java
                                                                                1. Compiling for Java Interoperability
                                                                                  1. Access Modifiers and Compatibility
                                                                                    1. Scala Features and Java Limitations
                                                                                    2. Scala-Java Collection Conversions
                                                                                      1. JavaConverters
                                                                                        1. Best Practices for Interoperability
                                                                                        2. Handling Java Exceptions
                                                                                          1. Working with Java Annotations