Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. It has established itself as one of the main alternative languages on the Java Virtual Machine, being used by companies like Twitter and LinkedIn. Scala fuses functional programming (from which it borrows higher-order functions and closures, generic typing and immutable data structures) and object-oriented programming programming (from which it takes inheritance and encapsulation). It interoperates fully with Java, allowing a smooth transition and access to all existing Java libraries.
Scala’s lightweight syntax makes it easy to extend the language through DSLs. In this talk we are going to have a quick overview of Scala’s main features (closures, higher-order functions, implicits), and collection classes in the standard library. We’ll see how a new concurrency model, such as actors, can be added to the language through a library.
The Scala programming language has been gaining momentum recently as an alternative (and some might say successor) to Java on the JVM. This talk will start with an introduction to basic Scala syntax and concepts, then delve into some of Scala's more interesting and unique features. At the end we'll show a brief example of how Scala is used by the Lift web framework to simplify dynamic web apps.
I used these slides for a Scala workshop that I gave. They are based on these: http://www.scala-lang.org/node/4454. Thanks to Alf Kristian Støyle and Fredrik Vraalsen for sharing!
Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. It has established itself as one of the main alternative languages on the Java Virtual Machine, being used by companies like Twitter and LinkedIn. Scala fuses functional programming (from which it borrows higher-order functions and closures, generic typing and immutable data structures) and object-oriented programming programming (from which it takes inheritance and encapsulation). It interoperates fully with Java, allowing a smooth transition and access to all existing Java libraries.
Scala’s lightweight syntax makes it easy to extend the language through DSLs. In this talk we are going to have a quick overview of Scala’s main features (closures, higher-order functions, implicits), and collection classes in the standard library. We’ll see how a new concurrency model, such as actors, can be added to the language through a library.
The Scala programming language has been gaining momentum recently as an alternative (and some might say successor) to Java on the JVM. This talk will start with an introduction to basic Scala syntax and concepts, then delve into some of Scala's more interesting and unique features. At the end we'll show a brief example of how Scala is used by the Lift web framework to simplify dynamic web apps.
I used these slides for a Scala workshop that I gave. They are based on these: http://www.scala-lang.org/node/4454. Thanks to Alf Kristian Støyle and Fredrik Vraalsen for sharing!
Short (45 min) version of my 'Pragmatic Real-World Scala' talk. Discussing patterns and idioms discovered during 1.5 years of building a production system for finance; portfolio management and simulation.
Scala: Object-Oriented Meets Functional, by Iulian Dragos3Pillar Global
A presentation from Iulian Dragos of Typesafe that gives an overview of the Scala programming language. The presentation was given at a Functional Angle conference in Timisoara, Romania sponsored by 3Pillar. Iulian Dragos has been working on Scala since 2004. He currently works for Typesafe, a start-up that was co-founded by Scala’s creator, Martin Odersky.
Short (45 min) version of my 'Pragmatic Real-World Scala' talk. Discussing patterns and idioms discovered during 1.5 years of building a production system for finance; portfolio management and simulation.
Scala: Object-Oriented Meets Functional, by Iulian Dragos3Pillar Global
A presentation from Iulian Dragos of Typesafe that gives an overview of the Scala programming language. The presentation was given at a Functional Angle conference in Timisoara, Romania sponsored by 3Pillar. Iulian Dragos has been working on Scala since 2004. He currently works for Typesafe, a start-up that was co-founded by Scala’s creator, Martin Odersky.
Qcon2011 functions rockpresentation_scalaMichael Stal
This is the part I of the tutorial I planned to give at QCon 2011 on Functional Programming with Scala. It also includes Scala 2.8 as well as upcoming features
Graph databases address one of the great macroscopic business trends of today: leveraging complex and dynamic relationships in highly connected data to generate insight and competitive advantage. Whether we want to understand relationships between customers, elements in a telephone or data center network, entertainment producers and consumers, or genes and proteins, the ability to understand and analyze vast graphs of highly connected data will be key in determining which companies outperform their competitors over the coming decade. In this session, I am going to cover following graph database concepts mainly w.r.t Neo4j.
High level view of Graph Space
Power of Graph Databases
Data Modeling with Graphs
Cypher : Graph Query language
Building a Graph Database Application
Graphs in Real World / Common Use cases
Predictive Analysis with Graph Theory
Use Cases of #Grails in Web Applications
- Type of applications most appropriate to be developed in Grails
- Type of applications where Grails may not be the best choice
- Experiences with Grails during several web application development projects
The new buzz world in the world of Agile is "DevOps". So what exactly is devOps and Why do we need it? When development got married to deployment (sys-admin/operations) ; what is born is a new advanced species which is known to us today as "DevOps"
This ppt discusses in detail about how to Exploit Vulnerabilities in #MobileApplications which are using user Location to filter data or to provide location specific content and Commercial Offers. The session showcased live examples by exploiting vulnerabilities in some famous applications used by mobile users worldwide. The last part of session includes prospective solutions to secure application from these vulnerabilities.
Modelling RESTful applications – Why should I not use verbs in REST urlXebia IT Architects
What would go wrong if we use verbs in #REST #URL.
Whether there is some rationale behind it or it just REST dogma. Are there any “#RESTguidelines”?
In this session we will explore how to model our services so that we follow the RESTful way adhering to HTTP specification.
#Scrum is very popular these days but #kanban is suitable for better organizational level continuous improvement. We use #scrumban to get the benefits of both the worlds. Its a combination of good practices of scrum with kanban.
This talk is about how #Deployit can be #integrated with build tools like #Jenkins to achieve the goal of Continuos Delivery , this presentaiton also covers the architrure and overview of deployit.
Anurag Shrivastava, Managing Director of Xebia India, recently got interviewed by Journalist of “The Sunday Guardian”. He shares his experiences, the journey and success of Xebia through BIG IDEA column.
AgileNCR 2010 conference was held in Gurgaon on 17th & 18th July 2010. This largest community driven conference was the Fourth edition of Agile NCR and was organized in collaboration with ASCI. This time the event was based on four major themes : 'Agile for newbies', ' Agile Adoption Challenges', 'Workshops and Software Craftsmanship', and ' Post Agile'
AgileNCR 2010 conference was held in Gurgaon on 17th & 18th July 2010. This largest community driven conference was the Fourth edition of Agile NCR and was organized in collaboration with ASCI. This time the event was based on four major themes : 'Agile for newbies', ' Agile Adoption Challenges', 'Workshops and Software Craftsmanship', and ' Post Agile'.
AgileNCR 2010 conference was held in Gurgaon on 17th & 18th July 2010. This largest community driven conference was the Fourth edition of Agile NCR and was organized in collaboration with ASCI. This time the event was based on four major themes : 'Agile for newbies', ' Agile Adoption Challenges', 'Workshops and Software Craftsmanship', and ' Post Agile'.
Practicing Agile in Offshore Environment by Himanshu Seth & Imran MirXebia IT Architects
AgileNCR 2010 conference was held in Gurgaon on 17th & 18th July 2010. This largest community driven conference was the Fourth edition of Agile NCR and was organized in collaboration with ASCI. This time the event was based on four major themes : 'Agile for newbies', ' Agile Adoption Challenges', 'Workshops and Software Craftsmanship', and ' Post Agile'.
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIVladimir Iglovikov, Ph.D.
Presented by Vladimir Iglovikov:
- https://www.linkedin.com/in/iglovikov/
- https://x.com/viglovikov
- https://www.instagram.com/ternaus/
This presentation delves into the journey of Albumentations.ai, a highly successful open-source library for data augmentation.
Created out of a necessity for superior performance in Kaggle competitions, Albumentations has grown to become a widely used tool among data scientists and machine learning practitioners.
This case study covers various aspects, including:
People: The contributors and community that have supported Albumentations.
Metrics: The success indicators such as downloads, daily active users, GitHub stars, and financial contributions.
Challenges: The hurdles in monetizing open-source projects and measuring user engagement.
Development Practices: Best practices for creating, maintaining, and scaling open-source libraries, including code hygiene, CI/CD, and fast iteration.
Community Building: Strategies for making adoption easy, iterating quickly, and fostering a vibrant, engaged community.
Marketing: Both online and offline marketing tactics, focusing on real, impactful interactions and collaborations.
Mental Health: Maintaining balance and not feeling pressured by user demands.
Key insights include the importance of automation, making the adoption process seamless, and leveraging offline interactions for marketing. The presentation also emphasizes the need for continuous small improvements and building a friendly, inclusive community that contributes to the project's growth.
Vladimir Iglovikov brings his extensive experience as a Kaggle Grandmaster, ex-Staff ML Engineer at Lyft, sharing valuable lessons and practical advice for anyone looking to enhance the adoption of their open-source projects.
Explore more about Albumentations and join the community at:
GitHub: https://github.com/albumentations-team/albumentations
Website: https://albumentations.ai/
LinkedIn: https://www.linkedin.com/company/100504475
Twitter: https://x.com/albumentations
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Getting Started With Scala
1. Getting Started with Scala
Vikas Hazrati - vhazrati@xebia.com
Meetu Maltiar - mmaltiar@xebia.com
OSScamp Delhi 2009
2. Agenda
I. What is FP and OOP? I. Features
– Quick comparison
with Java
I. Introducing Scala – Function Values and
Closures
– Scalable Languages
– Traits
– Scala is a Scripting
language – Pattern Matching
– Scala is Java of future I. End Notes
– Scala is OO - Who is using it ?
– Scala is Interoperable - Tool support
- Learning resources
4. What is FP
Is a concept where you can pass functions as
arguments, to store them in variables, and to
return them from other functions.
5. What is OOP?
Object Oriented Programming is
programming which is oriented
around objects
Takes advantage of Encapsulation,
Polymorphism, and Inheritance to
increase code reuse and decrease
code maintenance.
6. Scala: FP and OOP language
Scala is a object oriented and functional programming
language which is completely interoperable with java
FP: Makes it easy to build interesting things from simple parts, using
– Higher order functions
– Algebraic types and pattern matching
– Parametric polymorphism
OOP: Makes it easy to adopt and extend complex systems using
– Subtyping and inheritance
– Dynamic configurations
– Classes as partial abstractions
8. Scalable languages
A language is scalable if it is suitable for very small as well as
very large programs.
A single language for extension scripts and the heavy lifting.
Application-specific needs are handled through libraries and
embedded DSL's instead of external languages.
Scala shows that this is possible.
8
9. Scala is a scripting language
It has an interactive read-eval-print-loop (REPL).
Types can be inferred.
Boilerplate is scrapped.
scala> var capital = Map("US" → "Washington", "France" → "Paris")
capital: Map[String, String] = Map(US → Washington, France →
Paris)
scala> capital += ("Japan" → "Tokyo")
scala> capital("France")
res7: String = Paris
9
10. Scala is the Java of the future
It has basically everything Java has now.
(sometimes in different form)
It has closures.
(proposed for Java 7, but rejected)
It has traits and pattern matching.
(do not be surprised to see them in Java 8, 9 or 10)
It compiles to .class files, is completely interoperable and runs about as fast as
Java
object App {
def main(args: Array[String]) {
if (args exists (_.toLowerCase == "-help"))
printUsage()
else
process(args)
}
}
10
11. Scala is object-oriented
Every value is an object
Every operation is a method call
Exceptions to these rules in Java (such as
primitive types, statics) are eliminated.
scala> (1).hashCode
res8: Int = 1
scala> (1).+(2)
res10: Int = 3
11
12. Interoperability
Scala fits seamlessly into a Java environment
Can call Java methods, select Java fields, inherit Java
classes, implement Java interfaces, etc.
None of this requires glue code or interface descriptions
Java code can also easily call into Scala code
Scala code resembling Java is translated into virtually
the same bytecodes.
⇒ Performance is usually on a par with Java
12
14. Scala compared to Java
Scala adds Scala removes
+ a pure object system - static members
+ operator overloading - primitive types
+ closures - break, continue
+ mixin composition with - special treatment of
traits interfaces
+ existential types - wildcards
+ abstract types - raw types
+ pattern matching - enums
14
15. Scala cheat sheet (1): Definitions
Scala method definitions: Java method definition:
def fun(x: Int): Int = { int fun(int x) {
result return result
} }
def fun = result (no parameterless methods)
Scala variable definitions: Java variable definitions:
var x: Int = expression int x = expression
val x: String = expression final String x = expression
15
16. Scala cheat sheet (2): Objects and
Classes
Scala Class and Object Java Class with statics
class Sample {
class Sample(x: Int, val p: Int)
{ private final int x;
def instMeth(y: Int) = x + y public final int p;
} Sample(int x, int p) {
this.x = x;
this.p = p;
object Sample {
}
def staticMeth(x: Int, y: Int) int instMeth(int y) {
= return x + y;
x*y }
} static int staticMeth(int x,
int y) {
return x * y;
}
}
16
17. Scala cheat sheet (3): Traits
Scala Trait Java Interface
trait T { interface T {
def abstractMth(x: String): Int int abstractMth(String x)
def concreteMth(x: String) = }
x + field
(no concrete methods)
var field = “!”
(no fields)
}
Java extension + implementation:
Scala mixin composition:
class C extends Super
class C extends Super with T implements T
17
18. Scala Compared to Java
class CreditCard(val number: Int, var creditLimit: Int)
javap -private CreditCard
public class CreditCard extends java.lang.Object implements
scala.ScalaObject{
private int creditLimit;
private final int number;
public CreditCard(int, int);
public void creditLimit_$eq(int);
public int creditLimit();
public int number();
public int $tag() throws java.rmi.RemoteException;
}
18
19. Constructors
class Person(val firstName: String, val lastName: String) {
private var position: String = _
println("Creating " + toString())
def this (firstName: String, lastName: String, positionHeld: String) {
this (firstName, lastName)
position = positionHeld
}
override def toString() : String = {
firstName + " " + lastName + " holds " + position + " position "
}
}
19
22. Currying & Partial Functions
Currying in Scala transforms a function that takes more than one
parameter into a function that takes multiple parameter lists.
22
23. Closures
You can create code blocks with variables that are not bound.
You will have to bind them before you can invoke the function; however,
they could bind to, or close over, variables outside of their local scope
and parameter list.
That’s why they’re called closures.
23
25. Traits
They are fundamental unit for code reuse in Scala
A Trait encapsulates method and field definitions, which can be
reused by mixing them in classes
Unlike class inheritance , in which class must inherit from just one
superclass, a class may mix in any number of Traits
Unlike Interfaces they can have concrete methods
25
26. Traits
trait Philosophical {
def philosophize() {
println("I consume memory, therefore I am!")
}
}
class Frog extends Philosophical {
override def toString() = "green"
}
val latestFrog = new Frog
println("" + latestFrog)
latestFrog.philosophize()
val phil:Philosophical = latestFrog
phil.philosophize()
26
27. Pattern Matching
All that is required is to add a single case
keyword to each class that is to be pattern
matchable
Similar to switch expect that Scala compares
Objects as expressions
27
28. Pattern Matching
object PatternApplication {
def main(args : Array[String]) : Unit = {
println( simplifyTop(UnOperator("-", UnOperator("-", Variable("x")))))
println( simplifyTop(BinOperator("+", Variable("x"), NumberOperator(0))))
println( simplifyTop(BinOperator("*", Variable("x"), NumberOperator(1))))
}
def simplifyTop(expr: Expression): Expression = expr match {
case UnOperator("-", UnOperator("-", e)) => e // Double negation
case BinOperator("+", e, NumberOperator(0)) => e // Adding zero
case BinOperator("*", e, NumberOperator(1)) => e // Multiplying by one
case _ => expr
}
}
28
30. Tool support
– Standalone compiler: scalac
– Fast background compiler: fsc
– Interactive interpreter shell and script runner: scala
– Web framework: lift
– Testing frameworks:
Specs, ScalaCheck, ScalaTest, SUnit, …
IDE plugins for:
– Eclipse (supported by EDF)
– IntelliJ (supported by JetBrains)
– Netbeans (supported by Sun)
30
31. Who’s using it?
Open source projects:
lift
wicket
NetLogo
SPDE: Scala branch for Processing
Isabelle: GUI and code extractor
Companies:
Twitter: infrastructure
Sony Pictures: middleware
Nature.com: infrastructure
SAP community: ESME company messaging
Reaktor: many different projects
Mimesis Republic: multiplayer games
EDF: trading, …
31
32. Learning Scala
To get started:
First steps in Scala, by Bill Venners
published in Scalazine at www.artima.com
Scala for Java Refugees by Daniel Spiewack
(great blog series)
To continue:
Programming in Scala, by Odersky, Spoon,
Venners, published by Artima,com
Other books are in the pipeline.
32
35. References
“Programming in Scala” book by Martin Odersky, Lex Spoon and Bill Venners
Presentation by Martin Odersky at FOSDEM 2009
http://www.slideshare.net/Odersky/fosdem-2009-1013261
Online book on Scala by oreilly
http://programming-scala.labs.oreilly.com/
Magazine for Scala Programming Community
http://www.artima.com/scalazine
35