mikeroyal / Scala-Guide

Scala Guide

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


Scala Guide

A guide covering Scala language including the applications and tools that will make you a better and more efficient Scala developer.

Note: You can easily convert this markdown file to a PDF in VSCode using this handy extension Markdown PDF.


Scala Learning Resources

Scala is a combination of object-oriented and functional programming in one concise, high-level language. Scala's static types help avoid bugs in complex applications, and its JVM and JavaScript runtimes let you build high-performance systems with easy access to huge ecosystems of libraries.

Scala Style Guide

Databricks Scala Style Guide

Data Science using Scala and Spark on Azure

Creating a Scala Maven application for Apache Spark in HDInsight using IntelliJ

Intro to Spark DataFrames using Scala with Azure Databricks

Using Scala to Program AWS Glue ETL Scripts

Using Flink Scala shell with Amazon EMR clusters

AWS EMR and Spark 2 using Scala from Udemy

Using the Google Cloud Storage connector with Apache Spark

Write and run Spark Scala jobs on Cloud Dataproc for Google Cloud

Scala Courses and Certifications from edX

Scala Courses from Coursera

Top Scala Courses from Udemy

Scala Tools, Libraries, and Frameworks

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.

Code Server is a tool that allows you to run VS Code on any machine anywhere and access it in the browser.

Scala Syntax (official) is an extension for Visual Studio Code that provides syntax highlighting for Scala 2 and Scala 3 source files.

ScalaScript is an extension for Visual Studio Code that provides provides for Scala Inc ScalaScript digital signage scripting language.

Tabnine is the AI code completion tool trusted by millions of developers to code faster with fewer errors. Whether you are a new dev or a seasoned pro, working solo or part of a team, Tabnine will help push your productivity to new heights while cutting your QA time.

IntelliJ IDEA Scala plugin is a tool that extends IntelliJ IDEA’s toolset with support for Scala, SBT, Scala.js, Hocon, and Play Framework. Support for Scala, SBT and Hocon is available for free in IntelliJ IDEA Community Edition, while support for Play Framework and Scala.js is available only in IntelliJ IDEA Ultimate.

ScalaTest™ is the most flexible and most popular testing tool in the Scala ecosystem. With ScalaTest, you can test Scala, Scala.js (JavaScript), Scala Native, Dotty (Scala 3), and Java code. It offers deep integration with tools such as JUnit, TestNG, Ant, Maven, sbt, ScalaCheck, JMock, EasyMock, Mockito, ScalaMock, Selenium, Eclipse, NetBeans, and IntelliJ, ScalaTest makes it easy to take your testing to a higher, more productive level in new or existing Scala, Scala.js, or Java projects.

Dotty is a platform to try out new language concepts and compiler technologies for Scala where the focus is mainly on simplification. It removes extraneous syntax (e.g. no XML literals), and try to boil down Scala's types into a smaller set of more fundamental constructors.

Metals is a Scala language server with rich IDE features.

WartRemover is a flexible Scala code linting tool.

Mill is a shiny new Java/Scala build tool that removes the complexity that you may have with Maven or Gradle.

Bloop is a build server and CLI tool to compile, test and run Scala fast from any editor or build tool.

ScalaMock is a native Scala mocking framework. It uses macros to create mocks allowing the macros and compile-time reflection to create type safe code or manipulate programs.

Scapegoat is a Scala static code analyzer, what is more colloquially known as a code lint tool or linter. Scapegoat works in a similar vein to Java's FindBugs or checkstyle, or Scala's Scalastyle.

AWScala is a tool that enables Scala developers to easily work with Amazon Web Services in the Scala way.

Scala.js is a compiler that converts Scala to JavaScript.

Polynote is an experimental polyglot notebook environment. Currently, it supports Scala and Python (with or without Spark), SQL, and Vega.

Scala Native is an optimizing ahead-of-time compiler and lightweight managed runtime designed specifically for Scala.

Gitbucket is a Git platform powered by Scala with easy installation, high extensibility & GitHub API compatibility.

Finagle is a fault tolerant, protocol-agnostic RPC system

Gatling is a load test tool. It officially supports HTTP, WebSocket, Server-Sent-Events and JMS.

Scalatra is a tiny Scala high-performance, async web framework, inspired by Sinatra.

Apache Spark is a unified analytics engine for large-scale data processing. It provides high-level APIs in Scala, Java, Python, and R, and an optimized engine that supports general computation graphs for data analysis. It also supports a rich set of higher-level tools including Spark SQL for SQL and DataFrames, MLlib for machine learning, GraphX for graph processing, and Structured Streaming for stream processing.

Apache Spark Connector for SQL Server and Azure SQL is a high-performance connector that enables you to use transactional data in big data analytics and persists results for ad-hoc queries or reporting. The connector allows you to use any SQL database, on-premises or in the cloud, as an input data source or output data sink for Spark jobs.

Azure Databricks is a fast and collaborative Apache Spark-based big data analytics service designed for data science and data engineering. Azure Databricks, sets up your Apache Spark environment in minutes, autoscale, and collaborate on shared projects in an interactive workspace. Azure Databricks supports Python, Scala, R, Java, and SQL, as well as data science frameworks and libraries including TensorFlow, PyTorch, and scikit-learn.

Apache PredictionIO is an open source machine learning framework for developers, data scientists, and end users. It supports event collection, deployment of algorithms, evaluation, querying predictive results via REST APIs. It is based on scalable open source services like Hadoop, HBase (and other DBs), Elasticsearch, Spark and implements what is called a Lambda Architecture.

Cluster Manager for Apache Kafka(CMAK) is a tool for managing Apache Kafka clusters.

BigDL is a distributed deep learning library for Apache Spark. With BigDL, users can write their deep learning applications as standard Spark programs, which can directly run on top of existing Spark or Hadoop clusters.

Eclipse Deeplearning4J (DL4J) is a set of projects intended to support all the needs of a JVM-based(Scala, Kotlin, Clojure, and Groovy) deep learning application. This means starting with the raw data, loading and preprocessing it from wherever and whatever format it is in to building and tuning a wide variety of simple and complex deep learning networks.

Play Framework is a web framework combines productivity and performance making it easy to build scalable web applications with Java and Scala.

Contribute

  • If would you like to contribute to this guide simply make a Pull Request.

License

Distributed under the Creative Commons Attribution 4.0 International (CC BY 4.0) Public License.