SlideShare une entreprise Scribd logo
1  sur  5
Télécharger pour lire hors ligne
Published on ASSIST Software (http://assist-software.net) 
Home > Awesome Scala 
Awesome Scala 
Awesome Scala 
Submitted on Fri, 19 Sep 2014 by Lucian NEGHIN? in Projects Channel 
Contents 
Intro 
What is and why Scala 
Web Frameworks 
Play 
Spray 
Lift 
Other great scala web frameworks 
Database 
Slick 
Squeryl 
Activate 
Salat 
ReactiveMongo 
JSON Manipulation 
Spray-json 
Jackson-module-scala 
Json4s 
Testing 
Specs2 
ScalaTest 
Scalastyle 
Metrics and Monitoring 
Kamon 
Intro 
In this article I am going to present some of the most useful Scala libraries and frameworks which help 
ASSIST Software 
engineers to develop highly scalable applications that support concurrency and non-blocking. 
What is and why Scala 
Scala is a programming language for the Java Virtual Machine (JVM) that integrates features of both
object-oriented and functional programming. Scala provides a best-of-all-worlds experience for developers, 
it?s compatible with classic Java libraries and it?s designed to express common programming patterns in a 
concise and elegant way. But most important: Scala provides a type-safe language with powerful 
concurrency on top of a mature ecosystem. 
Web Frameworks 
There are lots of Scala frameworks which you can use to develop web applications quickly and easily, but I 
mostly 
will present the ones which are 
used: 
Play 
Play is the official Scala framework supported by Typesafe Inc., creator of the Scala programming 
language. Play is a modern web framework which combines productivity and performance making it easy 
to build scalable applications. This framework is ideal for developers who are more familiar with the MVC 
architecture. 
Spray 
Spray is not a framework, it's a suite of lightweight and very fast Scala libraries designed to build RESTful 
web services on top of Akka. With Spray you can develop standalone service based on spray-can module 
which provides a low-level, low-overhead and high-performance HTTP server and client. You can also 
develop a web service which runs inside a Jetty server. 
Using Spray together with a JavaScript framework like AngularJS, jQuery, Backbone or many others, you 
can approach the new trend of the web applications by moving the business logic from the server into the 
client side. 
Lift 
Lift is another popular, secure and powerful full stack web framework for scala. Lift is based on a View First 
approach as opposed to the typical MVC architecture, that means it divides web components into snippets, 
not in pages. The big plus of this framework is the native JavaScript/Ajax support, which offers an easy 
way to develop complex interactive web pages.
Other great scala web frameworks 
Scalatra 
Scalatra is an easy to understand micro-framework and a great option if you want to build lightweight and 
simple applications. Scalatra is inspired by Sinatra which is a Ruby framework. 
Finatra 
Finatra is another async web framework inspired by Sinatra, but this one runs on top of Finagle, a RPC 
System created by Twitter. 
BlueEyes 
BlueEyes is a purely asynchronous, extremely high-performance framework, intended only to create 
RESTful web services. 
Database 
In this section I will present a few scala libraries that allow you to access SQL databases like MySQL or 
PostgreSQL, but also NoSQL databases like MongoDB. 
Slick 
Slick is an easy, scalable, concise, safe, compositional and mature database query and access library for 
Scala. Slick tries to make queries use the same for comprehension as Scala collections do. It?s supported 
by Typesafe Inc. and can be used only on the following databases systems: H2, MySQL, PostgreSQL, 
SQLite, Derby/JavaDB, Microsoft Access, HSQLDB/HyperSQL. 
Slick is to Hibernate and JDBC, what Scala is to Java and Groovy. 
Squeryl 
Squeryl is an ORM which is completely type-safe and the queries are written in a DSL that is close to SQL. 
This library allows you to explicitly control the granularity of data objects that are retrieved while it provides 
an elegant solution to the N+1 queries problem. 
Squeryl is more like Hibernate. 
Activate 
Activate is a great scala framework to persist objects in different paradigms such as relational, prevalence 
and non-relational. It?s designed to be simple and uses Software Transactional Memory, which is a 
concurrency control mechanism to handle with transactions in-memory, without needing to use 
transactional control from the storage. 
Activate is the best choice for applications with concurrent bank transactions. 
Salat 
Salat is an ORM for MongoDB which provides fast, simple, bidirectional serialization between Scala Case
Classes and DBObject. Salat is based in Casbah, the official MongoDB driver and because of that Salat 
has the following restrictions: 
can?t support nested inner classes 
doesn?t use a class type at the top-level to a trait or an abstract superclass 
any type of Map must have String key only which do not contain ?.?or ?$? 
Salat is the most used MongoDB persistent library. 
ReactiveMongo 
ReactiveMongo is an asynchronous, non-blocking Scala driver for MongoDB. In a classic synchronous 
driver like Casbah, each operation blocks the current thread until a response is received and that can be a 
problem if you have an application with multiple concurrent accesses to the database. 
ReactiveMongo is young, but mature enough to be used in production. 
JSON Manipulation 
Spray-json 
Spray-json is a lightweight, clean and efficient JSON implementation in Scala and is based on the 
parboiled parsing library. Considering the deserialization time, spray-json is nor the fastest library, neither 
the slowest. Another negative aspect is the limit to parsing json data with more than 22 fields. This limit is 
because spray-json is based on Tuples, where the maxim type is Tuple22. However spray-json is a very 
used library because it offers an easy way to manipulate entities from/to JSON. 
Jackson-module-scala 
Jackson-module-scala is the fastest JSON parser and is the official Scala support module for Jackson 
(Java library). You can also use the java library in your scala project and will obtain the same performance, 
but by using jackson-module-scala you will have support to serialization and deserialization of scala Case 
Classes, Sequences, Maps, Tuples, Options and Enumerations. 
Json4s 
Json4s is a very promising project where the aim is to provide a single AST to be used by other Scala 
JSON libraries. Json4s has an extremely rich functional API and supports multiple backends like Lift JSON 
or Jackson and has native support from Spray and Scalatra. 
Testing 
Specs2 
Specs2 is an open source library based on specifications. Specs2 supports unit testing for one class (unit 
specifications) and acceptance testing for the full-system (acceptance specifications). The specs2 tests are 
asynchronous and each runs in its thread using a Promise, that?s why it works well with Akka. 
ScalaTest
ScalaTest is another great testing library which can be used to do unit tests, functional tests, performance 
test. ScalaTest offers deep integration with tools like JUnit, Mockito, ScalaCheck, Selenium, ScalaCheck 
and supports TDD (Test Driven Development), BDD (Behavior Driven Development) and acceptance 
testing. 
Scalastyle 
Scalastyle is a scala style checker which examines your code and indicates where you are not respected 
the grammar or the functional programming principles in Scala. It can be integrated with Intellij or Eclipse, 
but also it can be used with SBT, Maven, Gradle. 
Metrics and Monitoring 
Kamon 
Kamon is a set of tools that help you to get metrics from your applications built with Spray, Akka or Play. 
Kamon offers support to be integrated with other backend services like StatsD and Graphite which are free 
but it can also be integrated with New Relic. 
Source URL: http://assist-software.net/blog/awesome-scala

Contenu connexe

Tendances

Scala Security: Eliminate 200+ Code-Level Threats With Fortify SCA For Scala
Scala Security: Eliminate 200+ Code-Level Threats With Fortify SCA For ScalaScala Security: Eliminate 200+ Code-Level Threats With Fortify SCA For Scala
Scala Security: Eliminate 200+ Code-Level Threats With Fortify SCA For ScalaLightbend
 
Spring Framework 4.0 to 4.1
Spring Framework 4.0 to 4.1Spring Framework 4.0 to 4.1
Spring Framework 4.0 to 4.1Sam Brannen
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroOndrej Mihályi
 
MySQL Document Store
MySQL Document StoreMySQL Document Store
MySQL Document StoreMario Beck
 
MySQL enterprise edition
MySQL enterprise edition MySQL enterprise edition
MySQL enterprise edition Mark Swarbrick
 
Adopt-a-jsr Mar 1 2017 JAX-RS update
Adopt-a-jsr Mar 1 2017 JAX-RS updateAdopt-a-jsr Mar 1 2017 JAX-RS update
Adopt-a-jsr Mar 1 2017 JAX-RS updatePavel Bucek
 
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud ServiceMySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud ServiceOlivier DASINI
 
Rollin onj Rubyv3
Rollin onj Rubyv3Rollin onj Rubyv3
Rollin onj Rubyv3Oracle
 
High Availability in MySQL 8 using InnoDB Cluster
High Availability in MySQL 8 using InnoDB ClusterHigh Availability in MySQL 8 using InnoDB Cluster
High Availability in MySQL 8 using InnoDB ClusterSven Sandberg
 
Pl17: MySQL 8.0: security
Pl17: MySQL 8.0: securityPl17: MySQL 8.0: security
Pl17: MySQL 8.0: securityGeorgi Kodinov
 
Contributors Guide to the Jakarta EE 10 Galaxy
Contributors Guide to the Jakarta EE 10 GalaxyContributors Guide to the Jakarta EE 10 Galaxy
Contributors Guide to the Jakarta EE 10 GalaxyJakarta_EE
 
RMOUG MySQL 5.7 New Features
RMOUG MySQL 5.7 New FeaturesRMOUG MySQL 5.7 New Features
RMOUG MySQL 5.7 New FeaturesDave Stokes
 
Java EE 8 Update
Java EE 8 UpdateJava EE 8 Update
Java EE 8 UpdateRyan Cuprak
 
Building 12-factor Cloud Native Microservices
Building 12-factor Cloud Native MicroservicesBuilding 12-factor Cloud Native Microservices
Building 12-factor Cloud Native MicroservicesJakarta_EE
 
Lift web framework
Lift web frameworkLift web framework
Lift web frameworkPetr Hošek
 
Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On ConcurrencyWill Gage
 

Tendances (18)

Scala Security: Eliminate 200+ Code-Level Threats With Fortify SCA For Scala
Scala Security: Eliminate 200+ Code-Level Threats With Fortify SCA For ScalaScala Security: Eliminate 200+ Code-Level Threats With Fortify SCA For Scala
Scala Security: Eliminate 200+ Code-Level Threats With Fortify SCA For Scala
 
Spring Framework 4.0 to 4.1
Spring Framework 4.0 to 4.1Spring Framework 4.0 to 4.1
Spring Framework 4.0 to 4.1
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
 
MySQL Document Store
MySQL Document StoreMySQL Document Store
MySQL Document Store
 
MySQL enterprise edition
MySQL enterprise edition MySQL enterprise edition
MySQL enterprise edition
 
Adopt-a-jsr Mar 1 2017 JAX-RS update
Adopt-a-jsr Mar 1 2017 JAX-RS updateAdopt-a-jsr Mar 1 2017 JAX-RS update
Adopt-a-jsr Mar 1 2017 JAX-RS update
 
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud ServiceMySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
 
Rollin onj Rubyv3
Rollin onj Rubyv3Rollin onj Rubyv3
Rollin onj Rubyv3
 
Java EE 8
Java EE 8Java EE 8
Java EE 8
 
High Availability in MySQL 8 using InnoDB Cluster
High Availability in MySQL 8 using InnoDB ClusterHigh Availability in MySQL 8 using InnoDB Cluster
High Availability in MySQL 8 using InnoDB Cluster
 
Pl17: MySQL 8.0: security
Pl17: MySQL 8.0: securityPl17: MySQL 8.0: security
Pl17: MySQL 8.0: security
 
Contributors Guide to the Jakarta EE 10 Galaxy
Contributors Guide to the Jakarta EE 10 GalaxyContributors Guide to the Jakarta EE 10 Galaxy
Contributors Guide to the Jakarta EE 10 Galaxy
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
RMOUG MySQL 5.7 New Features
RMOUG MySQL 5.7 New FeaturesRMOUG MySQL 5.7 New Features
RMOUG MySQL 5.7 New Features
 
Java EE 8 Update
Java EE 8 UpdateJava EE 8 Update
Java EE 8 Update
 
Building 12-factor Cloud Native Microservices
Building 12-factor Cloud Native MicroservicesBuilding 12-factor Cloud Native Microservices
Building 12-factor Cloud Native Microservices
 
Lift web framework
Lift web frameworkLift web framework
Lift web framework
 
Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On Concurrency
 

Similaire à Assist software awesome scala

Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...Codemotion
 
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...Codemotion
 
Why are Developers Moving Forward to Scala Programming?
Why are Developers Moving Forward to Scala Programming?Why are Developers Moving Forward to Scala Programming?
Why are Developers Moving Forward to Scala Programming?NexSoftsys
 
Ten Compelling Reasons to Go the Scala Development Way - Metadesign Solutions
Ten Compelling Reasons to Go the Scala Development Way - Metadesign SolutionsTen Compelling Reasons to Go the Scala Development Way - Metadesign Solutions
Ten Compelling Reasons to Go the Scala Development Way - Metadesign SolutionsMetaDesign Solutions
 
Infographic on Scala Programming Language
Infographic on Scala Programming LanguageInfographic on Scala Programming Language
Infographic on Scala Programming LanguagePaddy Lock
 
Deciding Between NestJS and Laravel: Syntax, Authentication, and Real-time Ca...
Deciding Between NestJS and Laravel: Syntax, Authentication, and Real-time Ca...Deciding Between NestJS and Laravel: Syntax, Authentication, and Real-time Ca...
Deciding Between NestJS and Laravel: Syntax, Authentication, and Real-time Ca...Tien Nguyen
 
Why scala - executive overview
Why scala - executive overviewWhy scala - executive overview
Why scala - executive overviewRazvan Cojocaru
 
Lessons Learned: Scala and its Ecosystem
Lessons Learned: Scala and its EcosystemLessons Learned: Scala and its Ecosystem
Lessons Learned: Scala and its EcosystemPetr Hošek
 
Fundamental Paradigms for Java Developers: NoSQL and OSGI
Fundamental Paradigms for Java Developers: NoSQL and OSGIFundamental Paradigms for Java Developers: NoSQL and OSGI
Fundamental Paradigms for Java Developers: NoSQL and OSGIOtávio Santana
 
Introduction to Scala JS
Introduction to Scala JSIntroduction to Scala JS
Introduction to Scala JSKnoldus Inc.
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on RailsViridians
 
Introduction Java Web Framework and Web Server.
Introduction Java Web Framework and Web Server.Introduction Java Web Framework and Web Server.
Introduction Java Web Framework and Web Server.suranisaunak
 
Selling Scala to your boss
Selling Scala to your bossSelling Scala to your boss
Selling Scala to your bossJoão Bernardino
 

Similaire à Assist software awesome scala (20)

Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
 
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
 
Why are Developers Moving Forward to Scala Programming?
Why are Developers Moving Forward to Scala Programming?Why are Developers Moving Forward to Scala Programming?
Why are Developers Moving Forward to Scala Programming?
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
 
What is scala
What is scalaWhat is scala
What is scala
 
Ten Compelling Reasons to Go the Scala Development Way - Metadesign Solutions
Ten Compelling Reasons to Go the Scala Development Way - Metadesign SolutionsTen Compelling Reasons to Go the Scala Development Way - Metadesign Solutions
Ten Compelling Reasons to Go the Scala Development Way - Metadesign Solutions
 
Infographic on Scala Programming Language
Infographic on Scala Programming LanguageInfographic on Scala Programming Language
Infographic on Scala Programming Language
 
Spark Workshop
Spark WorkshopSpark Workshop
Spark Workshop
 
Deciding Between NestJS and Laravel: Syntax, Authentication, and Real-time Ca...
Deciding Between NestJS and Laravel: Syntax, Authentication, and Real-time Ca...Deciding Between NestJS and Laravel: Syntax, Authentication, and Real-time Ca...
Deciding Between NestJS and Laravel: Syntax, Authentication, and Real-time Ca...
 
Why scala - executive overview
Why scala - executive overviewWhy scala - executive overview
Why scala - executive overview
 
Lessons Learned: Scala and its Ecosystem
Lessons Learned: Scala and its EcosystemLessons Learned: Scala and its Ecosystem
Lessons Learned: Scala and its Ecosystem
 
Scala a case4
Scala a case4Scala a case4
Scala a case4
 
EVOLVE'16 | Deploy | Abhishek Dwevedi | Overview of the Core AEM Technology
EVOLVE'16 | Deploy | Abhishek Dwevedi | Overview of the Core AEM TechnologyEVOLVE'16 | Deploy | Abhishek Dwevedi | Overview of the Core AEM Technology
EVOLVE'16 | Deploy | Abhishek Dwevedi | Overview of the Core AEM Technology
 
Fundamental Paradigms for Java Developers: NoSQL and OSGI
Fundamental Paradigms for Java Developers: NoSQL and OSGIFundamental Paradigms for Java Developers: NoSQL and OSGI
Fundamental Paradigms for Java Developers: NoSQL and OSGI
 
Introduction to Scala JS
Introduction to Scala JSIntroduction to Scala JS
Introduction to Scala JS
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on Rails
 
Spark
SparkSpark
Spark
 
Introduction Java Web Framework and Web Server.
Introduction Java Web Framework and Web Server.Introduction Java Web Framework and Web Server.
Introduction Java Web Framework and Web Server.
 
Selling Scala to your boss
Selling Scala to your bossSelling Scala to your boss
Selling Scala to your boss
 
Ajaxworld West 08
Ajaxworld West 08Ajaxworld West 08
Ajaxworld West 08
 

Plus de AssistSoftware

L2L Entrepreneurship 2nd Newsletter
L2L Entrepreneurship 2nd NewsletterL2L Entrepreneurship 2nd Newsletter
L2L Entrepreneurship 2nd NewsletterAssistSoftware
 
L2L Entrepreneurship Newsletter
L2L Entrepreneurship NewsletterL2L Entrepreneurship Newsletter
L2L Entrepreneurship NewsletterAssistSoftware
 
Bonafide comunicat de presa
Bonafide   comunicat de presaBonafide   comunicat de presa
Bonafide comunicat de presaAssistSoftware
 
ASSIST Software Brochure
ASSIST Software BrochureASSIST Software Brochure
ASSIST Software BrochureAssistSoftware
 
ASSIST Software - Software Development & Outsourcing Company Romania, Eastern...
ASSIST Software - Software Development & Outsourcing Company Romania, Eastern...ASSIST Software - Software Development & Outsourcing Company Romania, Eastern...
ASSIST Software - Software Development & Outsourcing Company Romania, Eastern...AssistSoftware
 
How to Play at Work - A Play Framework Tutorial
How to Play at Work - A Play Framework TutorialHow to Play at Work - A Play Framework Tutorial
How to Play at Work - A Play Framework TutorialAssistSoftware
 
Play Framework Tutorial
Play Framework Tutorial Play Framework Tutorial
Play Framework Tutorial AssistSoftware
 

Plus de AssistSoftware (7)

L2L Entrepreneurship 2nd Newsletter
L2L Entrepreneurship 2nd NewsletterL2L Entrepreneurship 2nd Newsletter
L2L Entrepreneurship 2nd Newsletter
 
L2L Entrepreneurship Newsletter
L2L Entrepreneurship NewsletterL2L Entrepreneurship Newsletter
L2L Entrepreneurship Newsletter
 
Bonafide comunicat de presa
Bonafide   comunicat de presaBonafide   comunicat de presa
Bonafide comunicat de presa
 
ASSIST Software Brochure
ASSIST Software BrochureASSIST Software Brochure
ASSIST Software Brochure
 
ASSIST Software - Software Development & Outsourcing Company Romania, Eastern...
ASSIST Software - Software Development & Outsourcing Company Romania, Eastern...ASSIST Software - Software Development & Outsourcing Company Romania, Eastern...
ASSIST Software - Software Development & Outsourcing Company Romania, Eastern...
 
How to Play at Work - A Play Framework Tutorial
How to Play at Work - A Play Framework TutorialHow to Play at Work - A Play Framework Tutorial
How to Play at Work - A Play Framework Tutorial
 
Play Framework Tutorial
Play Framework Tutorial Play Framework Tutorial
Play Framework Tutorial
 

Dernier

What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfkalichargn70th171
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdfAndrey Devyatkin
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfmaor17
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfRTS corp
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingShane Coughlan
 

Dernier (20)

What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdf
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
 

Assist software awesome scala

  • 1. Published on ASSIST Software (http://assist-software.net) Home > Awesome Scala Awesome Scala Awesome Scala Submitted on Fri, 19 Sep 2014 by Lucian NEGHIN? in Projects Channel Contents Intro What is and why Scala Web Frameworks Play Spray Lift Other great scala web frameworks Database Slick Squeryl Activate Salat ReactiveMongo JSON Manipulation Spray-json Jackson-module-scala Json4s Testing Specs2 ScalaTest Scalastyle Metrics and Monitoring Kamon Intro In this article I am going to present some of the most useful Scala libraries and frameworks which help ASSIST Software engineers to develop highly scalable applications that support concurrency and non-blocking. What is and why Scala Scala is a programming language for the Java Virtual Machine (JVM) that integrates features of both
  • 2. object-oriented and functional programming. Scala provides a best-of-all-worlds experience for developers, it?s compatible with classic Java libraries and it?s designed to express common programming patterns in a concise and elegant way. But most important: Scala provides a type-safe language with powerful concurrency on top of a mature ecosystem. Web Frameworks There are lots of Scala frameworks which you can use to develop web applications quickly and easily, but I mostly will present the ones which are used: Play Play is the official Scala framework supported by Typesafe Inc., creator of the Scala programming language. Play is a modern web framework which combines productivity and performance making it easy to build scalable applications. This framework is ideal for developers who are more familiar with the MVC architecture. Spray Spray is not a framework, it's a suite of lightweight and very fast Scala libraries designed to build RESTful web services on top of Akka. With Spray you can develop standalone service based on spray-can module which provides a low-level, low-overhead and high-performance HTTP server and client. You can also develop a web service which runs inside a Jetty server. Using Spray together with a JavaScript framework like AngularJS, jQuery, Backbone or many others, you can approach the new trend of the web applications by moving the business logic from the server into the client side. Lift Lift is another popular, secure and powerful full stack web framework for scala. Lift is based on a View First approach as opposed to the typical MVC architecture, that means it divides web components into snippets, not in pages. The big plus of this framework is the native JavaScript/Ajax support, which offers an easy way to develop complex interactive web pages.
  • 3. Other great scala web frameworks Scalatra Scalatra is an easy to understand micro-framework and a great option if you want to build lightweight and simple applications. Scalatra is inspired by Sinatra which is a Ruby framework. Finatra Finatra is another async web framework inspired by Sinatra, but this one runs on top of Finagle, a RPC System created by Twitter. BlueEyes BlueEyes is a purely asynchronous, extremely high-performance framework, intended only to create RESTful web services. Database In this section I will present a few scala libraries that allow you to access SQL databases like MySQL or PostgreSQL, but also NoSQL databases like MongoDB. Slick Slick is an easy, scalable, concise, safe, compositional and mature database query and access library for Scala. Slick tries to make queries use the same for comprehension as Scala collections do. It?s supported by Typesafe Inc. and can be used only on the following databases systems: H2, MySQL, PostgreSQL, SQLite, Derby/JavaDB, Microsoft Access, HSQLDB/HyperSQL. Slick is to Hibernate and JDBC, what Scala is to Java and Groovy. Squeryl Squeryl is an ORM which is completely type-safe and the queries are written in a DSL that is close to SQL. This library allows you to explicitly control the granularity of data objects that are retrieved while it provides an elegant solution to the N+1 queries problem. Squeryl is more like Hibernate. Activate Activate is a great scala framework to persist objects in different paradigms such as relational, prevalence and non-relational. It?s designed to be simple and uses Software Transactional Memory, which is a concurrency control mechanism to handle with transactions in-memory, without needing to use transactional control from the storage. Activate is the best choice for applications with concurrent bank transactions. Salat Salat is an ORM for MongoDB which provides fast, simple, bidirectional serialization between Scala Case
  • 4. Classes and DBObject. Salat is based in Casbah, the official MongoDB driver and because of that Salat has the following restrictions: can?t support nested inner classes doesn?t use a class type at the top-level to a trait or an abstract superclass any type of Map must have String key only which do not contain ?.?or ?$? Salat is the most used MongoDB persistent library. ReactiveMongo ReactiveMongo is an asynchronous, non-blocking Scala driver for MongoDB. In a classic synchronous driver like Casbah, each operation blocks the current thread until a response is received and that can be a problem if you have an application with multiple concurrent accesses to the database. ReactiveMongo is young, but mature enough to be used in production. JSON Manipulation Spray-json Spray-json is a lightweight, clean and efficient JSON implementation in Scala and is based on the parboiled parsing library. Considering the deserialization time, spray-json is nor the fastest library, neither the slowest. Another negative aspect is the limit to parsing json data with more than 22 fields. This limit is because spray-json is based on Tuples, where the maxim type is Tuple22. However spray-json is a very used library because it offers an easy way to manipulate entities from/to JSON. Jackson-module-scala Jackson-module-scala is the fastest JSON parser and is the official Scala support module for Jackson (Java library). You can also use the java library in your scala project and will obtain the same performance, but by using jackson-module-scala you will have support to serialization and deserialization of scala Case Classes, Sequences, Maps, Tuples, Options and Enumerations. Json4s Json4s is a very promising project where the aim is to provide a single AST to be used by other Scala JSON libraries. Json4s has an extremely rich functional API and supports multiple backends like Lift JSON or Jackson and has native support from Spray and Scalatra. Testing Specs2 Specs2 is an open source library based on specifications. Specs2 supports unit testing for one class (unit specifications) and acceptance testing for the full-system (acceptance specifications). The specs2 tests are asynchronous and each runs in its thread using a Promise, that?s why it works well with Akka. ScalaTest
  • 5. ScalaTest is another great testing library which can be used to do unit tests, functional tests, performance test. ScalaTest offers deep integration with tools like JUnit, Mockito, ScalaCheck, Selenium, ScalaCheck and supports TDD (Test Driven Development), BDD (Behavior Driven Development) and acceptance testing. Scalastyle Scalastyle is a scala style checker which examines your code and indicates where you are not respected the grammar or the functional programming principles in Scala. It can be integrated with Intellij or Eclipse, but also it can be used with SBT, Maven, Gradle. Metrics and Monitoring Kamon Kamon is a set of tools that help you to get metrics from your applications built with Spray, Akka or Play. Kamon offers support to be integrated with other backend services like StatsD and Graphite which are free but it can also be integrated with New Relic. Source URL: http://assist-software.net/blog/awesome-scala